diff -Nru firefox-112.0.1+build1/browser/components/newtab/lib/ASRouter.jsm firefox-112.0.2+build1/browser/components/newtab/lib/ASRouter.jsm --- firefox-112.0.1+build1/browser/components/newtab/lib/ASRouter.jsm 2023-04-15 09:00:39.000000000 +0000 +++ firefox-112.0.2+build1/browser/components/newtab/lib/ASRouter.jsm 2023-04-24 20:21:00.000000000 +0000 @@ -1146,21 +1146,27 @@ async getTargetingParameters(environment, localContext) { // Resolve objects that may contain promises. async function resolve(object) { - const target = {}; + if (typeof object === "object" && object !== null) { + if (Array.isArray(object)) { + return Promise.all(object.map(async item => resolve(await item))); + } - for (const param of Object.keys(object)) { - target[param] = await object[param]; + if (object instanceof Date) { + return object; + } - if ( - typeof target[param] === "object" && - target[param] !== null && - !(target[param] instanceof Date) - ) { - target[param] = await resolve(target[param]); + const target = {}; + const promises = Object.entries(object).map(async ([key, value]) => [ + key, + await resolve(await value), + ]); + for (const [key, value] of await Promise.all(promises)) { + target[key] = value; } + return target; } - return target; + return object; } const targetingParameters = { diff -Nru firefox-112.0.1+build1/browser/components/newtab/lib/ASRouterTargeting.jsm firefox-112.0.2+build1/browser/components/newtab/lib/ASRouterTargeting.jsm --- firefox-112.0.1+build1/browser/components/newtab/lib/ASRouterTargeting.jsm 2023-04-15 09:00:39.000000000 +0000 +++ firefox-112.0.2+build1/browser/components/newtab/lib/ASRouterTargeting.jsm 2023-04-24 20:21:00.000000000 +0000 @@ -864,42 +864,46 @@ * integer. */ async getEnvironmentSnapshot(target = ASRouterTargeting.Environment) { - async function resolveRecursive(object) { - // One promise for each named property. Label promises with property name. - const promises = Object.keys(object).map(async key => { - // Each promise needs to check if we're shutting down when it is evaluated. - if (Services.startup.shuttingDown) { - throw new Error( - "shutting down, so not querying targeting environment" - ); + async function resolve(object) { + if (typeof object === "object" && object !== null) { + if (Array.isArray(object)) { + return Promise.all(object.map(async item => resolve(await item))); } - let value = await object[key]; - - if ( - typeof value === "object" && - value !== null && - !(value instanceof Date) - ) { - value = await resolveRecursive(value); + if (object instanceof Date) { + return object; } - return [key, value]; - }); - - const resolved = {}; - for (const result of await Promise.allSettled(promises)) { - // Ignore properties that are rejected. - if (result.status === "fulfilled") { - const [key, value] = result.value; - resolved[key] = value; + // One promise for each named property. Label promises with property name. + const promises = Object.keys(object).map(async key => { + // Each promise needs to check if we're shutting down when it is evaluated. + if (Services.startup.shuttingDown) { + throw new Error( + "shutting down, so not querying targeting environment" + ); + } + + const value = await resolve(await object[key]); + + return [key, value]; + }); + + const resolved = {}; + for (const result of await Promise.allSettled(promises)) { + // Ignore properties that are rejected. + if (result.status === "fulfilled") { + const [key, value] = result.value; + resolved[key] = value; + } } + + return resolved; } - return resolved; + return object; } - const environment = await resolveRecursive(target); + const environment = await resolve(target); // Should we need to migrate in the future. const snapshot = { environment, version: 1 }; diff -Nru firefox-112.0.1+build1/browser/components/newtab/test/xpcshell/test_ASRouter_getTargetingParameters.js firefox-112.0.2+build1/browser/components/newtab/test/xpcshell/test_ASRouter_getTargetingParameters.js --- firefox-112.0.1+build1/browser/components/newtab/test/xpcshell/test_ASRouter_getTargetingParameters.js 1970-01-01 00:00:00.000000000 +0000 +++ firefox-112.0.2+build1/browser/components/newtab/test/xpcshell/test_ASRouter_getTargetingParameters.js 2023-04-24 20:21:00.000000000 +0000 @@ -0,0 +1,73 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ + */ + +"use strict"; + +const { ASRouter } = ChromeUtils.import( + "resource://activity-stream/lib/ASRouter.jsm" +); + +add_task(async function nested_objects() { + const target = { + get foo() { + return Promise.resolve("foo"); + }, + baz: { + get qux() { + return Promise.resolve("qux"); + }, + get corge() { + return { + get grault() { + return Promise.resolve("grault"); + }, + }; + }, + }, + }; + + const params = await ASRouter.getTargetingParameters(target); + Assert.deepEqual( + params, + { + foo: "foo", + baz: { + qux: "qux", + corge: { + grault: "grault", + }, + }, + }, + "getTargetingParameters should resolve nested promises" + ); +}); + +add_task(async function arrays() { + const target = { + foo: [1, 2, 3], + bar: [Promise.resolve(1), Promise.resolve(2), Promise.resolve(3)], + baz: Promise.resolve([1, 2, 3]), + qux: Promise.resolve([ + Promise.resolve(1), + Promise.resolve(2), + Promise.resolve(3), + ]), + quux: Promise.resolve({ + corge: [Promise.resolve(1), 2, 3], + }), + }; + + const params = await ASRouter.getTargetingParameters(target); + Assert.deepEqual( + params, + { + foo: [1, 2, 3], + bar: [1, 2, 3], + baz: [1, 2, 3], + qux: [1, 2, 3], + quux: { corge: [1, 2, 3] }, + }, + "getEnvironmentSnapshot should resolve arrays correctly" + ); +}); diff -Nru firefox-112.0.1+build1/browser/components/newtab/test/xpcshell/test_ASRouterTargeting_snapshot.js firefox-112.0.2+build1/browser/components/newtab/test/xpcshell/test_ASRouterTargeting_snapshot.js --- firefox-112.0.1+build1/browser/components/newtab/test/xpcshell/test_ASRouterTargeting_snapshot.js 2023-04-15 09:00:39.000000000 +0000 +++ firefox-112.0.2+build1/browser/components/newtab/test/xpcshell/test_ASRouterTargeting_snapshot.js 2023-04-24 20:21:00.000000000 +0000 @@ -52,7 +52,6 @@ }; const snapshot = await ASRouterTargeting.getEnvironmentSnapshot(target); - Assert.deepEqual( snapshot, { @@ -71,6 +70,38 @@ ); }); +add_task(async function arrays() { + const target = { + foo: [1, 2, 3], + bar: [Promise.resolve(1), Promise.resolve(2), Promise.resolve(3)], + baz: Promise.resolve([1, 2, 3]), + qux: Promise.resolve([ + Promise.resolve(1), + Promise.resolve(2), + Promise.resolve(3), + ]), + quux: Promise.resolve({ + corge: [Promise.resolve(1), 2, 3], + }), + }; + + const snapshot = await ASRouterTargeting.getEnvironmentSnapshot(target); + Assert.deepEqual( + snapshot, + { + environment: { + foo: [1, 2, 3], + bar: [1, 2, 3], + baz: [1, 2, 3], + qux: [1, 2, 3], + quux: { corge: [1, 2, 3] }, + }, + version: 1, + }, + "getEnvironmentSnapshot should resolve arrays correctly" + ); +}); + /* * NB: This test is last because it manipulates shutdown phases. * diff -Nru firefox-112.0.1+build1/browser/components/newtab/test/xpcshell/xpcshell.ini firefox-112.0.2+build1/browser/components/newtab/test/xpcshell/xpcshell.ini --- firefox-112.0.1+build1/browser/components/newtab/test/xpcshell/xpcshell.ini 2023-04-15 09:00:39.000000000 +0000 +++ firefox-112.0.2+build1/browser/components/newtab/test/xpcshell/xpcshell.ini 2023-04-24 20:21:00.000000000 +0000 @@ -20,6 +20,7 @@ skip-if = toolkit != "cocoa" # osx specific tests os == "mac" && bits == 64 # See bug 1784121 +[test_ASRouter_getTargetingParameters.js] [test_ASRouterTargeting_snapshot.js] [test_AboutWelcomeTelemetry.js] [test_CFRMessageProvider.js] diff -Nru firefox-112.0.1+build1/browser/config/version_display.txt firefox-112.0.2+build1/browser/config/version_display.txt --- firefox-112.0.1+build1/browser/config/version_display.txt 2023-04-15 09:00:40.000000000 +0000 +++ firefox-112.0.2+build1/browser/config/version_display.txt 2023-04-24 20:21:00.000000000 +0000 @@ -1 +1 @@ -112.0.1 +112.0.2 diff -Nru firefox-112.0.1+build1/browser/config/version.txt firefox-112.0.2+build1/browser/config/version.txt --- firefox-112.0.1+build1/browser/config/version.txt 2023-04-15 09:00:39.000000000 +0000 +++ firefox-112.0.2+build1/browser/config/version.txt 2023-04-24 20:21:00.000000000 +0000 @@ -1 +1 @@ -112.0.1 +112.0.2 diff -Nru firefox-112.0.1+build1/BUILDID firefox-112.0.2+build1/BUILDID --- firefox-112.0.1+build1/BUILDID 2023-04-15 09:10:07.000000000 +0000 +++ firefox-112.0.2+build1/BUILDID 2023-04-24 20:28:30.000000000 +0000 @@ -1 +1 @@ -20230414125621 \ No newline at end of file +20230424110519 \ No newline at end of file diff -Nru firefox-112.0.1+build1/config/milestone.txt firefox-112.0.2+build1/config/milestone.txt --- firefox-112.0.1+build1/config/milestone.txt 2023-04-15 09:00:40.000000000 +0000 +++ firefox-112.0.2+build1/config/milestone.txt 2023-04-24 20:21:01.000000000 +0000 @@ -10,4 +10,4 @@ # hardcoded milestones in the tree from these two files. #-------------------------------------------------------- -112.0.1 +112.0.2 diff -Nru firefox-112.0.1+build1/debian/changelog firefox-112.0.2+build1/debian/changelog --- firefox-112.0.1+build1/debian/changelog 2023-04-17 01:50:21.000000000 +0000 +++ firefox-112.0.2+build1/debian/changelog 2023-04-25 14:49:17.000000000 +0000 @@ -1,3 +1,9 @@ +firefox (112.0.2+build1-0ubuntu0.20.04.1) focal; urgency=medium + + * New upstream release (112.0.2+build1) + + -- Amin Bandali Tue, 25 Apr 2023 10:49:17 -0400 + firefox (112.0.1+build1-0ubuntu0.20.04.1) focal; urgency=medium * New upstream release (112.0.1+build1) diff -Nru firefox-112.0.1+build1/docshell/base/CanonicalBrowsingContext.cpp firefox-112.0.2+build1/docshell/base/CanonicalBrowsingContext.cpp --- firefox-112.0.1+build1/docshell/base/CanonicalBrowsingContext.cpp 2023-04-15 09:00:41.000000000 +0000 +++ firefox-112.0.2+build1/docshell/base/CanonicalBrowsingContext.cpp 2023-04-24 20:21:02.000000000 +0000 @@ -26,7 +26,6 @@ #include "mozilla/dom/ContentPlaybackController.h" #include "mozilla/dom/SessionStorageManager.h" #include "mozilla/ipc/ProtocolUtils.h" -#include "mozilla/layers/CompositorBridgeChild.h" #ifdef NS_PRINTING # include "mozilla/layout/RemotePrintJobParent.h" #endif @@ -1332,27 +1331,26 @@ MOZ_RELEASE_ASSERT(IsChrome()); MOZ_RELEASE_ASSERT(IsTop()); - const bool wasAlreadyActive = IsActive(); - - nsCOMPtr widget; - if (auto* docShell = GetDocShell()) { + const bool isActive = [&] { + if (ForceAppWindowActive()) { + return true; + } + auto* docShell = GetDocShell(); + if (NS_WARN_IF(!docShell)) { + return false; + } + nsCOMPtr widget; nsDocShell::Cast(docShell)->GetMainWidget(getter_AddRefs(widget)); - } - - Unused << NS_WARN_IF(!widget); - const bool isNowActive = - ForceAppWindowActive() || (widget && !widget->IsFullyOccluded() && - widget->SizeMode() != nsSizeMode_Minimized); - - if (isNowActive == wasAlreadyActive) { - return; - } - - SetIsActive(isNowActive, IgnoreErrors()); - if (widget) { - // Pause if we are not active, resume if we are active. - widget->PauseOrResumeCompositor(!isNowActive); - } + if (NS_WARN_IF(!widget)) { + return false; + } + if (widget->IsFullyOccluded() || + widget->SizeMode() == nsSizeMode_Minimized) { + return false; + } + return true; + }(); + SetIsActive(isActive, IgnoreErrors()); } void CanonicalBrowsingContext::AdjustPrivateBrowsingCount( diff -Nru firefox-112.0.1+build1/gfx/layers/wr/WebRenderCommandBuilder.cpp firefox-112.0.2+build1/gfx/layers/wr/WebRenderCommandBuilder.cpp --- firefox-112.0.1+build1/gfx/layers/wr/WebRenderCommandBuilder.cpp 2023-04-15 09:00:45.000000000 +0000 +++ firefox-112.0.2+build1/gfx/layers/wr/WebRenderCommandBuilder.cpp 2023-04-24 20:21:06.000000000 +0000 @@ -1193,15 +1193,23 @@ // concern. const int32_t largeish = 512; - float width = bounds.width * aSc.GetInheritedScale().xScale; - float height = bounds.height * aSc.GetInheritedScale().yScale; + float width = + static_cast(bounds.width) * aSc.GetInheritedScale().xScale; + float height = + static_cast(bounds.height) * aSc.GetInheritedScale().yScale; + float appUnitsPerDevPixel = static_cast( + aItem->Frame()->PresContext()->AppUnitsPerDevPixel()); - if (aHasActivePrecedingSibling || width > largeish || - height > largeish) { - return ItemActivity::Should; - } + // Webrender doesn't handle primitives smaller than a pixel well, so + // avoid making them active. + if (width >= appUnitsPerDevPixel && height >= appUnitsPerDevPixel) { + if (aHasActivePrecedingSibling || width > largeish || + height > largeish) { + return ItemActivity::Should; + } - return ItemActivity::Could; + return ItemActivity::Could; + } } return ItemActivity::No; diff -Nru firefox-112.0.1+build1/gfx/thebes/gfxFont.cpp firefox-112.0.2+build1/gfx/thebes/gfxFont.cpp --- firefox-112.0.1+build1/gfx/thebes/gfxFont.cpp 2023-04-15 09:00:45.000000000 +0000 +++ firefox-112.0.2+build1/gfx/thebes/gfxFont.cpp 2023-04-24 20:21:06.000000000 +0000 @@ -2470,7 +2470,15 @@ // Figure out the maximum extents for the font, accounting for synthetic // oblique and bold. - fontParams.fontExtents = GetFontEntry()->GetFontExtents(mFUnitsConvFactor); + if (mFUnitsConvFactor > 0.0) { + fontParams.fontExtents = GetFontEntry()->GetFontExtents(mFUnitsConvFactor); + } else { + // Was it not an sfnt? Maybe on Linux... use arbitrary huge extents, so we + // don't inadvertently clip stuff. A bit less efficient than true extents, + // but this should be extremely rare. + auto size = GetAdjustedSize(); + fontParams.fontExtents = Rect(-2 * size, -2 * size, 5 * size, 5 * size); + } if (fontParams.obliqueSkew != 0.0f) { gfx::Point p(fontParams.fontExtents.x, fontParams.fontExtents.y); gfx::Matrix skew(1, 0, fontParams.obliqueSkew, 1, 0, 0); diff -Nru firefox-112.0.1+build1/gfx/thebes/gfxFontEntry.cpp firefox-112.0.2+build1/gfx/thebes/gfxFontEntry.cpp --- firefox-112.0.1+build1/gfx/thebes/gfxFontEntry.cpp 2023-04-15 09:00:46.000000000 +0000 +++ firefox-112.0.2+build1/gfx/thebes/gfxFontEntry.cpp 2023-04-24 20:21:06.000000000 +0000 @@ -284,11 +284,14 @@ reinterpret_cast(hb_blob_get_data(headTable, &len)); if (len >= sizeof(HeadTable)) { mUnitsPerEm = head->unitsPerEm; + if (int16_t(head->xMax) > int16_t(head->xMin) && + int16_t(head->yMax) > int16_t(head->yMin)) { + mXMin = head->xMin; + mYMin = head->yMin; + mXMax = head->xMax; + mYMax = head->yMax; + } } - mXMin = head->xMin; - mYMin = head->yMin; - mXMax = head->xMax; - mYMax = head->yMax; } // if we didn't find a usable 'head' table, or if the value was diff -Nru firefox-112.0.1+build1/layout/reftests/bugs/1780191-1-ref.svg firefox-112.0.2+build1/layout/reftests/bugs/1780191-1-ref.svg --- firefox-112.0.1+build1/layout/reftests/bugs/1780191-1-ref.svg 1970-01-01 00:00:00.000000000 +0000 +++ firefox-112.0.2+build1/layout/reftests/bugs/1780191-1-ref.svg 2023-04-24 20:21:16.000000000 +0000 @@ -0,0 +1,36 @@ + + + + + + + + diff -Nru firefox-112.0.1+build1/layout/reftests/bugs/1780191-1.svg firefox-112.0.2+build1/layout/reftests/bugs/1780191-1.svg --- firefox-112.0.1+build1/layout/reftests/bugs/1780191-1.svg 1970-01-01 00:00:00.000000000 +0000 +++ firefox-112.0.2+build1/layout/reftests/bugs/1780191-1.svg 2023-04-24 20:21:16.000000000 +0000 @@ -0,0 +1,33 @@ + + + + + + + + diff -Nru firefox-112.0.1+build1/layout/reftests/bugs/reftest.list firefox-112.0.2+build1/layout/reftests/bugs/reftest.list --- firefox-112.0.1+build1/layout/reftests/bugs/reftest.list 2023-04-15 09:00:56.000000000 +0000 +++ firefox-112.0.2+build1/layout/reftests/bugs/reftest.list 2023-04-24 20:21:16.000000000 +0000 @@ -2123,6 +2123,8 @@ skip-if(Android) test-pref(ui.textScaleFactor,50) test-pref(browser.display.os-zoom-behavior,1) != 1773633.html 1773633.html pref(widget.disable-dark-scrollbar,false) == 1777135.html 1777135-ref.html test-pref(widget.non-native-theme.use-theme-accent,false) == 1778834.html 1778834-ref.html +# do not adjust the fuzz without looking, this test was written as fuzzy on purpose (because that was the only way to make a test work) +fuzzy(16-47,26939-44425) == 1780191-1.svg 1780191-1-ref.svg pref(layout.css.prefers-color-scheme.content-override,0) == 1787127.html 1787127-ref.html pref(layout.css.prefers-color-scheme.content-override,1) == 1787127.html 1787127-ref.html pref(layout.css.prefers-color-scheme.content-override,2) == 1787127.html 1787127-ref.html diff -Nru firefox-112.0.1+build1/modules/libpref/init/StaticPrefList.yaml firefox-112.0.2+build1/modules/libpref/init/StaticPrefList.yaml --- firefox-112.0.1+build1/modules/libpref/init/StaticPrefList.yaml 2023-04-15 09:00:58.000000000 +0000 +++ firefox-112.0.2+build1/modules/libpref/init/StaticPrefList.yaml 2023-04-24 20:21:18.000000000 +0000 @@ -3471,7 +3471,12 @@ # Use a Background Task to delete files at shutdown. - name: dom.quotaManager.backgroundTask.enabled type: bool +#ifdef XP_MACOSX +# Needs to figure out how to prevent bug 1827486. + value: false +#else value: true +#endif mirror: never #endif @@ -15023,6 +15028,12 @@ type: bool value: true mirror: always + +# Whether to pause the compositor when a native window is minimized. +- name: widget.pause-compositor-when-minimized + type: bool + value: true + mirror: always #ifdef MOZ_WAYLAND # Whether to override the DMABuf blocklist. diff -Nru firefox-112.0.1+build1/services/settings/dumps/blocklists/addons-bloomfilters.json firefox-112.0.2+build1/services/settings/dumps/blocklists/addons-bloomfilters.json --- firefox-112.0.1+build1/services/settings/dumps/blocklists/addons-bloomfilters.json 2023-04-15 09:01:00.000000000 +0000 +++ firefox-112.0.2+build1/services/settings/dumps/blocklists/addons-bloomfilters.json 2023-04-24 20:21:20.000000000 +0000 @@ -3,6 +3,76 @@ { "stash": { "blocked": [ + "{2874e75a-a67b-4311-82ac-c64ecf9fb642}:0.2", + "{2874e75a-a67b-4311-82ac-c64ecf9fb642}:0.1", + "{133f2efd-2a29-4be3-a8a8-6b9bb3288b66}:0.4", + "{133f2efd-2a29-4be3-a8a8-6b9bb3288b66}:0.2", + "{133f2efd-2a29-4be3-a8a8-6b9bb3288b66}:0.1", + "{0bf4c795-306c-40f6-b3e1-47d19cf08d08}:0.1", + "{0bf4c795-306c-40f6-b3e1-47d19cf08d08}:0.5", + "{2874e75a-a67b-4311-82ac-c64ecf9fb642}:0.4", + "{0bf4c795-306c-40f6-b3e1-47d19cf08d08}:0.3", + "{0010d469-3c3d-4395-9220-40b437a60629}:0.1", + "{133f2efd-2a29-4be3-a8a8-6b9bb3288b66}:0.3", + "{2874e75a-a67b-4311-82ac-c64ecf9fb642}:0.3" + ], + "unblocked": [] + }, + "schema": 1681907860301, + "key_format": "{guid}:{version}", + "stash_time": 1682080508000, + "id": "19acd314-0ba4-43dc-a527-aced39deb450", + "last_modified": 1682080650383 + }, + { + "stash": { + "blocked": [ + "{fa61120a-00c9-45d7-93a1-4666e9db617a}:2.0.2", + "{fa61120a-00c9-45d7-93a1-4666e9db617a}:2.0.1", + "{9337da2b-7841-4e3c-82b7-ae481cecdb52}:1.0.0", + "{a231860e-11a7-4266-b199-bb3ad15cfee1}:2.5.22", + "{9337da2b-7841-4e3c-82b7-ae481cecdb52}:1.0.1", + "ramirezvalencia@gmail.com:2.0" + ], + "unblocked": [] + }, + "schema": 1681891919923, + "key_format": "{guid}:{version}", + "stash_time": 1681907708522, + "id": "635d8b30-4495-4c1c-b0f4-f835b6648776", + "last_modified": 1681907860234 + }, + { + "stash": { + "blocked": [ + "{37729083-2e1f-440c-b275-aa23f700da00}:1.0.1", + "{58b16089-2ea7-4c8b-a0d7-0b20b534c6b5}:9.5.1", + "{2bf47909-4d19-4d04-a4e2-6b905cad5968}:7.0.33", + "{e4674c99-c3ca-4eed-aabf-4f9a76afb0e2}:2.4.0", + "{7cf4bacc-4e3a-434e-b55c-e0e80d20016c}:1.1", + "{aba39447-97a0-4347-89be-9947716300da}:1.0.0", + "{003f842a-4443-47a6-a616-7895c72f77f3}:1.0", + "{413feb07-ae9d-431a-87f4-23373f9fec30}:2.1", + "{44fe4236-798b-4eeb-b8bf-5d2ba7410a12}:1.0", + "{aba39447-97a0-4347-89be-9947716300da}:1.0.5", + "{aba39447-97a0-4347-89be-9947716300da}:1.0.2", + "{35c339aa-522d-4b0e-9796-ad21e4189b06}:1.0.4", + "{35c339aa-522d-4b0e-9796-ad21e4189b06}:1.0.3", + "{261d09c3-e508-47f0-a7b2-9a3a18ed1375}:1.5", + "{5d0d8050-0542-48a0-87ce-e3f90f000a4a}:1.6.0", + "{aba39447-97a0-4347-89be-9947716300da}:1.0.4" + ], + "unblocked": [] + }, + "schema": 1680784649284, + "key_format": "{guid}:{version}", + "stash_time": 1681389308386, + "id": "d47238d0-e283-4e4a-b8e8-2a1029b27ade", + "last_modified": 1681389452870 + }, + { + "stash": { + "blocked": [ "{0dc0c627-1368-446f-96e6-4ce8b5dc54da}:6.9", "ydkivntjdknvladlvnalrfvn@zsltzt:0.5", "{fac9de72-6e06-4b01-9bc1-2190875a78e8}:1.0" @@ -1345,5 +1415,5 @@ "last_modified": 1673354326131 } ], - "timestamp": 1680784649216 + "timestamp": 1682080650383 } diff -Nru firefox-112.0.1+build1/services/settings/dumps/main/devtools-compatibility-browsers.json firefox-112.0.2+build1/services/settings/dumps/main/devtools-compatibility-browsers.json --- firefox-112.0.1+build1/services/settings/dumps/main/devtools-compatibility-browsers.json 2023-04-15 09:00:59.000000000 +0000 +++ firefox-112.0.2+build1/services/settings/dumps/main/devtools-compatibility-browsers.json 2023-04-24 20:21:21.000000000 +0000 @@ -1,6 +1,96 @@ { "data": [ { + "name": "Node.js", + "schema": 1682169844757, + "status": "current", + "version": "20.0.0", + "browserid": "nodejs", + "id": "59f25720-b682-46f5-8d95-a1f991c25b4c", + "last_modified": 1682319518056 + }, + { + "name": "Edge", + "schema": 1681910646625, + "status": "nightly", + "version": "114", + "browserid": "edge", + "id": "4b52fc2d-7fef-432b-befe-ffe9725fb5ef", + "last_modified": 1681914299806 + }, + { + "name": "Firefox for Android", + "schema": 1681910647302, + "status": "nightly", + "version": "114", + "browserid": "firefox_android", + "id": "aaf25914-81ab-472e-b17f-fe2b9dee7383", + "last_modified": 1681914299800 + }, + { + "name": "Firefox", + "schema": 1681910646961, + "status": "nightly", + "version": "114", + "browserid": "firefox", + "id": "bf12a70d-f1da-46a1-abe1-b873feb2895a", + "last_modified": 1681914299796 + }, + { + "name": "Firefox for Android", + "schema": 1681910647136, + "status": "current", + "version": "112", + "browserid": "firefox_android", + "id": "e69efd93-530d-4466-8506-b76cd88a0fd7", + "last_modified": 1681914299792 + }, + { + "name": "Firefox", + "schema": 1681910646793, + "status": "current", + "version": "112", + "browserid": "firefox", + "id": "69ca36df-86aa-43f1-a35c-89940b11bebe", + "last_modified": 1681914299787 + }, + { + "name": "Edge", + "schema": 1681910646444, + "status": "current", + "version": "112", + "browserid": "edge", + "id": "d72d44fe-f840-4042-9689-be25f8f3fc48", + "last_modified": 1681914299775 + }, + { + "name": "Firefox", + "schema": 1681910646878, + "status": "beta", + "version": "113", + "browserid": "firefox", + "id": "36d33cd8-6e3a-4ab8-ad9c-ece003bcb1d0", + "last_modified": 1681914299767 + }, + { + "name": "Firefox for Android", + "schema": 1681910647221, + "status": "beta", + "version": "113", + "browserid": "firefox_android", + "id": "0b7b7a9b-c2e0-4daa-be5a-1f8e3b333e14", + "last_modified": 1681914299763 + }, + { + "name": "Edge", + "schema": 1681910646533, + "status": "beta", + "version": "113", + "browserid": "edge", + "id": "a191ad56-e312-4b3b-93ce-12d33b1e7fdd", + "last_modified": 1681914299758 + }, + { "name": "Chrome", "schema": 1680960245728, "status": "nightly", @@ -100,15 +190,6 @@ "last_modified": 1681198174439 }, { - "name": "Edge", - "schema": 1679145859020, - "status": "nightly", - "version": "113", - "browserid": "edge", - "id": "a191ad56-e312-4b3b-93ce-12d33b1e7fdd", - "last_modified": 1679292138407 - }, - { "name": "Opera Android", "schema": 1679145859850, "status": "current", @@ -118,78 +199,6 @@ "last_modified": 1679292138402 }, { - "name": "Firefox for Android", - "schema": 1679145859685, - "status": "nightly", - "version": "113", - "browserid": "firefox_android", - "id": "0b7b7a9b-c2e0-4daa-be5a-1f8e3b333e14", - "last_modified": 1679292138397 - }, - { - "name": "Firefox", - "schema": 1679145859353, - "status": "nightly", - "version": "113", - "browserid": "firefox", - "id": "36d33cd8-6e3a-4ab8-ad9c-ece003bcb1d0", - "last_modified": 1679292138393 - }, - { - "name": "Edge", - "schema": 1679145858840, - "status": "current", - "version": "111", - "browserid": "edge", - "id": "6bd814ae-a7bb-4441-827e-4401964ed347", - "last_modified": 1679292138385 - }, - { - "name": "Edge", - "schema": 1679145858929, - "status": "beta", - "version": "112", - "browserid": "edge", - "id": "d72d44fe-f840-4042-9689-be25f8f3fc48", - "last_modified": 1679292138377 - }, - { - "name": "Firefox for Android", - "schema": 1679145859518, - "status": "current", - "version": "111", - "browserid": "firefox_android", - "id": "c84628f5-fd4c-433f-932b-c719ac7db848", - "last_modified": 1679292138373 - }, - { - "name": "Firefox", - "schema": 1679145859192, - "status": "current", - "version": "111", - "browserid": "firefox", - "id": "81afa5f4-c81a-48f4-99e1-2df1d3122a8a", - "last_modified": 1679292138369 - }, - { - "name": "Firefox", - "schema": 1679145859273, - "status": "beta", - "version": "112", - "browserid": "firefox", - "id": "69ca36df-86aa-43f1-a35c-89940b11bebe", - "last_modified": 1679292138358 - }, - { - "name": "Firefox for Android", - "schema": 1679145859602, - "status": "beta", - "version": "112", - "browserid": "firefox_android", - "id": "e69efd93-530d-4466-8506-b76cd88a0fd7", - "last_modified": 1679292138354 - }, - { "name": "Opera", "schema": 1678454666556, "status": "nightly", @@ -236,15 +245,6 @@ }, { "name": "Node.js", - "schema": 1666790648328, - "status": "current", - "version": "19.0.0", - "browserid": "nodejs", - "id": "0b1807f0-a262-4526-91ab-d3a0b8dcf8a3", - "last_modified": 1666884917916 - }, - { - "name": "Node.js", "schema": 1666790648265, "status": "esr", "version": "18.0.0", @@ -263,15 +263,6 @@ }, { "name": "Firefox", - "schema": 1662643476308, - "status": "planned", - "version": "114", - "browserid": "firefox", - "id": "bf12a70d-f1da-46a1-abe1-b873feb2895a", - "last_modified": 1662648201685 - }, - { - "name": "Firefox", "schema": 1662643476348, "status": "planned", "version": "115", @@ -335,15 +326,6 @@ }, { "name": "Firefox for Android", - "schema": 1662643476982, - "status": "planned", - "version": "114", - "browserid": "firefox_android", - "id": "aaf25914-81ab-472e-b17f-fe2b9dee7383", - "last_modified": 1662648201651 - }, - { - "name": "Firefox for Android", "schema": 1662643477021, "status": "planned", "version": "115", @@ -433,5 +415,5 @@ "last_modified": 1645448267500 } ], - "timestamp": 1681198174502 + "timestamp": 1682319518056 } diff -Nru firefox-112.0.1+build1/services/settings/dumps/security-state/intermediates.json firefox-112.0.2+build1/services/settings/dumps/security-state/intermediates.json --- firefox-112.0.1+build1/services/settings/dumps/security-state/intermediates.json 2023-04-15 09:00:59.000000000 +0000 +++ firefox-112.0.2+build1/services/settings/dumps/security-state/intermediates.json 2023-04-24 20:21:20.000000000 +0000 @@ -1,6 +1,276 @@ { "data": [ { + "schema": 1681980513975, + "derHash": "L+Ta43D88rWPDHXyq8SUFLiB9VTs8hSF6uc/6qF7Hc0=", + "subject": "CN=GlobalSign Atlas R3 DV ACME CA 2023 Q3,O=GlobalSign nv-sa,C=BE", + "subjectDN": "MFkxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMS8wLQYDVQQDEyZHbG9iYWxTaWduIEF0bGFzIFIzIERWIEFDTUUgQ0EgMjAyMyBRMw==", + "whitelist": false, + "attachment": { + "hash": "e1b5719c859cdab8a474a0112ee858eb1e61037646e6cb396abb27ee8fba8715", + "size": 1642, + "filename": "Ve3lyti87rHZ-l3V1KUMRI_2aHITKUVn31T6H9mp9rE=.pem", + "location": "security-state-staging/intermediates/d40871a2-6299-47c5-aa84-8d02939633de.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "Ve3lyti87rHZ+l3V1KUMRI/2aHITKUVn31T6H9mp9rE=", + "crlite_enrolled": false, + "id": "5b0aeab7-d877-4ec2-a63c-721cfa168c75", + "last_modified": 1681981023506 + }, + { + "schema": 1681980512041, + "derHash": "38buQuansznfF45WbvtUgqoaRgxYajLWfJqwU68r5lc=", + "subject": "CN=Alibaba Cloud GCC R3 AlphaSSL CA 2023,O=Alibaba Cloud Computing Ltd.,C=CN", + "subjectDN": "MGQxCzAJBgNVBAYTAkNOMSUwIwYDVQQKExxBbGliYWJhIENsb3VkIENvbXB1dGluZyBMdGQuMS4wLAYDVQQDEyVBbGliYWJhIENsb3VkIEdDQyBSMyBBbHBoYVNTTCBDQSAyMDIz", + "whitelist": false, + "attachment": { + "hash": "6268a2b6f41dd3a3d5badf9191690b02ecca64f3bc8a20726197820735f4b6d0", + "size": 1658, + "filename": "K1ELBBmlYY3TT6smnAcMLUz2cDFhaHu8VW8YwAf532U=.pem", + "location": "security-state-staging/intermediates/18b45473-4898-4bcf-b9b5-9ec4e349c5ef.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "K1ELBBmlYY3TT6smnAcMLUz2cDFhaHu8VW8YwAf532U=", + "crlite_enrolled": false, + "id": "a7b4dc1a-14cf-4111-9682-02ef5f789021", + "last_modified": 1681981023496 + }, + { + "schema": 1681980512986, + "derHash": "czYGgPDA3ixULrPasrMHZNVFFgZQGVPHbVGi9uvRwps=", + "subject": "CN=Alibaba Cloud GCC R3 OV TLS CA 2023,O=Alibaba Cloud Computing Ltd.,C=CN", + "subjectDN": "MGIxCzAJBgNVBAYTAkNOMSUwIwYDVQQKExxBbGliYWJhIENsb3VkIENvbXB1dGluZyBMdGQuMSwwKgYDVQQDEyNBbGliYWJhIENsb3VkIEdDQyBSMyBPViBUTFMgQ0EgMjAyMw==", + "whitelist": false, + "attachment": { + "hash": "59f332a0297aef3220f57b479bbffe2b9109f4c4df0a99d1e1de017626827f7b", + "size": 1654, + "filename": "VRjaLQ7B-wtlRMwsaC3B7zF3mTX_1OVwGIVmlTjOSig=.pem", + "location": "security-state-staging/intermediates/4a4883c9-4cd1-451d-b6dc-30d24a83864e.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "VRjaLQ7B+wtlRMwsaC3B7zF3mTX/1OVwGIVmlTjOSig=", + "crlite_enrolled": false, + "id": "c60e5794-6ef5-4bb5-a662-8131355d39ca", + "last_modified": 1681981023486 + }, + { + "schema": 1681980509208, + "derHash": "yqs5Hkgu4Ta+dOP62eOhrFievgYLlVCFlIdik++H584=", + "subject": "CN=GlobalSign Atlas R3 DV TLS CA 2023 Q3,O=GlobalSign nv-sa,C=BE", + "subjectDN": "MFgxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMS4wLAYDVQQDEyVHbG9iYWxTaWduIEF0bGFzIFIzIERWIFRMUyBDQSAyMDIzIFEz", + "whitelist": false, + "attachment": { + "hash": "f1617b28b34e6ffacd50778141d8dfe9016f4398792e8c14a2df61abd2aa455e", + "size": 1642, + "filename": "q-_wkbAp7eqw63n_j5nXubRRmg1kkl4uJ2mY3n3FHa0=.pem", + "location": "security-state-staging/intermediates/4a06ca8a-5a25-4b2e-8a35-abc7a773b0e2.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "q+/wkbAp7eqw63n/j5nXubRRmg1kkl4uJ2mY3n3FHa0=", + "crlite_enrolled": false, + "id": "b2d3dd3e-e7f2-4503-a50f-65afa820d775", + "last_modified": 1681981023476 + }, + { + "schema": 1681980511082, + "derHash": "IzXV7fpQfrVrfawA9DTVW5Vlpvlo5M06wBusIxehCxY=", + "subject": "CN=GlobalSign Atlas R46 EV TLS CA 2023 Q3,O=GlobalSign nv-sa,C=BE", + "subjectDN": "MFkxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMS8wLQYDVQQDEyZHbG9iYWxTaWduIEF0bGFzIFI0NiBFViBUTFMgQ0EgMjAyMyBRMw==", + "whitelist": false, + "attachment": { + "hash": "d8d9ab70c9ebb5e6864ae0c4e423fef0751ca86b7d90edbc1517ea338cfde25b", + "size": 2345, + "filename": "yxLcFJnkRXGR-KVLCZl-CHkPbRF5y-RCN9MdEbtIONk=.pem", + "location": "security-state-staging/intermediates/02e19a30-4448-4bc7-bbdf-74e49557038f.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "yxLcFJnkRXGR+KVLCZl+CHkPbRF5y+RCN9MdEbtIONk=", + "crlite_enrolled": false, + "id": "0c01414e-7d79-4758-a084-a8323b20434e", + "last_modified": 1681981023466 + }, + { + "schema": 1681980510125, + "derHash": "1FRIf747LLwQwwI+c67ifz42QHJs57sDu0JEtQyy9MQ=", + "subject": "CN=GlobalSign Atlas R6 EV TLS CA 2023 Q3,O=GlobalSign nv-sa,C=BE", + "subjectDN": "MFgxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMS4wLAYDVQQDEyVHbG9iYWxTaWduIEF0bGFzIFI2IEVWIFRMUyBDQSAyMDIzIFEz", + "whitelist": false, + "attachment": { + "hash": "d26cd5341cb8682557e082a1aee534cfc0b1ffb570c17d6560bc291d4c2f75fd", + "size": 2349, + "filename": "BCMEXqQktHWumt_p7oT22QTg5c6wtgNsno7RvlRIxNY=.pem", + "location": "security-state-staging/intermediates/55dc041c-857c-40a5-92a6-3e7da38fc6d3.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "BCMEXqQktHWumt/p7oT22QTg5c6wtgNsno7RvlRIxNY=", + "crlite_enrolled": false, + "id": "5e500c6c-44ae-4ada-b242-66f2f0d18d11", + "last_modified": 1681981023455 + }, + { + "schema": 1681980507254, + "derHash": "QFsei2y93xYFyC0wr1LwLYk4hzZ07KGKkqy6ziJhC94=", + "subject": "CN=GlobalSign Atlas ECCR5 OV TLS CA 2023 Q3,O=GlobalSign nv-sa,C=BE", + "subjectDN": "MFsxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTEwLwYDVQQDEyhHbG9iYWxTaWduIEF0bGFzIEVDQ1I1IE9WIFRMUyBDQSAyMDIzIFEz", + "whitelist": false, + "attachment": { + "hash": "0bff04fa4bd2a344c006a31b0136d7450808df8ad79f3e68074b2ee5f931b70a", + "size": 1195, + "filename": "kQVDsIkppqSaZy0YFOhBH7ArXz-RDRERKavzw_weJP4=.pem", + "location": "security-state-staging/intermediates/623a3e24-33d7-4b0f-bd18-ac77e2645b6e.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "kQVDsIkppqSaZy0YFOhBH7ArXz+RDRERKavzw/weJP4=", + "crlite_enrolled": false, + "id": "12c0c496-fc90-4b33-a6e0-f14dc91a9df8", + "last_modified": 1681981023445 + }, + { + "schema": 1681980505327, + "derHash": "l6/nw1N4w4aDdnahNNeh1HK3LvCR8iT5mGyCVqbXUpY=", + "subject": "CN=GlobalSign Atlas ECCR5 DV ACME CA 2023 Q3,O=GlobalSign nv-sa,C=BE", + "subjectDN": "MFwxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTIwMAYDVQQDEylHbG9iYWxTaWduIEF0bGFzIEVDQ1I1IERWIEFDTUUgQ0EgMjAyMyBRMw==", + "whitelist": false, + "attachment": { + "hash": "56b850e2b77d579b5a92f3a525476f17948c9b4d744fc1a3e9cab4bee8bebf14", + "size": 1195, + "filename": "uE-VijBf9sAK9f9J-ixUzyhG97LG1jXUB7_xspbX0HI=.pem", + "location": "security-state-staging/intermediates/febcd89f-543a-4705-ac69-2287d6c6550b.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "uE+VijBf9sAK9f9J+ixUzyhG97LG1jXUB7/xspbX0HI=", + "crlite_enrolled": false, + "id": "ce90f97c-60fc-43e0-b5c4-891615c697c5", + "last_modified": 1681981023435 + }, + { + "schema": 1681980506274, + "derHash": "9wnIIFGNbDhZXO+DVdvgLSQWO5+ENlK6LDEjD8WAYiA=", + "subject": "CN=GlobalSign Atlas R3 AlphaSSL CA 2023 Q3,O=GlobalSign nv-sa,C=BE", + "subjectDN": "MFoxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTAwLgYDVQQDEydHbG9iYWxTaWduIEF0bGFzIFIzIEFscGhhU1NMIENBIDIwMjMgUTM=", + "whitelist": false, + "attachment": { + "hash": "b08557e3048bb87c7b58bd83a423e39097c8b195de4dfdb4bfbfb886c9301335", + "size": 1642, + "filename": "b6DeMireWjqJis8u4iAqzA9R_m3RgX62hL8TasbQcYM=.pem", + "location": "security-state-staging/intermediates/057b2fee-ca76-47e1-a195-90bc4da49711.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "b6DeMireWjqJis8u4iAqzA9R/m3RgX62hL8TasbQcYM=", + "crlite_enrolled": false, + "id": "51299d7b-7f89-421a-b3ec-6d813287372a", + "last_modified": 1681981023425 + }, + { + "schema": 1681980504411, + "derHash": "ZVejdAMJGYdIPWeJ7ZzkVJMSZ0uR9XVyOXqnaAbwCdU=", + "subject": "CN=GlobalSign Atlas R3 OV ACME CA 2023 Q3,O=GlobalSign nv-sa,C=BE", + "subjectDN": "MFkxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMS8wLQYDVQQDEyZHbG9iYWxTaWduIEF0bGFzIFIzIE9WIEFDTUUgQ0EgMjAyMyBRMw==", + "whitelist": false, + "attachment": { + "hash": "5d7bfaf1e838e54448e2034e8270a8269f2685b93a2be1c03968ada01f72f734", + "size": 1642, + "filename": "ryuehCQIDQXNuTCk0mWODtnkXmQxZnG1DyfANmzzSjo=.pem", + "location": "security-state-staging/intermediates/a9a6eb82-b8a3-49ee-914f-5effa8811b60.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "ryuehCQIDQXNuTCk0mWODtnkXmQxZnG1DyfANmzzSjo=", + "crlite_enrolled": false, + "id": "8a8af3c7-16df-4a83-81ff-1092d0a49d56", + "last_modified": 1681981023415 + }, + { + "schema": 1681980503457, + "derHash": "/CgRE33IbHmH1WZeIqxKJ0HOVLYj3FjoDOkO+GJvZ/w=", + "subject": "CN=GlobalSign Atlas ECCR5 DV TLS CA 2023 Q3,O=GlobalSign nv-sa,C=BE", + "subjectDN": "MFsxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTEwLwYDVQQDEyhHbG9iYWxTaWduIEF0bGFzIEVDQ1I1IERWIFRMUyBDQSAyMDIzIFEz", + "whitelist": false, + "attachment": { + "hash": "0dbb962a4c2156af0cb5499b20a3aaeaef29b907f98a0599168dd63a0d88d8ad", + "size": 1195, + "filename": "Drs6CcFsFR__02Bl8sHuhlU7B5y6p74KhWkk96Y0fRA=.pem", + "location": "security-state-staging/intermediates/6139e7b6-151c-418e-a69f-43d72a66c327.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "Drs6CcFsFR//02Bl8sHuhlU7B5y6p74KhWkk96Y0fRA=", + "crlite_enrolled": false, + "id": "af85d79b-b801-4b35-8880-953747188640", + "last_modified": 1681981023405 + }, + { + "schema": 1681980502509, + "derHash": "zaz0EuKSHDQrGUNnZDPmBIjkvTnxk6nCLBKqEbZ5ZZc=", + "subject": "CN=GlobalSign Atlas ECCR5 OV ACME CA 2023 Q3,O=GlobalSign nv-sa,C=BE", + "subjectDN": "MFwxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTIwMAYDVQQDEylHbG9iYWxTaWduIEF0bGFzIEVDQ1I1IE9WIEFDTUUgQ0EgMjAyMyBRMw==", + "whitelist": false, + "attachment": { + "hash": "ba5d7250d955bf523dc908684ce179257f5cb8653d57e3d8e8c020cc04d401aa", + "size": 1199, + "filename": "yssnEIwbPEwUdOQJ6xO4F5nN25BJ-pOk6UOdQj-4jtQ=.pem", + "location": "security-state-staging/intermediates/997262b5-6dfe-4930-b7b0-0dc8ec45ce2e.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "yssnEIwbPEwUdOQJ6xO4F5nN25BJ+pOk6UOdQj+4jtQ=", + "crlite_enrolled": false, + "id": "895d974f-5ed4-4353-8d8c-e898887caf0b", + "last_modified": 1681981023395 + }, + { + "schema": 1681980501532, + "derHash": "OMu4cjHwYqgtftLvc/1OS4Q1LqfdfxVobeOpQUt64Ck=", + "subject": "CN=Alibaba Cloud GCC R3 DV TLS CA 2023,O=Alibaba Cloud Computing Ltd.,C=CN", + "subjectDN": "MGIxCzAJBgNVBAYTAkNOMSUwIwYDVQQKExxBbGliYWJhIENsb3VkIENvbXB1dGluZyBMdGQuMSwwKgYDVQQDEyNBbGliYWJhIENsb3VkIEdDQyBSMyBEViBUTFMgQ0EgMjAyMw==", + "whitelist": false, + "attachment": { + "hash": "53716598b91a9ecd78e2c6e8c46226571cf32d4f24d18b62a25953a60f208d91", + "size": 1654, + "filename": "Dt0LJTAS7xpXMDCnaxxwMfhDHjHWcQtjDnm7kVY_njA=.pem", + "location": "security-state-staging/intermediates/0a5d2763-d6c4-47d1-983c-19092741ed70.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "Dt0LJTAS7xpXMDCnaxxwMfhDHjHWcQtjDnm7kVY/njA=", + "crlite_enrolled": false, + "id": "40ea2830-caee-40e7-829a-4b68b96ab2a4", + "last_modified": 1681981023385 + }, + { + "schema": 1681980508238, + "derHash": "TeX7IB2tHJzOpoZIwqmgPlPV85tZWdBgjnBzJvDGQyo=", + "subject": "CN=GlobalSign Atlas R3 OV TLS CA 2023 Q3,O=GlobalSign nv-sa,C=BE", + "subjectDN": "MFgxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMS4wLAYDVQQDEyVHbG9iYWxTaWduIEF0bGFzIFIzIE9WIFRMUyBDQSAyMDIzIFEz", + "whitelist": false, + "attachment": { + "hash": "e1659007883bde145325f58be7140741a93d9a07e478560ce0ad3f188a75a415", + "size": 1642, + "filename": "FfScPkObVDnLRrFA2p_v5QNg34gJoH4A-Eacet8Akck=.pem", + "location": "security-state-staging/intermediates/a0d724f7-7f9a-448e-a916-77d21f79d8e7.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "FfScPkObVDnLRrFA2p/v5QNg34gJoH4A+Eacet8Akck=", + "crlite_enrolled": false, + "id": "e19fffa7-23b4-4fb6-a5a6-d8378b96a39b", + "last_modified": 1681981023375 + }, + { + "schema": 1681980500514, + "derHash": "QNRPoJomDo/NUnKTqpZfJHsx4hBPpRs20mOwR5+4KPI=", + "subject": "CN=GlobalSign Atlas E46 EV TLS CA 2023 Q3,O=GlobalSign nv-sa,C=BE", + "subjectDN": "MFkxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMS8wLQYDVQQDEyZHbG9iYWxTaWduIEF0bGFzIEU0NiBFViBUTFMgQ0EgMjAyMyBRMw==", + "whitelist": false, + "attachment": { + "hash": "dc88ca4ce423e765198984f2c4f176c1486e8c451dee2471eb86c9380bad9156", + "size": 1199, + "filename": "VVcFkx148EzULQTkJ5rbQABu5ga4j_J9MKJrLSGDVLs=.pem", + "location": "security-state-staging/intermediates/3d8ecc6f-b94e-41ef-9b58-a93bb8b2dbd5.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "VVcFkx148EzULQTkJ5rbQABu5ga4j/J9MKJrLSGDVLs=", + "crlite_enrolled": false, + "id": "780797c6-c052-44e4-9fd1-8f856900d477", + "last_modified": 1681981023365 + }, + { "schema": 1680511689525, "derHash": "9vi81BPJczFm6FhDtGjdNucnFS2aN7FRKcDnZI7O5jk=", "subject": "CN=SHECA OV Server CA G7,O=UniTrust,C=CN", @@ -1945,24 +2215,6 @@ "last_modified": 1666727875188 }, { - "schema": 1666727409981, - "derHash": "xBXOv6P8LvPHQJK4QmW61kw/yZlMkRd5ZWZ9er7pBYg=", - "subject": "OU=Security Communication RootCA2,O=SECOM Trust Systems CO.\\,LTD.,C=JP", - "subjectDN": "MF0xCzAJBgNVBAYTAkpQMSUwIwYDVQQKExxTRUNPTSBUcnVzdCBTeXN0ZW1zIENPLixMVEQuMScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTI=", - "whitelist": false, - "attachment": { - "hash": "646b73a99fcc560ca1fe3ce6a321bf45c814a8676d3322ace82a7e7e8897f46a", - "size": 1601, - "filename": "M4BwmvOwlr48wqQFSBQsClIAKNsJ4st3riIGYWq2y7Q=.pem", - "location": "security-state-staging/intermediates/461fedad-31f0-49a0-8419-88fcb971810f.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "M4BwmvOwlr48wqQFSBQsClIAKNsJ4st3riIGYWq2y7Q=", - "crlite_enrolled": false, - "id": "441e263c-474f-4706-8caf-067062a7022a", - "last_modified": 1666727875174 - }, - { "schema": 1666727354885, "derHash": "bN+dy/NRCju0AnYdYtDF5OevxR2c/wHwK9UyVtxWet8=", "subject": "CN=GDCA TrustAUTH R4 DV SSL CA G2,O=Global Digital Cybersecurity Authority Co.\\, Ltd.,C=CN", @@ -5131,24 +5383,6 @@ "last_modified": 1666727872549 }, { - "schema": 1666727363109, - "derHash": "NlH5s2odqYMgDG7k787PpN78BZRmaJ2qGm22hKVMnns=", - "subject": "CN=Actalis Organization Validated Server CA G1,O=Actalis S.p.A./03358520967,L=Ponte San Pietro,ST=Bergamo,C=IT", - "subjectDN": "MIGVMQswCQYDVQQGEwJJVDEQMA4GA1UECAwHQmVyZ2FtbzEZMBcGA1UEBwwQUG9udGUgU2FuIFBpZXRybzEjMCEGA1UECgwaQWN0YWxpcyBTLnAuQS4vMDMzNTg1MjA5NjcxNDAyBgNVBAMMK0FjdGFsaXMgT3JnYW5pemF0aW9uIFZhbGlkYXRlZCBTZXJ2ZXIgQ0EgRzE=", - "whitelist": false, - "attachment": { - "hash": "6abedb9881ea66af627c7960fe41956b260b02726a2719d0ac283185d97e16cf", - "size": 2263, - "filename": "pmKuxMFaLv7ve9PLjGilItvtdgTK9uISTaDGBZSO3kQ=.pem", - "location": "security-state-staging/intermediates/a33bcad3-47f9-4423-ab8e-92ad859cc5ec.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "pmKuxMFaLv7ve9PLjGilItvtdgTK9uISTaDGBZSO3kQ=", - "crlite_enrolled": false, - "id": "041225c6-347b-421b-89b7-20269162c1f4", - "last_modified": 1666727872536 - }, - { "schema": 1666727406839, "derHash": "Xr2YdOa4jaOPSnuVZs5dTfBeDCJNlJhq2MxeugBKDAQ=", "subject": "CN=CrowdStrike Global EV CA G2,O=CrowdStrike\\, Inc.,C=US", @@ -14851,24 +15085,6 @@ "last_modified": 1665579462816 }, { - "schema": 1665298623610, - "derHash": "/Zi0DrlKrAl2IhefHjrN2s0/PJUnzWl03DYU0JrTeq4=", - "subject": "CN=Actalis Domain Validation Server CA G1,O=Actalis S.p.A./03358520967,L=Ponte San Pietro,ST=Bergamo,C=IT", - "subjectDN": "MIGQMQswCQYDVQQGEwJJVDEQMA4GA1UECAwHQmVyZ2FtbzEZMBcGA1UEBwwQUG9udGUgU2FuIFBpZXRybzEjMCEGA1UECgwaQWN0YWxpcyBTLnAuQS4vMDMzNTg1MjA5NjcxLzAtBgNVBAMMJkFjdGFsaXMgRG9tYWluIFZhbGlkYXRpb24gU2VydmVyIENBIEcx", - "whitelist": false, - "attachment": { - "hash": "6acbc0db9e14c20b7451ac6a4370d052bc7c3e5998ac0c9ffd0579f1e572ba26", - "size": 2255, - "filename": "BJJEqWcyIOaOIv8i-zwBwibnq29_3M0jCAjL4VG3bvU=.pem", - "location": "security-state-staging/intermediates/7dfd8c65-c838-4d5b-9e31-7514f9077c07.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "BJJEqWcyIOaOIv8i+zwBwibnq29/3M0jCAjL4VG3bvU=", - "crlite_enrolled": false, - "id": "8508b975-2be6-4467-9f9f-2771caa111e4", - "last_modified": 1665557823134 - }, - { "schema": 1665168562462, "derHash": "wOixwZXN/3tRN7mtNROmEgsdv/SeXgqM6jJzvI12GHc=", "subject": "CN=GTS CA 1D8,O=Google Trust Services LLC,C=US", @@ -23941,24 +24157,6 @@ "last_modified": 1616745549953 }, { - "schema": 1615708697267, - "derHash": "SUKtBEEhiuwi2sQXrEmdfeTFTsvT0zXzSl+LBo9ubJY=", - "subject": "CN=Actalis Extended Validation Server CA G1,O=Actalis S.p.A./03358520967,L=Milano,ST=Milano,C=IT", - "subjectDN": "MIGHMQswCQYDVQQGEwJJVDEPMA0GA1UECAwGTWlsYW5vMQ8wDQYDVQQHDAZNaWxhbm8xIzAhBgNVBAoMGkFjdGFsaXMgUy5wLkEuLzAzMzU4NTIwOTY3MTEwLwYDVQQDDChBY3RhbGlzIEV4dGVuZGVkIFZhbGlkYXRpb24gU2VydmVyIENBIEcx", - "whitelist": false, - "attachment": { - "hash": "9dca42b206384547c8a9ebe8126b177b165c1f506a22d83e63775bee433d5029", - "size": 2243, - "filename": "iiRAhRCKHfD_Hl73m_3kvrRJsjFUTTQ3Xaw6E8qVac4=.pem", - "location": "security-state-staging/intermediates/0bd6f9b1-1826-400c-9fc8-549c1432ff92.pem", - "mimetype": "application/x-pem-file" - }, - "pubKeyHash": "iiRAhRCKHfD/Hl73m/3kvrRJsjFUTTQ3Xaw6E8qVac4=", - "crlite_enrolled": false, - "id": "d9a1301f-ca8e-47e1-b6ae-ce1d56900f3c", - "last_modified": 1615730373204 - }, - { "schema": 1615384231447, "derHash": "sQhhc3s+ybEfphVNI5cP+y2r/Ciuamv1bD8yBCZiOa0=", "subject": "CN=SECOM Passport for Member PUB CA4,OU=SECOM Passport for Member 2.0 PUB,O=SECOM Trust Systems CO.\\,LTD.,C=JP", @@ -27397,5 +27595,5 @@ "last_modified": 1559865863642 } ], - "timestamp": 1680512223621 + "timestamp": 1682110623483 } diff -Nru firefox-112.0.1+build1/SOURCE_CHANGESET firefox-112.0.2+build1/SOURCE_CHANGESET --- firefox-112.0.1+build1/SOURCE_CHANGESET 2023-04-15 09:01:27.000000000 +0000 +++ firefox-112.0.2+build1/SOURCE_CHANGESET 2023-04-24 20:21:48.000000000 +0000 @@ -1 +1 @@ -abc07166ae78021ff1d14bcbe58038b386500dae \ No newline at end of file +50d8cc21a93a1343250b71090f4a9c9fee37091c \ No newline at end of file diff -Nru firefox-112.0.1+build1/widget/cocoa/nsCocoaWindow.h firefox-112.0.2+build1/widget/cocoa/nsCocoaWindow.h --- firefox-112.0.1+build1/widget/cocoa/nsCocoaWindow.h 2023-04-15 09:01:17.000000000 +0000 +++ firefox-112.0.2+build1/widget/cocoa/nsCocoaWindow.h 2023-04-24 20:21:37.000000000 +0000 @@ -353,7 +353,8 @@ bool InFullScreenMode() const { return mInFullScreenMode; } - void PauseOrResumeCompositor(bool aPause) override; + void PauseCompositor(); + void ResumeCompositor(); bool AsyncPanZoomEnabled() const override; diff -Nru firefox-112.0.1+build1/widget/cocoa/nsCocoaWindow.mm firefox-112.0.2+build1/widget/cocoa/nsCocoaWindow.mm --- firefox-112.0.1+build1/widget/cocoa/nsCocoaWindow.mm 2023-04-15 09:01:17.000000000 +0000 +++ firefox-112.0.2+build1/widget/cocoa/nsCocoaWindow.mm 2023-04-24 20:21:37.000000000 +0000 @@ -2261,6 +2261,14 @@ if (mWidgetListener) { mWidgetListener->SizeModeChanged(newMode); } + + if (StaticPrefs::widget_pause_compositor_when_minimized()) { + if (newMode == nsSizeMode_Minimized) { + PauseCompositor(); + } else { + ResumeCompositor(); + } + } } void nsCocoaWindow::DispatchOcclusionEvent() { @@ -2298,6 +2306,30 @@ NS_OBJC_END_TRY_IGNORE_BLOCK; } +void nsCocoaWindow::PauseCompositor() { + nsIWidget* mainChildView = static_cast([[mWindow mainChildView] widget]); + if (!mainChildView) { + return; + } + CompositorBridgeChild* remoteRenderer = mainChildView->GetRemoteRenderer(); + if (!remoteRenderer) { + return; + } + remoteRenderer->SendPause(); +} + +void nsCocoaWindow::ResumeCompositor() { + nsIWidget* mainChildView = static_cast([[mWindow mainChildView] widget]); + if (!mainChildView) { + return; + } + CompositorBridgeChild* remoteRenderer = mainChildView->GetRemoteRenderer(); + if (!remoteRenderer) { + return; + } + remoteRenderer->SendResume(); +} + void nsCocoaWindow::SetMenuBar(RefPtr&& aMenuBar) { if (!mWindow) { mMenuBar = nullptr; @@ -2717,12 +2749,6 @@ return true; } -void nsCocoaWindow::PauseOrResumeCompositor(bool aPause) { - if (auto* mainChildView = static_cast([[mWindow mainChildView] widget])) { - mainChildView->PauseOrResumeCompositor(aPause); - } -} - bool nsCocoaWindow::AsyncPanZoomEnabled() const { if (mPopupContentView) { return mPopupContentView->AsyncPanZoomEnabled(); diff -Nru firefox-112.0.1+build1/widget/gtk/nsWaylandDisplay.cpp firefox-112.0.2+build1/widget/gtk/nsWaylandDisplay.cpp --- firefox-112.0.1+build1/widget/gtk/nsWaylandDisplay.cpp 2023-04-15 09:01:16.000000000 +0000 +++ firefox-112.0.2+build1/widget/gtk/nsWaylandDisplay.cpp 2023-04-24 20:21:38.000000000 +0000 @@ -9,10 +9,12 @@ #include -#include "base/message_loop.h" // for MessageLoop -#include "base/task.h" // for NewRunnableMethod, etc +#include "base/message_loop.h" // for MessageLoop +#include "base/task.h" // for NewRunnableMethod, etc +#include "mozilla/gfx/Logging.h" // for gfxCriticalNote #include "mozilla/StaticMutex.h" #include "mozilla/StaticPrefs_widget.h" +#include "mozilla/Sprintf.h" #include "WidgetUtilsGtk.h" struct _GdkSeat; @@ -271,15 +273,17 @@ return mThreadId == PR_GetCurrentThread() && aDisplay == mDisplay; } -static void WlCrashHandler(const char* format, va_list args) { - MOZ_CRASH_UNSAFE(g_strdup_vprintf(format, args)); +static void WlLogHandler(const char* format, va_list args) { + char error[1000]; + VsprintfLiteral(error, format, args); + gfxCriticalNote << "Wayland protocol error: " << error; } nsWaylandDisplay::nsWaylandDisplay(wl_display* aDisplay) : mThreadId(PR_GetCurrentThread()), mDisplay(aDisplay) { // GTK sets the log handler on display creation, thus we overwrite it here // in a similar fashion - wl_log_set_handler_client(WlCrashHandler); + wl_log_set_handler_client(WlLogHandler); wl_registry* registry = wl_display_get_registry(mDisplay); wl_registry_add_listener(registry, ®istry_listener, this); diff -Nru firefox-112.0.1+build1/widget/gtk/nsWindow.cpp firefox-112.0.2+build1/widget/gtk/nsWindow.cpp --- firefox-112.0.1+build1/widget/gtk/nsWindow.cpp 2023-04-15 09:01:17.000000000 +0000 +++ firefox-112.0.2+build1/widget/gtk/nsWindow.cpp 2023-04-24 20:21:37.000000000 +0000 @@ -3732,10 +3732,15 @@ #endif gboolean nsWindow::OnExposeEvent(cairo_t* cr) { + // This might destroy us. + NotifyOcclusionState(OcclusionState::VISIBLE); + if (mIsDestroyed) { + return FALSE; + } + // Send any pending resize events so that layout can update. - // May run event loop. + // May run event loop and destroy us. MaybeDispatchResized(); - if (mIsDestroyed) { return FALSE; } diff -Nru firefox-112.0.1+build1/widget/nsBaseWidget.cpp firefox-112.0.2+build1/widget/nsBaseWidget.cpp --- firefox-112.0.1+build1/widget/nsBaseWidget.cpp 2023-04-15 09:01:17.000000000 +0000 +++ firefox-112.0.2+build1/widget/nsBaseWidget.cpp 2023-04-24 20:21:37.000000000 +0000 @@ -988,18 +988,6 @@ CreateCompositor(rect.Width(), rect.Height()); } -void nsIWidget::PauseOrResumeCompositor(bool aPause) { - auto* renderer = GetRemoteRenderer(); - if (!renderer) { - return; - } - if (aPause) { - renderer->SendPause(); - } else { - renderer->SendResume(); - } -} - already_AddRefed nsBaseWidget::CreateRootContentController() { RefPtr controller = diff -Nru firefox-112.0.1+build1/widget/nsIWidget.h firefox-112.0.2+build1/widget/nsIWidget.h --- firefox-112.0.1+build1/widget/nsIWidget.h 2023-04-15 09:01:17.000000000 +0000 +++ firefox-112.0.2+build1/widget/nsIWidget.h 2023-04-24 20:21:37.000000000 +0000 @@ -1988,11 +1988,6 @@ virtual CompositorBridgeChild* GetRemoteRenderer() { return nullptr; } /** - * If there is a remote renderer, pause or resume it. - */ - virtual void PauseOrResumeCompositor(bool aPause); - - /** * Clear WebRender resources */ virtual void ClearCachedWebrenderResources() {} diff -Nru firefox-112.0.1+build1/widget/windows/ToastNotification.cpp firefox-112.0.2+build1/widget/windows/ToastNotification.cpp --- firefox-112.0.1+build1/widget/windows/ToastNotification.cpp 2023-04-15 09:01:17.000000000 +0000 +++ firefox-112.0.2+build1/widget/windows/ToastNotification.cpp 2023-04-24 20:21:37.000000000 +0000 @@ -108,6 +108,18 @@ return true; } + // Fall back to start menu shortcut for Windows 8; toast AUMID registration in + // the registry only works in Windows 10+. + if (!IsWin10OrLater()) { + nsAutoString aumid; + if (!WinTaskbar::GetAppUserModelID(aumid)) { + return false; + } + + mAumid = Some(aumid); + return true; + } + nsAutoString installHash; nsresult rv = gDirServiceProvider->GetInstallHash(installHash); NS_ENSURE_SUCCESS(rv, false); diff -Nru firefox-112.0.1+build1/widget/windows/ToastNotificationHandler.cpp firefox-112.0.2+build1/widget/windows/ToastNotificationHandler.cpp --- firefox-112.0.1+build1/widget/windows/ToastNotificationHandler.cpp 2023-04-15 09:01:16.000000000 +0000 +++ firefox-112.0.2+build1/widget/windows/ToastNotificationHandler.cpp 2023-04-24 20:21:38.000000000 +0000 @@ -8,6 +8,7 @@ #include +#include "gfxUtils.h" #include "imgIContainer.h" #include "imgIRequest.h" #include "mozilla/gfx/2D.h" @@ -686,16 +687,19 @@ &mFailedToken); NS_ENSURE_TRUE(SUCCEEDED(hr), false); - ComPtr notification2; - hr = mNotification.As(¬ification2); - NS_ENSURE_TRUE(SUCCEEDED(hr), false); - - HString hTag; - hr = hTag.Set(mWindowsTag.get()); - NS_ENSURE_TRUE(SUCCEEDED(hr), false); + // `IToastNotification2` not supported on versions older than Windows 10. + if (IsWin10OrLater()) { + ComPtr notification2; + hr = mNotification.As(¬ification2); + NS_ENSURE_TRUE(SUCCEEDED(hr), false); + + HString hTag; + hr = hTag.Set(mWindowsTag.get()); + NS_ENSURE_TRUE(SUCCEEDED(hr), false); - hr = notification2->put_Tag(hTag.Get()); - NS_ENSURE_TRUE(SUCCEEDED(hr), false); + hr = notification2->put_Tag(hTag.Get()); + NS_ENSURE_TRUE(SUCCEEDED(hr), false); + } ComPtr toastNotificationManagerStatics = GetToastNotificationManagerStatics(); @@ -962,20 +966,24 @@ ToastNotificationHandler::OnDismiss( const ComPtr& notification, const ComPtr& aArgs) { - ComPtr notification2; - HRESULT hr = notification.As(¬ification2); - NS_ENSURE_TRUE(SUCCEEDED(hr), E_FAIL); - - HString tagHString; - hr = notification2->get_Tag(tagHString.GetAddressOf()); - NS_ENSURE_TRUE(SUCCEEDED(hr), E_FAIL); + // Multiple dismiss events only occur on Windows 10 and later, prior versions + // of Windows didn't include `IToastNotification2`. + if (IsWin10OrLater()) { + ComPtr notification2; + HRESULT hr = notification.As(¬ification2); + NS_ENSURE_TRUE(SUCCEEDED(hr), E_FAIL); + + HString tagHString; + hr = notification2->get_Tag(tagHString.GetAddressOf()); + NS_ENSURE_TRUE(SUCCEEDED(hr), E_FAIL); + + unsigned int len; + const wchar_t* tagPtr = tagHString.GetRawBuffer(&len); + nsAutoString tag(tagPtr, len); - unsigned int len; - const wchar_t* tagPtr = tagHString.GetRawBuffer(&len); - nsAutoString tag(tagPtr, len); - - if (FindNotificationByTag(tag, mAumid)) { - return S_OK; + if (FindNotificationByTag(tag, mAumid)) { + return S_OK; + } } SendFinished(); @@ -986,6 +994,11 @@ HRESULT ToastNotificationHandler::OnFail(const ComPtr& notification, const ComPtr& aArgs) { + HRESULT err; + aArgs->get_ErrorCode(&err); + MOZ_LOG(sWASLog, LogLevel::Error, + ("Error creating notification, error: %ld", err)); + SendFinished(); mBackend->RemoveHandler(mName, this); return S_OK; @@ -1031,7 +1044,7 @@ NS_ENSURE_SUCCESS(rv, rv); NSID_TrimBracketsASCII uuidStr(uuid); - uuidStr.AppendLiteral(".bmp"); + uuidStr.AppendLiteral(".png"); mImageFile->AppendNative(uuidStr); nsCOMPtr imgContainer; @@ -1047,20 +1060,24 @@ imgIContainer::FRAME_FIRST, imgIContainer::FLAG_SYNC_DECODE | imgIContainer::FLAG_ASYNC_NOTIFY); nsCOMPtr r = NS_NewRunnableFunction( - "ToastNotificationHandler::AsyncWriteBitmap", + "ToastNotificationHandler::AsyncWriteImage", [self, imageFile, surface]() -> void { - nsresult rv; - if (!surface) { - rv = NS_ERROR_FAILURE; - } else { - rv = WinUtils::WriteBitmap(imageFile, surface); + nsresult rv = NS_ERROR_FAILURE; + if (surface) { + FILE* file = nullptr; + rv = imageFile->OpenANSIFileDesc("wb", &file); + if (NS_SUCCEEDED(rv)) { + rv = gfxUtils::EncodeSourceSurface(surface, ImageType::PNG, u""_ns, + gfxUtils::eBinaryEncode, file); + fclose(file); + } } nsCOMPtr cbRunnable = NS_NewRunnableFunction( - "ToastNotificationHandler::AsyncWriteBitmapCb", + "ToastNotificationHandler::AsyncWriteImageCb", [self, rv]() -> void { auto handler = const_cast(self.get()); - handler->OnWriteBitmapFinished(rv); + handler->OnWriteImageFinished(rv); }); NS_DispatchToMainThread(cbRunnable); @@ -1069,14 +1086,14 @@ return mBackend->BackgroundDispatch(r); } -void ToastNotificationHandler::OnWriteBitmapFinished(nsresult rv) { +void ToastNotificationHandler::OnWriteImageFinished(nsresult rv) { if (NS_SUCCEEDED(rv)) { - OnWriteBitmapSuccess(); + OnWriteImageSuccess(); } TryShowAlert(); } -nsresult ToastNotificationHandler::OnWriteBitmapSuccess() { +nsresult ToastNotificationHandler::OnWriteImageSuccess() { nsresult rv; nsCOMPtr fileURI; diff -Nru firefox-112.0.1+build1/widget/windows/ToastNotificationHandler.h firefox-112.0.2+build1/widget/windows/ToastNotificationHandler.h --- firefox-112.0.1+build1/widget/windows/ToastNotificationHandler.h 2023-04-15 09:01:16.000000000 +0000 +++ firefox-112.0.2+build1/widget/windows/ToastNotificationHandler.h 2023-04-24 20:21:38.000000000 +0000 @@ -55,7 +55,7 @@ nsresult InitAlertAsync(nsIAlertNotification* aAlert); - void OnWriteBitmapFinished(nsresult rv); + void OnWriteImageFinished(nsresult rv); void HideAlert(); bool IsPrivate(); @@ -124,7 +124,7 @@ nsresult TryShowAlert(); bool ShowAlert(); nsresult AsyncSaveImage(imgIRequest* aRequest); - nsresult OnWriteBitmapSuccess(); + nsresult OnWriteImageSuccess(); void SendFinished(); nsresult InitWindowsTag();