{
  "commits": {
    "041f4b39f2bb": {
      "author": "Sharon Yang",
      "avatar": "https://www.gravatar.com/avatar/0d2001cd760293d0722a635655563a43?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "Automatic update from web-platform-tests\nMigrate CSS2 float-append-child crashtest to WPT\n\nBug: 40077397\nChange-Id: I9e1a543d352d25dfd8fb44102a00ee9b00b79a57\nReviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/8187614\nReviewed-by: Kent Tamura \u003ctkent@chromium.org\u003e\nCommit-Queue: Sharon Yang \u003cyangsharon@igalia.com\u003e\nCr-Commit-Position: refs/heads/main@{#1672937}\n\n--\n\nwpt-commits: 14d3819692b8bf1b55444314e696b6e943cf1cdd\nwpt-pr: 61699",
      "email": "yangsharon@igalia.com",
      "hash": "041f4b39f2bb2e7ef22536d5bf27610be147fdbb",
      "subject": "Bug 2060401 [wpt PR 61699] - Migrate CSS2 float-append-child crashtest to WPT, a=testonly"
    },
    "07f94de02011": {
      "author": "moz-wptsync-bot",
      "avatar": "https://www.gravatar.com/avatar/c26d4d31bbd58c7c2201edd90d400494?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "wpt-pr: 61712\nwpt-type: metadata",
      "email": "wptsync@mozilla.com",
      "hash": "07f94de02011ab5950f213ae1ba787c87b99c534",
      "subject": "Bug 2060458 [wpt PR 61712] - Update wpt metadata, a=testonly"
    },
    "18367648e509": {
      "author": "moz-wptsync-bot",
      "avatar": "https://www.gravatar.com/avatar/c26d4d31bbd58c7c2201edd90d400494?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "wpt-pr: 61652\nwpt-type: metadata",
      "email": "wptsync@mozilla.com",
      "hash": "18367648e5092900be4f6e33c72f7c98f259dcf0",
      "subject": "Bug 2059674 [wpt PR 61652] - Update wpt metadata, a=testonly"
    },
    "1f06cff967c5": {
      "author": "Emilio Cobos Álvarez",
      "avatar": "https://www.gravatar.com/avatar/1d91d22a4892f16f744b31fd4286144e?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "",
      "email": "emilio@crisal.io",
      "hash": "1f06cff967c5ee39255700ae1a913c5c37bc7ae1",
      "subject": "Bug 2048635 - Fix some tests."
    },
    "310fb4a72b79": {
      "author": "agoloman",
      "avatar": "https://www.gravatar.com/avatar/cd12c4a70c28dead95af1f72ff892316?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "This reverts commit 99beeb42b7bf801508900e122fbea47797ac33b0.",
      "email": "agoloman@mozilla.com",
      "hash": "310fb4a72b799281249c705e802fb47ba2759ef9",
      "subject": "Revert \"Bug 2047023 - Add mochitest-browser-chrome-ml-models for real-model ML tests r=ai-platform-reviewers,taskgraph-reviewers,thasan,ahal,gregtatum\" for causing mochitest failures."
    },
    "3351e1c4ecb6": {
      "author": "Norisz Fay",
      "avatar": "https://www.gravatar.com/avatar/e060837184d7bb06925d038b8c16a828?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "This reverts commit e30801fa1ccdf62526c18bcfe6d123be07d274da.",
      "email": "nfay@mozilla.com",
      "hash": "3351e1c4ecb6a2f97577af4f87a1198f0eb6b2f7",
      "subject": "Revert \"Bug 2051788: Clamp content-initiated window resizes to the screen in the parent process. r=emilio,dom-core-reviewers,smaug\" for causing bustage @ BrowserParent.cpp"
    },
    "36f872e72ea6": {
      "author": "wpt-pr-bot",
      "avatar": "https://www.gravatar.com/avatar/d77ee3a6d3b9b22ddaf1a1640395e75c?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "Automatic update from web-platform-tests\nAutomated update of CODEOWNERS\n\n--\n\nwpt-commits: 844f550c6bc1b604bc5aed82bfcd9048ea5cc339\nwpt-pr: 61651",
      "email": "wpt-pr-bot@users.noreply.github.com",
      "hash": "36f872e72ea625d93ae684b6c486badc7a7ff491",
      "subject": "Bug 2059651 [wpt PR 61651] - Update CODEOWNERS, a=testonly"
    },
    "445c5119120d": {
      "author": "Hyowon Kim",
      "avatar": "https://www.gravatar.com/avatar/c42b48211e9351e41e397cdfebdd5425?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "Automatic update from web-platform-tests\nAdd fuzzy match to rotate keyframes animation reftest\n\nBug: 499073688\nChange-Id: I8ef11602bcbe5493dd727bbe3795d6dca6aabe55\nReviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/8173664\nReviewed-by: Jonathan Lee \u003cjonathanjlee@google.com\u003e\nCommit-Queue: Hyowon Kim \u003chyowon@igalia.com\u003e\nCr-Commit-Position: refs/heads/main@{#1673003}\n\n--\n\nwpt-commits: ffd0e6e991ddf7e00e030aeef226afefd9707b56\nwpt-pr: 61692",
      "email": "hyowon@igalia.com",
      "hash": "445c5119120de030847e765bb80c61a3c1178f0c",
      "subject": "Bug 2060341 [wpt PR 61692] - Add fuzzy match to rotate keyframes animation reftest, a=testonly"
    },
    "47bd7ea0f9ba": {
      "author": "Minseong Kim",
      "avatar": "https://www.gravatar.com/avatar/7b8766e5866b960b0df46f3c8cda2166?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "Automatic update from web-platform-tests\n[css-overflow] Suppress line breaks in text-overflow\n\nIntroduce a `SuppressLineBreaks` function to sanitize the string\nprovided to the `text-overflow` property. This function replaces\nconsecutive forced line break characters with a single space to prevent\nunintended line breaks.\n\nCSSWG Discussion:\nhttps://github.com/w3c/csswg-drafts/issues/12557#issuecomment-3960400974\n\nAnd, this CL adds a Hangul-only subset of Noto Sans CJK KR because\nKorean ellipsis strings have no self-calibrating CSS unit unlike ch for\nLatin or ic for full-width CJK. Pinning a font with fixed metrics keeps\nthose tests deterministic across platforms.\n\nBug: 487634228, 41492459\nChange-Id: I46feadc7d52e18ef16d5fea5e177a25a86f1fde1\nReviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7710192\nReviewed-by: Koji Ishii \u003ckojii@chromium.org\u003e\nCommit-Queue: Minseong Kim \u003cjja08111@gmail.com\u003e\nReviewed-by: Andreu Botella \u003cabotella@igalia.com\u003e\nCr-Commit-Position: refs/heads/main@{#1673114}\n\n--\n\nwpt-commits: 9642bcee4c4185eac53224f4b1e05b9841f4581b\nwpt-pr: 61708",
      "email": "jja08111@gmail.com",
      "hash": "47bd7ea0f9bab0eafc9543ac94a9bc038239c146",
      "subject": "Bug 2060437 [wpt PR 61708] - [css-overflow] Suppress line breaks in text-overflow, a=testonly"
    },
    "4b5abcfa6b7d": {
      "author": "Alexandru Marc",
      "avatar": "https://www.gravatar.com/avatar/f90e8bfbc9c1383d73053a8809b77e48?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "This reverts commit 283d5481d38a6b215e87622c8af5edda7bb0f406.\n\nRevert \"Bug 2039416 - Update builders to rustc 1.95. r=firefox-build-system-reviewers,sergesanspaille\"\n\nThis reverts commit a91a99a53ff3ae309b8f8473e4debdf54ec580a3.",
      "email": "amarc@mozilla.com",
      "hash": "4b5abcfa6b7d2e568581b7c1942e52e3f1c7e04d",
      "subject": "Revert (Bug 1977771, Bug 2039416) for causing toolchain bustages"
    },
    "4e491f44617d": {
      "author": "Fredrik Söderquist",
      "avatar": "https://www.gravatar.com/avatar/43e3cd70be23fde6b3f732209fb4343b?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "Automatic update from web-platform-tests\nFix flag-check in LayoutSVGShape::ComputeNonScalingStrokeTransform\n\nThe if-branch should be the pre-flag behavior, not the post-flag\nbehavior. Reverse the polarity.\n\nFixed: 541684117\nChange-Id: Ie49f0a985ea83280d416142aae9e8f82c97e08f0\nReviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/8184233\nCommit-Queue: Ian Kilpatrick \u003cikilpatrick@chromium.org\u003e\nAuto-Submit: Fredrik Söderquist \u003cfs@opera.com\u003e\nReviewed-by: Ian Kilpatrick \u003cikilpatrick@chromium.org\u003e\nCr-Commit-Position: refs/heads/main@{#1672990}\n\n--\n\nwpt-commits: e1528f66352a21070355383dcda8138275a07be0\nwpt-pr: 61702",
      "email": "fs@opera.com",
      "hash": "4e491f44617db9de1ff693207008eb2558f51077",
      "subject": "Bug 2060422 [wpt PR 61702] - Fix flag-check in LayoutSVGShape::ComputeNonScalingStrokeTransform, a=testonly"
    },
    "4ef88893d4f5": {
      "author": "Mason Freed",
      "avatar": "https://www.gravatar.com/avatar/406c7252554037aa604837a0ac3ce90d?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "Automatic update from web-platform-tests\nFix race condition in parse-a-sizes-attribute WPT test helper\n\nRefactor parse-a-sizes-attribute.js to check document.readyState before\nregistering a load listener.\n\nPreviously, the script assigned 'onload = function() { ... done(); }'\non window. If the iframe completed loading before the script parsed and\nassigned onload, the load event was missed. Because the test harness\nuses setup({explicit_done: true}), missing the load event left done()\nuncalled, causing intermittent test timeouts.\n\nThe sizes-auto.html test was including parse-a-sizes-attribute.js,\nbut not using it. That was also removed.\n\nFixed: 540555511\nChange-Id: I1a2a0b2ec797a05619384caf284a02f22f6590ff\nReviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/8175234\nAuto-Submit: Mason Freed \u003cmasonf@chromium.org\u003e\nCommit-Queue: Joey Arhar \u003cjarhar@chromium.org\u003e\nReviewed-by: Joey Arhar \u003cjarhar@chromium.org\u003e\nCr-Commit-Position: refs/heads/main@{#1672702}\n\n--\n\nwpt-commits: 52ae6c243bb762e3b87426da362411ef1ced0208\nwpt-pr: 61689",
      "email": "masonf@chromium.org",
      "hash": "4ef88893d4f5ab7028575f00ebc7881ebf61ed76",
      "subject": "Bug 2060258 [wpt PR 61689] - Fix race condition in parse-a-sizes-attribute WPT test helper, a=testonly"
    },
    "55b850373b32": {
      "author": "Silaghi",
      "avatar": "https://www.gravatar.com/avatar/81acf29bb88b2a0ded61f47b93c59dea?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "This reverts commit b10910c797b082225747c7f5375603947cf3adac.",
      "email": "asilaghi@mozilla.com",
      "hash": "55b850373b3227bd3ccf9d81d5a4bfff4d7f69cf",
      "subject": "Revert \"Bug 2054381 - Fix ConcurrentConnection LOCKED race on Places startup. r=places-reviewers,daisuke\" for causing gtest failures at ConcurrentConnection"
    },
    "5e9f486c9fad": {
      "author": "moz-wptsync-bot",
      "avatar": "https://www.gravatar.com/avatar/c26d4d31bbd58c7c2201edd90d400494?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "wpt-pr: 61693\nwpt-type: metadata",
      "email": "wptsync@mozilla.com",
      "hash": "5e9f486c9fad55d431ee1d33b0e3b249bf885e23",
      "subject": "Bug 2060348 [wpt PR 61693] - Update wpt metadata, a=testonly"
    },
    "85a7ffb2a24e": {
      "author": "Roberto Rodriguez",
      "avatar": "https://www.gravatar.com/avatar/45f4995b936231d4893f38e70cbc4805?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "Automatic update from web-platform-tests\nWebKit export of https://bugs.webkit.org/show_bug.cgi?id=317890\n\n--\n\nwpt-commits: d1a19d13b9c8d2aa4d3c66f4b890671ea3f0c112\nwpt-pr: 61652",
      "email": "roberto_rodriguez2@apple.com",
      "hash": "85a7ffb2a24eadfe53d3ecc68fb1e8f8d4593e2a",
      "subject": "Bug 2059674 [wpt PR 61652] - WebKit export of https://bugs.webkit.org/show_bug.cgi?id=317890, a=testonly"
    },
    "86e6d0d1162b": {
      "author": "Alison Maher",
      "avatar": "https://www.gravatar.com/avatar/2f0b220b439d88fd12392562362e70bc?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "Automatic update from web-platform-tests\n[Masonry] Intrinsic block size when fragmenting\n\nTrack the complete grid-lanes intrinsic block size separately from the\ncurrent fragment’s intrinsic block size. The total size is computed\nduring sizing and placement, persisted in the break token, and used for\nnon-fragmented layout, while `intrinsic_block_size_` is reserved for\nper-fragment sizing.\n\nThis also fixes empty contenteditable grid-lanes fragmentation, with a\nnew test added for this case.\n\nBug: 343257585\nChange-Id: I881e22bce9ef9bdba4640679bb1e59f456c889bb\nReviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/8175235\nReviewed-by: Morten Stenshorne \u003cmstensho@chromium.org\u003e\nCommit-Queue: Alison Maher \u003calmaher@microsoft.com\u003e\nCr-Commit-Position: refs/heads/main@{#1673218}\n\n--\n\nwpt-commits: f28136b77ca55899945381a1fc4adb80e838b4f5\nwpt-pr: 61712",
      "email": "almaher@microsoft.com",
      "hash": "86e6d0d1162bd9e1cad06ac3bde2255eb09ede5e",
      "subject": "Bug 2060458 [wpt PR 61712] - [Masonry] Intrinsic block size when fragmenting, a=testonly"
    },
    "8721da5cb980": {
      "author": "Chris Dumez",
      "avatar": "https://www.gravatar.com/avatar/a9f21fe3a8baf79b45f3c91572187bdc?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "Automatic update from web-platform-tests\nWebKit export of https://bugs.webkit.org/show_bug.cgi?id=320884 (#61706)\n--\n\nwpt-commits: 72d2bd81dda52cf6d3d8e3066694bbedb87956b3\nwpt-pr: 61706",
      "email": "cdumez@apple.com",
      "hash": "8721da5cb9809fba38681b91574309ef233f4218",
      "subject": "Bug 2060432 [wpt PR 61706] - WebKit export of https://bugs.webkit.org/show_bug.cgi?id=320884, a=testonly"
    },
    "8d9371b8e693": {
      "author": "tnikkel",
      "avatar": "https://www.gravatar.com/avatar/0646a42110a02dd585f200f270716852?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "Automatic update from web-platform-tests\njpegxl: fix css-before-content comparing a 3x3 image to a 120x120 reference (#61705)\n\nThe image renders at 3x3 even though the test asks for 120x120, so it can't\nmatch the 120x120 reference. width and height on a ::before with an image don't\nsize the image in any browser yet, so a jxl test shouldn't depend on it.\n\nJust make the reference a copy of the test with a png instead of a jxl.\n--\n\nwpt-commits: ee17ed4138513e8e6de39022053977cf71ddf8cc\nwpt-pr: 61705",
      "email": "tnikkel@gmail.com",
      "hash": "8d9371b8e6938f0ce382caade95506391e076189",
      "subject": "Bug 2060431 [wpt PR 61705] - jpegxl: fix css-before-content comparing a 3x3 image to a 120x120 reference, a=testonly"
    },
    "91aaa01b6b32": {
      "author": "Silaghi",
      "avatar": "https://www.gravatar.com/avatar/81acf29bb88b2a0ded61f47b93c59dea?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "This reverts commit 6e40c75c47d5630fbe29097421371c4dfe24a6ff.",
      "email": "asilaghi@mozilla.com",
      "hash": "91aaa01b6b321901d13edfdb1970f80a27996e67",
      "subject": "Revert \"Bug 2056670 - Allow swiping from home when HNT enabled r=android-reviewers,npoon\" for causing fenix ui test failures"
    },
    "9cb1a7a70304": {
      "author": "Cathie Chen",
      "avatar": "https://www.gravatar.com/avatar/73e3b7d1f2b68f685d24ab235c411f56?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "Automatic update from web-platform-tests\n[Selection] Selecting from contenteditable to OOF user-select:none\n\nThis is a fix for a regression introduced by crrev.com/c/7617189, which\nadded a NoExtendSelectionToUserSelectNoneOutOfFlow early-return in\nPositionRespectingEditingBoundary() before UserSelectContainBoundaryOf()\nwas called. When the selection anchor was inside a contenteditable\n(non-null editable_element), let UserSelectContainBoundaryOf() handle\nit. A new flag NoExtendSelectionToUserSelectNoneOutOfFlowUnlessEditable\nadded to control this change.\n\nBug: 522844903\nTest: wpt/selection/drag-selection-contenteditable-to-out-of-flow-user-select-none.html\nChange-Id: I112ecf4424bd2d3dbf187085d99b61624b0e63b5\nReviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/8011000\nReviewed-by: Koji Ishii \u003ckojii@chromium.org\u003e\nCommit-Queue: cathie chen \u003ccchen@igalia.com\u003e\nCr-Commit-Position: refs/heads/main@{#1673219}\n\n--\n\nwpt-commits: 5571fcea703e6a567e714aed82670749d6064c6e\nwpt-pr: 61707",
      "email": "cchen@igalia.com",
      "hash": "9cb1a7a703041aa7ee5e7c057c4d42e1bd96ff56",
      "subject": "Bug 2060434 [wpt PR 61707] - [Selection] Selecting from contenteditable to OOF user-select:none, a=testonly"
    },
    "D304140": {
      "author": "Harshit",
      "avatar": "https://www.gravatar.com/avatar/247c5d6a53ec4b9480a64992ec859faa?d=identicon\u0026s=64",
      "cl": "D304140",
      "clUrl": "https://phabricator.services.mozilla.com/D304140",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D304140",
      "email": "hsohaney@mozilla.com",
      "hash": "703db28f06cb90b5fc2fde1ad1b84829e5f4eb6c",
      "subject": "Bug 2044416 - Create backgroundtasks using backgroundtaskbuilder on windows msix packages. r=nrishel,browser-installer-reviewers,iholmes,cdupuis"
    },
    "D304558": {
      "author": "Dharma Ong",
      "avatar": "https://www.gravatar.com/avatar/0a7381e7eb23f16fd97036b4645ac315?d=identicon\u0026s=64",
      "cl": "D304558",
      "clUrl": "https://phabricator.services.mozilla.com/D304558",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D304558",
      "email": "dharmaong00@gmail.com",
      "hash": "984bca2bb4711293d0824bd9a7c58df0d834f34d",
      "subject": "Bug 2042945 - Add telemetry to measure how often users search a query in search mode that looks like a URL. r=mak,urlbar-reviewers"
    },
    "D304784": {
      "author": "Andreas Pehrson",
      "avatar": "https://www.gravatar.com/avatar/906f005aaa08b2d109a3fa9e1b83000d?d=identicon\u0026s=64",
      "cl": "D304784",
      "clUrl": "https://phabricator.services.mozilla.com/D304784",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D304784",
      "email": "apehrson@mozilla.com",
      "hash": "4d91a741e3ca769461a20d82ce1011e16cb3e92f",
      "subject": "Bug 2044501 - Add RemoteMediaManagerChild::EnsureCodecSupportFor for async HW codec support queries. r=media-playback-reviewers,alwu"
    },
    "D304785": {
      "author": "Andreas Pehrson",
      "avatar": "https://www.gravatar.com/avatar/906f005aaa08b2d109a3fa9e1b83000d?d=identicon\u0026s=64",
      "cl": "D304785",
      "clUrl": "https://phabricator.services.mozilla.com/D304785",
      "description": "Add RemoteMediaManagerChild::EnsureCodecSupportFor-backed async support queries\n(PDMFactory::SupportsAsync / PDMFactorySupport::IsSupportedAsync) and use them\nfor the non-WebRTC MediaCapabilities decode paths, gated by the new\nmedia.mediacapabilities.codec-support-cache.enabled pref (default false). When\nthe pref is disabled the original behaviour is used: creating a decoder and\nquerying it for video, and a synchronous PDMFactorySupport query for audio.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D304785",
      "email": "apehrson@mozilla.com",
      "hash": "76004a6b2462d6faadb10803de77d8d63157f4c9",
      "subject": "Bug 2044501 - Add cached async codec-support path for MediaCapabilities decode behind a pref. r=media-playback-reviewers,alwu"
    },
    "D304787": {
      "author": "Andreas Pehrson",
      "avatar": "https://www.gravatar.com/avatar/906f005aaa08b2d109a3fa9e1b83000d?d=identicon\u0026s=64",
      "cl": "D304787",
      "clUrl": "https://phabricator.services.mozilla.com/D304787",
      "description": "Add async support queries through the encoder stack (PlatformEncoderModule,\nRemoteEncoderModule, PEMFactory) and convert the WebRTC decode/encode glue\n(WebrtcMediaDataDecoder, WebrtcVideoCodecFactory, MediaDataCodec, CodecInfo) to\nresolve once the relevant remote process has reported accurate hardware\nsupport. The MediaCapabilities WebRTC decode and encode paths and the\nTestWebRTCCodecInfo gtests now use these; the superseded synchronous WebRTC\nsupport paths are removed. WebRTC decode support reuses the cached\nPDMFactorySupport singleton.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D304787",
      "email": "apehrson@mozilla.com",
      "hash": "f57a88af44ba8e36337758b1b7162e9cd33cafd1",
      "subject": "Bug 2044636 - Route MediaCapabilities WebRTC and encode paths through async codec support. r=media-playback-reviewers,webrtc-reviewers,bwc,padenot"
    },
    "D305691": {
      "author": "Adam Vandolder",
      "avatar": "https://www.gravatar.com/avatar/c8f5c62b0297904ec05a568c9f6a8987?d=identicon\u0026s=64",
      "cl": "D305691",
      "clUrl": "https://phabricator.services.mozilla.com/D305691",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D305691",
      "email": "avandolder@mozilla.com",
      "hash": "15f0184d199f6ddc0c2a26d2aa4bb9b5b03fbba0",
      "subject": "Bug 2020715 - Track potentially speculatable links. r=dom-core-reviewers,jjaschke"
    },
    "D307970": {
      "author": "Adam Vandolder",
      "avatar": "https://www.gravatar.com/avatar/c8f5c62b0297904ec05a568c9f6a8987?d=identicon\u0026s=64",
      "cl": "D307970",
      "clUrl": "https://phabricator.services.mozilla.com/D307970",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D307970",
      "email": "avandolder@mozilla.com",
      "hash": "493ad3010cd0a70694465f8e6e959fae05f7a3e2",
      "subject": "Bug 2020715 - Implement consider speculative loads for predicate rules. r=dom-core-reviewers,jjaschke"
    },
    "D308102": {
      "author": "Joel",
      "avatar": "https://www.gravatar.com/avatar/19fb93316dd80a96ca6fde8476d47847?d=identicon\u0026s=64",
      "cl": "D308102",
      "clUrl": "https://phabricator.services.mozilla.com/D308102",
      "description": "Add TopSiteWebNotification, a count badge on a tile's icon corner showing how\nmany web notifications the site has.\n\nThe icon lives in an overflow-clipped wrapper, so the badge cannot be a child of\nit and still hang over the corner. Rather than position the badge against the\ntile and derive the icon's corner from the tile's dimensions, wrap the icon in\nan unclipped .icon-stack that takes its size from it, and anchor the badge to\nthat. The badge offset is then just zero, which also disposes of the pixel-grid\nproblem the arithmetic had: the offsets no longer round, so nothing jumps when\nthe tile repaints on hover.\n\nAdd a \"Web notifications\" toggle to the Shortcuts section of the customize\npanel. It writes showWebNotifications and nothing else, so it is an ordinary\ndata-preference toggle rather than a bespoke handler. It is only offered when\nsystem.showWebNotifications says the feature exists for this profile; there is\nno point showing a control for a feature the user cannot have.\n\nBoth the badge and the hover card render only when the feature is enabled, and\nneither requires a redux store for a bare tile mount.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D308102",
      "email": "joelkelly@mozilla.com",
      "hash": "a54f79e825a0d070d54c862d4a79c0d605eb5dec",
      "subject": "Bug 2046946 - Add the top sites notification badge and customize toggle r=thecount,fluent-reviewers,bolsson"
    },
    "D308103": {
      "author": "Joel",
      "avatar": "https://www.gravatar.com/avatar/19fb93316dd80a96ca6fde8476d47847?d=identicon\u0026s=64",
      "cl": "D308103",
      "clUrl": "https://phabricator.services.mozilla.com/D308103",
      "description": "Add the TopSitesHoverCard shell and its notifications content card. The shell is\na small router: it applies the web notifications gate, then renders exactly one\ncontent variant from an ordered registry (hover-card-content.jsx).\n\nCardWebNotifications lists a site's most recent notifications.\n\nThe gate is isWebNotificationsEnabled, added next to the matcher so that every\nsurface asks the same question rather than each reaching into Prefs for its own\ncombination: the feature must exist for the profile and the user must want it.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D308103",
      "email": "joelkelly@mozilla.com",
      "hash": "ade1a83f543617477bd142b583d4210699db0ddd",
      "subject": "Bug 2046947 - Add the top sites notifications hover card r=thecount,fluent-reviewers,bolsson"
    },
    "D308756": {
      "author": "Andreas Pehrson",
      "avatar": "https://www.gravatar.com/avatar/906f005aaa08b2d109a3fa9e1b83000d?d=identicon\u0026s=64",
      "cl": "D308756",
      "clUrl": "https://phabricator.services.mozilla.com/D308756",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D308756",
      "email": "apehrson@mozilla.com",
      "hash": "abe6cd3ead8e5aada0ba7341b0cd81dc9b9ae152",
      "subject": "Bug 2048566 - Gate WebRTC GMP codec creation on plugin availability. r=webrtc-reviewers,bwc"
    },
    "D309551": {
      "author": "Andreas Pehrson",
      "avatar": "https://www.gravatar.com/avatar/906f005aaa08b2d109a3fa9e1b83000d?d=identicon\u0026s=64",
      "cl": "D309551",
      "clUrl": "https://phabricator.services.mozilla.com/D309551",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D309551",
      "email": "apehrson@mozilla.com",
      "hash": "a53d0867cbd629506409a6878624a59d60df69f0",
      "subject": "Bug 2044501 - Add moz-WPT for new media-capabilities supports-cache pref. r=media-playback-reviewers,alwu"
    },
    "D310268": {
      "author": "Mike Hommey",
      "avatar": "https://www.gravatar.com/avatar/59d6eb32b74180f9d3bde5a6f5c88eee?d=identicon\u0026s=64",
      "cl": "D310268",
      "clUrl": "https://phabricator.services.mozilla.com/D310268",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D310268",
      "email": "mhommey@mozilla.com",
      "hash": "39a1d8f0f736acd6cfc2d7a780fd864ee65746de",
      "subject": "Bug 2050344 - Update to NSPR_4_40_RTM.  UPGRADE_NSPR_RELEASE r=sylvestre"
    },
    "D310273": {
      "author": "Michael Farrell",
      "avatar": "https://www.gravatar.com/avatar/c4176fba43f2e49e2bdf73041c661a4e?d=identicon\u0026s=64",
      "cl": "D310273",
      "clUrl": "https://phabricator.services.mozilla.com/D310273",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D310273",
      "email": "micolous+git@gmail.com",
      "hash": "64476f896c9c23b0b0cfe8bf88a041e43aa95f20",
      "subject": "Bug 2052438 - Support VSCodium installed as a Snap on Linux. r=firefox-build-system-reviewers,glandium"
    },
    "D310745": {
      "author": "Mike Hommey",
      "avatar": "https://www.gravatar.com/avatar/5d5f37905f36ca9989f88861a702cff3?d=identicon\u0026s=64",
      "cl": "D310745",
      "clUrl": "https://phabricator.services.mozilla.com/D310745",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D310745",
      "email": "mh+mozilla@glandium.org",
      "hash": "a91a99a53ff3ae309b8f8473e4debdf54ec580a3",
      "subject": "Bug 2039416 - Update builders to rustc 1.95. r=firefox-build-system-reviewers,sergesanspaille"
    },
    "D310746": {
      "author": "Mike Hommey",
      "avatar": "https://www.gravatar.com/avatar/5d5f37905f36ca9989f88861a702cff3?d=identicon\u0026s=64",
      "cl": "D310746",
      "clUrl": "https://phabricator.services.mozilla.com/D310746",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D310746",
      "email": "mh+mozilla@glandium.org",
      "hash": "283d5481d38a6b215e87622c8af5edda7bb0f406",
      "subject": "Bug 1977771 - Update builders to clang 22. r=firefox-build-system-reviewers,sergesanspaille"
    },
    "D310973": {
      "author": "Vinit Jangir",
      "avatar": "https://www.gravatar.com/avatar/fefd8f903d056e848996192ae2f6d6c5?d=identicon\u0026s=64",
      "cl": "D310973",
      "clUrl": "https://phabricator.services.mozilla.com/D310973",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D310973",
      "email": "vinitjangir@aol.com",
      "hash": "7776d0e6c71d0601159d90b36fee2f65c99c6181",
      "subject": "Bug 2052970 - Change return type of AsyncPanZoomController::GetCompositorScrollUpdates from std::vector to nsTArray r=botond"
    },
    "D311577": {
      "author": "Luca Greco",
      "avatar": "https://www.gravatar.com/avatar/cb15f57474d95eb43c5d903ae3fa34ae?d=identicon\u0026s=64",
      "cl": "D311577",
      "clUrl": "https://phabricator.services.mozilla.com/D311577",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D311577",
      "email": "lgreco@mozilla.com",
      "hash": "86f7741b176e9d9a7da26f1afd3f485fe8db3e2d",
      "subject": "Bug 2053220 - Remove testing XPI base url pref from ThemesList.sys.mjs. r=dao,willdurand,desktop-theme-reviewers"
    },
    "D311746": {
      "author": "Joel",
      "avatar": "https://www.gravatar.com/avatar/19fb93316dd80a96ca6fde8476d47847?d=identicon\u0026s=64",
      "cl": "D311746",
      "clUrl": "https://phabricator.services.mozilla.com/D311746",
      "description": "Report every shown and closed web notification to the parent-process observer service, so chrome features such as the New Tab notifications feed can observe Service-Worker-backed and page (new Notification()) notifications uniformly.\n\nThe reporting lives in nsAlertsService rather than in the Notification API. ShowAlert wraps the caller's alert listener in a small nsIObserver that forwards every callback untouched and  additionally fires \"web-notification-shown\" on alertshow and \"web-notification-closed\" on alertfinished. An alert that was never shown (see ShouldShowAlert) still finishes, but reports nothing,  because no consumer was told it existed. Only alerts with an actionable principal are reported, which is what confines this to web content, and private-browsing alerts never are. The nsIAlertNotification is the observer subject.\n\nReporting is a platform capability rather than a feature of any one consumer, so it is on by default: NotifyObservers is inert when nothing has registered for the topics, so an uninterested profile pays a hash lookup per notification and nothing more.\n\nbrowser.alerts.capture.enabled is a kill switch, not a feature gate. Consumers gate themselves; the New Tab feed is the first, and does so with browser.newtabpage.activity-stream.system.showWebNotifications.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D311746",
      "email": "joelkelly@mozilla.com",
      "hash": "26bd9e647a32e45a63fe3cd446cd1fa9213ae1cc",
      "subject": "Bug 2054390 - Report shown/closed web notifications to chrome observers r=saschanaz"
    },
    "D311747": {
      "author": "Joel",
      "avatar": "https://www.gravatar.com/avatar/19fb93316dd80a96ca6fde8476d47847?d=identicon\u0026s=64",
      "cl": "D311747",
      "clUrl": "https://phabricator.services.mozilla.com/D311747",
      "description": "Add WebNotificationsFeed, the WebNotifications Redux slice, and the by-site\nmatcher. Web-notification-shown / web-notification-closed observers keep it\ncurrent, broadcasting ADDED/REMOVE.\n\nContent is a pure projection that dispatches intents (dismiss, click) to the\nparent; dismiss on the real close path (firing notificationclose).\n\nIntroduce the two prefs that gate the feature, keeping the feature gate and the\nuser preference distinct: system.showWebNotifications decides whether the\nfeature exists for this profile at all (Nimbus/about:config, default off), and\nshowWebNotifications is the user preference the customize toggle will write.\nThe feed observes only while both are set, and drops its captured state when\nthey stop being set, so content never renders a frozen snapshot. Because\nregistering the observers is what makes platform capture reach anyone, that\npair is the whole gate: nothing writes the platform pref.\n\nwebnotificationsfeed is registered as a system feed (default on), like\nweatherfeed. It is constructed for every profile and sits idle until the prefs\nsay otherwise; feed construction is a lifecycle detail, not the feature gate.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D311747",
      "email": "joelkelly@mozilla.com",
      "hash": "e0ba87884ec9b6333f4383995115ed60d2bb60a4",
      "subject": "Bug 2054391 - Capture web notifications into a live newtab slice r=thecount"
    },
    "D312105": {
      "author": "Adam Vandolder",
      "avatar": "https://www.gravatar.com/avatar/c8f5c62b0297904ec05a568c9f6a8987?d=identicon\u0026s=64",
      "cl": "D312105",
      "clUrl": "https://phabricator.services.mozilla.com/D312105",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D312105",
      "email": "avandolder@mozilla.com",
      "hash": "30ce11508e34b1b90ad2cd7e9592a811faa6ac72",
      "subject": "Bug 2052664 - Consider a history entry which is being replaced by a dropped link on it's tab as having user iteraction. r=dom-core-reviewers,tabbrowser-reviewers,jjaschke,jsudiaman"
    },
    "D312529": {
      "author": "Katherine Ye",
      "avatar": "https://www.gravatar.com/avatar/b9dc79a25003e0a18369f5227fb47734?d=identicon\u0026s=64",
      "cl": "D312529",
      "clUrl": "https://phabricator.services.mozilla.com/D312529",
      "description": "This also adds special handling for the case where modern line-clamp property\nis pref disabled, but we still want the legacy -webkit-line-clamp to work\nwithout exposing disabled line-clamp. Removed -webkit-line-clamp longhand.\n\nUpdate property database and style tests so -webkit-line-clamp is\nrepresented as a legacy shorthand instead of as a longhand. Teach test\nhelpers to skip disabled subproperties when handling shorthands.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D312529",
      "email": "kye@mozilla.com",
      "hash": "4889e720448b570304f42ff7ee6af52ef5c2f1f2",
      "subject": "Bug 2042994 - Parse and serialize -webkit-line-clamp as a legacy shorthand for line-clamp. r=AlaskanEmily,dshin,firefox-style-system-reviewers,emilio"
    },
    "D313153": {
      "author": "Valentin Gosu",
      "avatar": "https://www.gravatar.com/avatar/dedff9d4500fcbc5cdd1cd270f044b33?d=identicon\u0026s=64",
      "cl": "D313153",
      "clUrl": "https://phabricator.services.mozilla.com/D313153",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D313153",
      "email": "valentin.gosu@gmail.com",
      "hash": "7c675b516609efb6c6a2cb67703c1d12f43a0d76",
      "subject": "Bug 2056195 - Follow HTTPS AliasMode and connect to the target name even when the target does not have a HTTPS record r=necko-reviewers,kershaw"
    },
    "D313382": {
      "author": "Julian Seward",
      "avatar": "https://www.gravatar.com/avatar/5edb95922c89f29d92b7febcba5669de?d=identicon\u0026s=64",
      "cl": "D313382",
      "clUrl": "https://phabricator.services.mozilla.com/D313382",
      "description": "Currently, when generating trapping instructions, the assembler stack returns a\nFaultingCodeOffset that points to the first byte of the trapping instruction.\n\nThe purpose of this patch series is to replace FaultingCodeOffset with\nFaultingCodeRange, which carries both the offset and length.  This facilitates:\n\n* At trap-registration time, cross-checking the presented FaultingCodeRange\n  with the length that SummarizeTrapInstruction computes\n\n* When creating a trap and stackmap together, it provides a way to guarantee\n  that both have the correct offset, since the associated FaultingCodeRange\n  carries both the relevant offsets.\n\nA single patch that does all this would be huge and hard to review, since it\nwould be mostly renamings, interspersed with some changes in logic.\n\nInstead, the changes are in three patches.  This first patch is huge but it is\npurely renamings; literally nothing else:\n\n  FaultingCodeOffset        --\u003e   FaultingCodeRange\n  FaultingCodeOffsetPair    --\u003e   FaultingCodeRangePair\n  fco                       --\u003e   fcr\n  trackFCO                  --\u003e   trackFCR\n  fcoLogicCheck             --\u003e   fcrLogicCheck  (is unused?)\n\nThe result is a system that is functionally unchanged, but now operating on\nfake FaultingCodeRanges, that are really still FaultingCodeOffsets.  The next\npatch in the series converts them to real FaultingCodeRanges.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D313382",
      "email": "jseward@acm.org",
      "hash": "fb81217fc9e32ae79b88033de04255b390c4cde5",
      "subject": "Bug 2052811 - part 1: rename FaultingCodeOffset to FaultingCodeRange.  r=bvisness."
    },
    "D313383": {
      "author": "Julian Seward",
      "avatar": "https://www.gravatar.com/avatar/5edb95922c89f29d92b7febcba5669de?d=identicon\u0026s=64",
      "cl": "D313383",
      "clUrl": "https://phabricator.services.mozilla.com/D313383",
      "description": "This patch contains two elements:\n\n(1) It converts the \"fake\" FaultingCodeRange to a real range, unfortunately\n    right at the end of the patch.\n\n(2) For x86_32 and x86_64 only, changes every place that reads\n    ::currentOffset() before an instruction, to also read it afterwards, and\n    bake that into the resulting FaultingCodeOffset.\n\nFor (1), FaultingCodeRange now has two (non-default) constructors, but one or\nthe other is always #ifdef'd out.  For x86_32 and x86_64 -- the only\nvariable-length targets -- the constructor takes two offsets, that of the insn\nand of the first byte after it.\n\nAll other targets (arm{32,64}, rv64, etc) have fixed insn lengths and so there\nis only a one-argument constructor available.  It knows the length of an\ninstruction on the target and bakes that in as necessary.  This means that, on\nthese targets, there are no changes analogous to (2) above.\n\nFor (2) on x86_32 and x86_64, the changes are tedious but mechanical.  The\nstandard construction is:\n\n  auto before = masm.currentOffset();\n  masm.make_me_a_trapping_insn();\n  auto after = masm.currentOffset();\n  return FaultingCodeRange(before, after);\n\nA side-effect of this ifdef'd-dual-constructor scheme is that it is impossible\nto create FaultingCodeRanges in target-independent code.  Such attempts will\nlead to compilation failure for targets on the other side of the\nfixed-vs-variable-length instruction fence, because a constructor of the\ncorrect arity will not be available.\n\nThis is a good thing: the most reliable way to get a FaultingCodeRange is from\na low-level, target-specific assembler method.  Trying to do it at a higher\nlevel by calling `MacroAssembler::currentOffset()` risks reading the offset too\nlate (or early); it's hard to be sure that some part of the stack hasn't\nslipped in extra instructions before/after the faulting one.\n\nThe new instruction-length information is not used in this patch; the patch\nmerely facilitates its collection.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D313383",
      "email": "jseward@acm.org",
      "hash": "4c9f0707a38c46211faec1cc5d26e5fc52beee38",
      "subject": "Bug 2052811 - part 2: provide a proper definition for FaultingCodeRange.  r=bvisness."
    },
    "D313384": {
      "author": "Julian Seward",
      "avatar": "https://www.gravatar.com/avatar/5edb95922c89f29d92b7febcba5669de?d=identicon\u0026s=64",
      "cl": "D313384",
      "clUrl": "https://phabricator.services.mozilla.com/D313384",
      "description": "Finally, this patch puts the collected instruction-length information to use:\nwhen registering a trap, a FaultingCodeRange must be presented, and that is\nchecked against the length computed for the instruction by\nSummarizeTrapInstruction.  That requires the following components:\n\n(1) New method\n    MacroAssembler::appendAndVerify(Trap, TrapMachineInsn,\n                                    FaultingCodeRange, TrapSiteDesc)\n    that actually does the cross-checking.  This is the new official way to\n    register a trapping instruction in the metadata and replaces\n    AssemblerShared::append in that role.\n\n(2) Per (1), renaming of many calls from AssemblerShared::append to\n    MacroAssembler::appendAndVerify.\n\n(3) New\n    class InstructionBytesFromMasm : public wasm::InstructionBytes\n    that provides a way for SummarizeTrapInstruction to read bytes from an\n    assembler buffer, as required by (1).\n\n(4) New method MacroAssembler::getByteAtOffset, that fetches bytes from an\n    assembler buffer, in support of (3).  This involves some ugly\n    target-specifics since different targets use different arrangements for\n    assembler buffers.\n\n(5) New method Assembler::readableSize, used for range-checking in (4).\n    Assembler::size() isn't usable for this because on some targets it\n    MOZ_CRASHes if the assembler currently has un-committed constant pools.\n    ::readableSize returns just the committed size.  Since we don't need (3) to\n    be able to look inside constant pools, this is fine.\n\n(6) There are a few places where we create the trap for an instruction before\n    the instruction itself.  This causes (1) to assert because it requires\n    reading instruction bytes that don't exist in the buffer yet, per (5).\n    These places have been fixed to first generate the instruction and then\n    register the trap.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D313384",
      "email": "jseward@acm.org",
      "hash": "4ab0eec757a7ed70c9bfb03eb855b738a31990f2",
      "subject": "Bug 2052811 - part 3: Use FaultingCodeRange to cross-check SummarizeTrapInstruction.  r=bvisness."
    },
    "D313433": {
      "author": "stransky",
      "avatar": "https://www.gravatar.com/avatar/1ad575baf124ff5058f4d44d5b066a29?d=identicon\u0026s=64",
      "cl": "D313433",
      "clUrl": "https://phabricator.services.mozilla.com/D313433",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D313433",
      "email": "stransky@redhat.com",
      "hash": "defbb0ab5826dce1a4d8a498160850da2e16487d",
      "subject": "Bug 2046323 [Wayland] Use smart pointers for Wayland interfaces r=emilio"
    },
    "D313466": {
      "author": "Marco Bonardo",
      "avatar": "https://www.gravatar.com/avatar/06a01db28e1c2c2e9d5cd9dd5c4110d8?d=identicon\u0026s=64",
      "cl": "D313466",
      "clUrl": "https://phabricator.services.mozilla.com/D313466",
      "description": "In the parent process, ConcurrentConnection opening places.sqlite concurrently\nwith EnsureConnection() causes WAL-mode lock contention (SQLITE_LOCKED or\nSQLITE_IOERR), which bypasses busy_timeout. Defer the CC open until\nTOPIC_PLACES_INIT_COMPLETE, which fires only after the main connection is\nestablished. A 10s fallback timer handles the case where the notification\nnever arrives.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D313466",
      "email": "mbonardo@mozilla.com",
      "hash": "3372dfb93854b6e38b3bb98414e95396954ce49b",
      "subject": "Bug 2054381 - Fix ConcurrentConnection LOCKED race on Places startup. r=places-reviewers,daisuke"
    },
    "D313887": {
      "author": "mike a",
      "avatar": "https://www.gravatar.com/avatar/fdb71788c694eea6a9e8a29cddd6e606?d=identicon\u0026s=64",
      "cl": "D313887",
      "clUrl": "https://phabricator.services.mozilla.com/D313887",
      "description": "Adding NoAccount state for the onboarding to distinguish between fxa\nmanager initializing and having no account at the app start.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D313887",
      "email": "mavduevskiy@mozilla.com",
      "hash": "5a1f79236f4d3df6b63bbfc198e20d8743714c96",
      "subject": "Bug 2057032 - Make vpn onboarding wait past WarmingUp r=android-reviewers,jonalmeida"
    },
    "D313895": {
      "author": "Alexandre Poirot",
      "avatar": "https://www.gravatar.com/avatar/da6d769a219551f618ed95bff2c36aca?d=identicon\u0026s=64",
      "cl": "D313895",
      "clUrl": "https://phabricator.services.mozilla.com/D313895",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D313895",
      "email": "poirot.alex@gmail.com",
      "hash": "ee4dd00e853d252b0263c2e16d72574ffc4946bf",
      "subject": "Bug 2057352 - Only accept modifying existing attributes in nested resource updates. r=devtools-reviewers,nchevobbe"
    },
    "D313995": {
      "author": "Alexandre Poirot",
      "avatar": "https://www.gravatar.com/avatar/da6d769a219551f618ed95bff2c36aca?d=identicon\u0026s=64",
      "cl": "D313995",
      "clUrl": "https://phabricator.services.mozilla.com/D313995",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D313995",
      "email": "poirot.alex@gmail.com",
      "hash": "2175a4c97647545061b7a03056f4d22515b06a2c",
      "subject": "Bug 2057366 - Match target's with their content process. r=devtools-reviewers,nchevobbe"
    },
    "D314167": {
      "author": "Sammy Khamis",
      "avatar": "https://www.gravatar.com/avatar/8fe753dbe031a3e6a198606619cb5201?d=identicon\u0026s=64",
      "cl": "D314167",
      "clUrl": "https://phabricator.services.mozilla.com/D314167",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D314167",
      "email": "skhamis@mozilla.com",
      "hash": "2f568b5c843830c1a2665a7da4208b1faada67e3",
      "subject": "Bug 2049002: Add dismissable button to promo button r=sync-reviewers,fluent-reviewers,desktop-theme-reviewers,bolsson,akulyk,dao"
    },
    "D314168": {
      "author": "Sammy Khamis",
      "avatar": "https://www.gravatar.com/avatar/8fe753dbe031a3e6a198606619cb5201?d=identicon\u0026s=64",
      "cl": "D314168",
      "clUrl": "https://phabricator.services.mozilla.com/D314168",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D314168",
      "email": "skhamis@mozilla.com",
      "hash": "271f0dabba299e53140e07166613343aba8f3abe",
      "subject": "Bug 2057674: Add dismissable sync promo to app menu history panel r=sync-reviewers,fluent-reviewers,desktop-theme-reviewers,bolsson,tgiles"
    },
    "D314211": {
      "author": "Sylvestre Ledru",
      "avatar": "https://www.gravatar.com/avatar/fb0fd07485efdfc05e02987075fdbab0?d=identicon\u0026s=64",
      "cl": "D314211",
      "clUrl": "https://phabricator.services.mozilla.com/D314211",
      "description": "The \"Experimenter Docs\" link in toolkit/components/nimbus/docs/index.md pointed to https://mozilla.github.io/experimenter-docs/desktop-feature-api, which 301-redirects to https://experimenter.info/desktop-feature-api and returns HTTP 404 (the reported \"Page Not Found\"). Updated it to the current location https://experimenter.info/platform-guides/desktop/feature-api (\"Feature API | Mozilla Nimbus Documentation\"), which loads correctly.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D314211",
      "email": "sylvestre@debian.org",
      "hash": "77b051668e0991c433a7fbca569a3498f6c66b24",
      "subject": "Bug 2051007 - Fix broken \"Experimenter Docs\" link in Nimbus docs r=firefox-source-docs-reviewers,marco DONTBUILD"
    },
    "D314471": {
      "author": "unifolia",
      "avatar": "https://www.gravatar.com/avatar/4694b477c490cf60cd24b4c7467bcce3?d=identicon\u0026s=64",
      "cl": "D314471",
      "clUrl": "https://phabricator.services.mozilla.com/D314471",
      "description": "Requirement: `browser.smartwindow.autoTabGrouping.enabled` in a Smart Window\n\nDifferential Revision: https://phabricator.services.mozilla.com/D314471",
      "email": "jlewis@mozilla.com",
      "hash": "e3daca6219fc78576a91f69a09eccc86452372c9",
      "subject": "Bug 2058270 - Gate Smart Window ATG/'Organize Tabs' button to minimum user RAM r=echa,mzhang"
    },
    "D314601": {
      "author": "Nicolas Silva",
      "avatar": "https://www.gravatar.com/avatar/a375423648d373880fdd9e4eccc6b920?d=identicon\u0026s=64",
      "cl": "D314601",
      "clUrl": "https://phabricator.services.mozilla.com/D314601",
      "description": "The key elements bound to wrCaptureCmd and wrToggleCaptureSequenceCmd were\nalways in the document. ShortcutUtils.isSystem only looks for a matching key\nelement, so Ctrl+Shift+3 and Ctrl+Shift+6 counted as Firefox shortcuts and could\nnot be assigned to WebExtension commands on macOS, even though the commands they\nare bound to do nothing unless gfx.webrender.debug.enable-capture is set (which\nonly happens in builds configured with --enable-webrender-debugger). The key\nhandler also swallowed the key events before finding out that the command is\ndisabled.\n\nRegister the keys dynamically when captures are enabled instead. They need their\nown keyset because a keyset's handlers are built when it is inserted into the\ndocument.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D314601",
      "email": "nsilva@mozilla.com",
      "hash": "04f509798db049429d2f45a02e0a1439d536530a",
      "subject": "Bug 2054403 - Only register the WebRender capture shortcuts when captures are enabled. r=firefox-desktop-core-reviewers ,Gijs"
    },
    "D314665": {
      "author": "Emma Zuehlcke",
      "avatar": "https://www.gravatar.com/avatar/46f58cc04758e80835820f0f1d5646bb?d=identicon\u0026s=64",
      "cl": "D314665",
      "clUrl": "https://phabricator.services.mozilla.com/D314665",
      "description": "Removes the Cookie Banner Blocker section and subview from the protections\npanel, its CSS, its Fluent strings, and the two about:preferences pref\nregistrations. The preferences.ftl strings and the privacy.mjs registrations\nwere already orphaned; the prefs UI row was removed in an earlier bug.\n\nAlso removes the two protections-popup Glean events that only the deleted\ntoggle recorded, together with their Legacy Telemetry mirror objects.\n\nDrive-by: browser_privacy_gpc.js had a copy-pasted header comment claiming it\ntests the cookie banner UI; it tests Global Privacy Control.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D314665",
      "email": "emz@mozilla.com",
      "hash": "0d3c11d148afac5c13cea446bb575e1694b10173",
      "subject": "Bug 2058143 - Part 1: Remove the cookie banner handling UI from the protections panel and preferences. r=desktop-theme-reviewers,mstriemer,chutten,timhuang"
    },
    "D314666": {
      "author": "Emma Zuehlcke",
      "avatar": "https://www.gravatar.com/avatar/46f58cc04758e80835820f0f1d5646bb?d=identicon\u0026s=64",
      "cl": "D314666",
      "clUrl": "https://phabricator.services.mozilla.com/D314666",
      "description": "Removes the cookieBannerDetected and cookieBannerHandled triggers, the cookie\nbanner feature callout, the about:privatebrowsing promo and its asset, the\nCOOKIE_BANNERS promo type, and the three cookiebanners.* entries from the\nSET_PREF allow-list.\n\nNotes for reviewers:\n\n- BrowserUtils.PromoType keeps a gap at 5 rather than renumbering, matching the\n  existing vacancy at 3. The values cross the parent/content boundary, so\n  renumbering would be a silent behaviour change.\n- PB_NEWTAB_COOKIE_BANNERS_PROMO was the only type: \"default\" pb_newtab\n  message, so about:privatebrowsing now renders without a default promo. That\n  is intended.\n- browser_privatebrowsing_about_default_promo.js and _nimbus_dismiss.js were\n  rewritten rather than deleted, to preserve the only coverage of\n  handlePromoOnPreload() cross-tab dismissal and the deferred message load path.\n- shouldShowPromo() still throws on an unrecognised promo type, so a stale\n  enrolled message naming COOKIE_BANNERS would reject the ShouldShowPromo\n  query. This hazard pre-exists: the schemas also permit \"OTHER\", which is\n  likewise absent from PromoType. Left alone to keep this patch a removal.\n- test_shouldShowCookieBannersPromo was the only coverage of\n  showForEnterprise: true, which is now untested.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D314666",
      "email": "emz@mozilla.com",
      "hash": "4d394fd5bdb4a3ebffbebb8541a6fda7da1dbd1c",
      "subject": "Bug 2058143 - Part 2: Remove the cookie banner messaging surfaces and private browsing promo. r=omc-reviewers,desktop-theme-reviewers,joel,mstriemer,emcminn"
    },
    "D314667": {
      "author": "Emma Zuehlcke",
      "avatar": "https://www.gravatar.com/avatar/46f58cc04758e80835820f0f1d5646bb?d=identicon\u0026s=64",
      "cl": "D314667",
      "clUrl": "https://phabricator.services.mozilla.com/D314667",
      "description": "Removes the Cookie Banner Blocker preference, its settings-search entry, the\nNimbus cookie-banners feature and its Glean metric, and the stale exposure\nrecord left in BrowserFragment.\n\nThe DataStore cleanup migration added in bug 2053618 is kept and now uses the\nliteral file name, because the android-components class it imported the name\nfrom is removed in Part 5. Dropping it would strand an orphaned preferences\nfile on every existing install.\n\nThe now-unused string is deleted outright, per\nhttps://firefox-source-docs.mozilla.org/mobile/android/fenix/Working-with-Strings.html#removing-unused-strings\nandroid-l10n imports strings per branch, so removing them on main is safe.\n\nAlso removes the cookie-banners entry from the checked-in experimenter\nmanifest, and the Cookie Banner Blocker assertion in SettingsPrivacyTest,\nwhich would otherwise fail now the row is gone.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D314667",
      "email": "emz@mozilla.com",
      "hash": "b8e655f8389c49604b8fa0cec28459bd25e9a7c4",
      "subject": "Bug 2058143 - Part 3: Remove the cookie banner handling UI from Fenix. r=android-reviewers,android-l10n-reviewers,parker,gl"
    },
    "D314668": {
      "author": "Emma Zuehlcke",
      "avatar": "https://www.gravatar.com/avatar/46f58cc04758e80835820f0f1d5646bb?d=identicon\u0026s=64",
      "cl": "D314668",
      "clUrl": "https://phabricator.services.mozilla.com/D314668",
      "description": "Removes the cookie banner settings screen, the reducer store and its details\npanel, the toolbar CFR, the AppState/AppAction/AppReducer plumbing, the SUMO\ntopic and the Glean metrics and cookie-banner-report-site ping.\n\nAdds a one-time migration deleting the report_site_domains_preferences\nDataStore and the five obsolete cookie banner preference keys, mirroring the\nequivalent Fenix cleanup. Focus previously had no such cleanup.\n\nThe now-unused strings are deleted outright, per\nhttps://firefox-source-docs.mozilla.org/mobile/android/fenix/Working-with-Strings.html#removing-unused-strings\nandroid-l10n imports strings per branch, so removing them on main is safe.\nNote mobile/android/focus-android/docs/Removing-strings.md still documents the\nolder moz:removedIn process and is stale; filed separately.\n\nReviewer note: removing the cookie_banner_exception ComposeView from\ndialog_tracking_protection_sheet.xml re-anchors enhanced_tracking to\nsecurity_info. The removed view carried a 28dp top margin, so the gap above\nthe ETP switch is now the layout's usual 16dp. This inflates cleanly, so\nplease sanity-check the panel spacing visually.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D314668",
      "email": "emz@mozilla.com",
      "hash": "5715ac69dc65a1b96c4b8cad378284bd9661e2f8",
      "subject": "Bug 2058143 - Part 4: Remove the cookie banner reducer from Focus. r=android-reviewers,android-l10n-reviewers,parker,gl"
    },
    "D314670": {
      "author": "Emma Zuehlcke",
      "avatar": "https://www.gravatar.com/avatar/46f58cc04758e80835820f0f1d5646bb?d=identicon\u0026s=64",
      "cl": "D314670",
      "clUrl": "https://phabricator.services.mozilla.com/D314670",
      "description": "Removes the concept-engine cookiehandling package, GeckoCookieBannersStorage,\nReportSiteDomainsRepository, the CookieBannerHandlingMode and\nCookieBannerHandlingStatus enums, EngineSession.hasCookieBannerRuleForSession,\nthe Settings.cookieBannerHandling* settings, CookieBannerAction and\nSessionState.cookieBanner.\n\nThis is a breaking change for the published components; there is no\nreplacement API.\n\nFakeEngineSession in Fenix is updated in this commit rather than Part 3\nbecause hasCookieBannerRuleForSession is abstract: removing either the member\nor its override alone fails to compile.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D314670",
      "email": "emz@mozilla.com",
      "hash": "3c57b6d1a48256af5667166c08695a50415d0b12",
      "subject": "Bug 2058143 - Part 5: Remove the cookie banner handling API from android-components. r=android-reviewers,gl"
    },
    "D314671": {
      "author": "Emma Zuehlcke",
      "avatar": "https://www.gravatar.com/avatar/46f58cc04758e80835820f0f1d5646bb?d=identicon\u0026s=64",
      "cl": "D314671",
      "clUrl": "https://phabricator.services.mozilla.com/D314671",
      "description": "Removes ContentBlocking.CookieBannerMode and CBCookieBannerMode, the\nContentBlocking.Settings cookie banner getters, setters and builder methods,\nGeckoSession.ContentDelegate.onCookieBannerDetected and onCookieBannerHandled,\nGeckoSession.hasCookieBannerRuleForBrowsingContextTree, and the four\nStorageController cookie banner domain methods, along with the JS side that\nserviced them.\n\nThis is an outright removal with no prior deprecation and no replacement, as\nthe underlying Gecko feature is being deleted. Embedders using these APIs will\nneed to drop the calls.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D314671",
      "email": "emz@mozilla.com",
      "hash": "1d0c7918b466171878b8a1e1a09699bca1b3231f",
      "subject": "Bug 2058143 - Part 6: Remove the cookie banner handling API from GeckoView. r=geckoview-reviewers,android-reviewers,owlish"
    },
    "D314672": {
      "author": "Emma Zuehlcke",
      "avatar": "https://www.gravatar.com/avatar/46f58cc04758e80835820f0f1d5646bb?d=identicon\u0026s=64",
      "cl": "D314672",
      "clUrl": "https://phabricator.services.mozilla.com/D314672",
      "description": "Removes CLEAR_COOKIE_BANNER_EXCEPTION and CLEAR_COOKIE_BANNER_EXECUTED_RECORD,\ntheir two cleaners, and their use from the Clear-Site-Data header path,\nSanitizer and SiteDataTestUtils.\n\nBits 26 and 27 are left as permanent holes rather than renumbering the\nremaining flags, following the precedent of bug 2006028, which removed\nCLEAR_PREDICTOR_NETWORK_DATA and left bit 8 vacant. Renumbering would silently\nchange the meaning of flag values held by out-of-tree callers. The interface\nuuid is likewise not revved, matching that precedent.\n\nAll JS consumers land here with the IDL change: in JS, `x | undefined`\nevaluates to `x`, so a stale reference would silently become a no-op rather\nthan throwing.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D314672",
      "email": "emz@mozilla.com",
      "hash": "fa5f9508217e306a1ab625fac100d6d066cba30c",
      "subject": "Bug 2058143 - Part 7: Remove the cookie banner clear-data integration. r=timhuang"
    },
    "D314673": {
      "author": "Emma Zuehlcke",
      "avatar": "https://www.gravatar.com/avatar/46f58cc04758e80835820f0f1d5646bb?d=identicon\u0026s=64",
      "cl": "D314673",
      "clUrl": "https://phabricator.services.mozilla.com/D314673",
      "description": "Deletes toolkit/components/cookiebanners and everything that reached into it:\nthe static and runtime prefs, the JSWindowActor registration, the\nnsILoadInfo.hasInjectedCookieForCookieBannerHandling plumbing and its IPC\nserialization, the Glean and Legacy Telemetry registrations, the Nimbus\nfeature, and the shipped cookie-banner-rules-list Remote Settings dump.\n\nNotes for reviewers:\n\n- Removing the cookiebanners pref group from modules/libpref/moz.build and the\n  StaticPrefList.yaml block must happen together; a mismatch fails at build\n  time rather than lint time.\n- Deleting the local dump does not decommission the main/cookie-banner-rules-list\n  Remote Settings collection. ESR and older clients still sync it live, so the\n  server-side collection needs to outlive them and be retired separately.\n- docs/overview/gecko.md used nsCookieBannerService purely as its worked\n  example of XPCOM component instantiation; the diagram is kept with a service\n  that still exists.\n- Recorded perf pages will now show cookie banners, since hooks_recording.py no\n  longer sets the dismissal prefs. Worth a follow-up if that shifts baselines.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D314673",
      "email": "emz@mozilla.com",
      "hash": "2213eda366ff56e4584d1372a4b975b8cbb2d101",
      "subject": "Bug 2058143 - Part 8: Remove the cookie banner handling implementation. r=necko-reviewers,ipc-reviewers,frontend-codestyle-reviewers,chutten,kershaw,mossop,timhuang"
    },
    "D314674": {
      "author": "Emma Zuehlcke",
      "avatar": "https://www.gravatar.com/avatar/46f58cc04758e80835820f0f1d5646bb?d=identicon\u0026s=64",
      "cl": "D314674",
      "clUrl": "https://phabricator.services.mozilla.com/D314674",
      "description": "ContentPrefService2._execStmts awaited the database connection outside its\ntry/catch. Callers such as removeByName() do not consume the promise it\nreturns, so a connection failure surfaced as an unhandled rejection instead of\nreaching onError/onDone.\n\nPart 10 calls removeByName() from a synchronous profile data migration, which\nopens the database late enough that the connection can be closed before the\nremoval lands. Without this, every xpcshell test that runs the migrations fails\nwith \"uncaught rejection: Connection is not open.\"\n\nDifferential Revision: https://phabricator.services.mozilla.com/D314674",
      "email": "emz@mozilla.com",
      "hash": "79573d367476b2a5fcbafcd56716c552ec78e8ac",
      "subject": "Bug 2058143 - Part 9: Report content pref connection failures through the callback. r=timhuang"
    },
    "D314675": {
      "author": "Emma Zuehlcke",
      "avatar": "https://www.gravatar.com/avatar/46f58cc04758e80835820f0f1d5646bb?d=identicon\u0026s=64",
      "cl": "D314675",
      "clUrl": "https://phabricator.services.mozilla.com/D314675",
      "description": "Per-site cookie banner exceptions were stored as content prefs under the names\n\"cookiebanner\" and \"cookiebannerprivate\". The private one was persisted to disk\nwhenever a domain pref was set with persistInPrivateBrowsing, so both need\nclearing. Nothing removes them once the feature is gone, so they would sit in\ncontent-prefs.sqlite indefinitely.\n\nAdds profile data version 179, removing both content pref names across all\ndomains and clearing any user values left under the cookiebanners. and\nbrowser.promo.cookiebanners. branches, whose defaults no longer exist.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D314675",
      "email": "emz@mozilla.com",
      "hash": "17202d7987df5100eb4e9ad34b7cfc887535e091",
      "subject": "Bug 2058143 - Part 10: Clear cookie banner data from existing profiles. r=firefox-desktop-core-reviewers ,mossop,timhuang"
    },
    "D314723": {
      "author": "Emilio Cobos Álvarez",
      "avatar": "https://www.gravatar.com/avatar/1d91d22a4892f16f744b31fd4286144e?d=identicon\u0026s=64",
      "cl": "D314723",
      "clUrl": "https://phabricator.services.mozilla.com/D314723",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D314723",
      "email": "emilio@crisal.io",
      "hash": "be37a7a2aaafd27556dd23f6998bff139df2f0f6",
      "subject": "Bug 2054691 - Validate cross-process paint dependencies. r=nika,layout-reviewers,dholbert"
    },
    "D314743": {
      "author": "mike a",
      "avatar": "https://www.gravatar.com/avatar/fdb71788c694eea6a9e8a29cddd6e606?d=identicon\u0026s=64",
      "cl": "D314743",
      "clUrl": "https://phabricator.services.mozilla.com/D314743",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D314743",
      "email": "mavduevskiy@mozilla.com",
      "hash": "525c0e60f9998377318e98e45f32acbb2ea8c9f0",
      "subject": "Bug 2058646 - Account initialization clean up r=jonalmeida,android-reviewers,gmalekpour"
    },
    "D314782": {
      "author": "Gijs Kruitbosch",
      "avatar": "https://www.gravatar.com/avatar/410fad5de3812b3810955d277445bced?d=identicon\u0026s=64",
      "cl": "D314782",
      "clUrl": "https://phabricator.services.mozilla.com/D314782",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D314782",
      "email": "gijskruitbosch@gmail.com",
      "hash": "ab458fef3061fec9b71d2de53fbc2de2d23e48d6",
      "subject": "Bug 2058736 - document profile data upgrade/migration steps as a \"how to\", r=firefox-desktop-core-reviewers ,mossop"
    },
    "D314886": {
      "author": "Jan Grulich",
      "avatar": "https://www.gravatar.com/avatar/12820c2f3213ea73507ca5f0855250f1?d=identicon\u0026s=64",
      "cl": "D314886",
      "clUrl": "https://phabricator.services.mozilla.com/D314886",
      "description": "This fixes two security issues reported against Firefox:\n- Heap buffer overflow read in spa_pod_parser_getv (Bug 2054620)\n- Heap buffer overflow read via truncated SPA choice pod because of\n  missing body-size validation in spa_pod_get_values (Bug 2054619)\n\nDifferential Revision: https://phabricator.services.mozilla.com/D314886",
      "email": "jgrulich@redhat.com",
      "hash": "2c5f507b08ad5ac688cd2fb5065fa57f4cd50918",
      "subject": "Bug 2054620 - Update vendored PipeWire to 1.6.8 r=webrtc-reviewers,pehrsons"
    },
    "D314977": {
      "author": "Simon Chopin",
      "avatar": "https://www.gravatar.com/avatar/79a1456294d9cce5b365cad405a04bcc?d=identicon\u0026s=64",
      "cl": "D314977",
      "clUrl": "https://phabricator.services.mozilla.com/D314977",
      "description": "Due to some slightly misguided suggestion from yours truly, the first\nattempt at stabilisation ended up still reading an actual pointer value\nrather than the data pointed to.\n\nIn addition to fixing the code, this patch separates it into discrete\nfunctions for testability, adds tests, and guards against some possible\nweirdness, e.g. if in the future the SID ends up not being at the end of\nthe payload.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D314977",
      "email": "schopin@mozilla.com",
      "hash": "2f8b693abca7ef45e62ff90ba5828f676ca50d0b",
      "subject": "Bug 2058991 - Make Windows InstallTime crash annotation stable, take 2 r=yjuglaret,afranchuk"
    },
    "D315017": {
      "author": "André Bargull",
      "avatar": "https://www.gravatar.com/avatar/6be4b6c59770ed77e331a06d11a27123?d=identicon\u0026s=64",
      "cl": "D315017",
      "clUrl": "https://phabricator.services.mozilla.com/D315017",
      "description": "Changes:\n- Implement `MacroAssembler::flush()` which calls `Assember::flush` mirroring arm32/64.\n- Add `Assembler::flush()` which calls `m_buffer.flushPool()`, also mirroring arm32/64.\n- `Assembler::flush()` and `Assembler::flushBuffer()` both flush the assembler buffer,\n  no idea why there are two identical methods for arm32/64.\n- In `Assembler::finish()` and `Assembler::appendRawCode()` explictly call `flush()` to match arm32/64.\n- Also update `Assembler::appendRawCode()` to call `m_buffer.appendRawCode` to match arm32/64.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D315017",
      "email": "andre.bargull@gmail.com",
      "hash": "2a5ebd48aed43ab21982cf8e3d18c2d54ba6093b",
      "subject": "Bug 2058944: Implement MacroAssembler::flush() for riscv64. r=spidermonkey-reviewers,jandem."
    },
    "D315026": {
      "author": "Hansheng Zhao",
      "avatar": "https://www.gravatar.com/avatar/bb4b7afce83991b468a55f9c309cdb00?d=identicon\u0026s=64",
      "cl": "D315026",
      "clUrl": "https://phabricator.services.mozilla.com/D315026",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D315026",
      "email": "hzhao@mozilla.com",
      "hash": "4c6076be4cef3427b7c0843def5d276a04cefe28",
      "subject": "Bug 2057317 - Provide the New Tab context id to the Mozilla Ads Client r=mconley"
    },
    "D315044": {
      "author": "Yubin Jamora",
      "avatar": "https://www.gravatar.com/avatar/c21ec870d5a27b600be6b5b58aba1a58?d=identicon\u0026s=64",
      "cl": "D315044",
      "clUrl": "https://phabricator.services.mozilla.com/D315044",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D315044",
      "email": "yjamora@mozilla.com",
      "hash": "6e3184118ccc0997137cceb7f465223e3191eb28",
      "subject": "Bug 2058329 - Add localized strings and about:smartwindowtasks link in Monitor inline chat message r=ngrato,fluent-reviewers,bolsson,ai-security-reviewers,tetchart"
    },
    "D315080": {
      "author": "Reem H",
      "avatar": "https://www.gravatar.com/avatar/6ff5d1766c0abbbc7f56fb248b548de3?d=identicon\u0026s=64",
      "cl": "D315080",
      "clUrl": "https://phabricator.services.mozilla.com/D315080",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D315080",
      "email": "42309026+reemhamz@users.noreply.github.com",
      "hash": "e01da02fcdb9408eb5f92843341403816685f90f",
      "subject": "Bug 2018699 - Migrate simple unit tests to Jest/RTL. r=thecount"
    },
    "D315132": {
      "author": "Joel",
      "avatar": "https://www.gravatar.com/avatar/19fb93316dd80a96ca6fde8476d47847?d=identicon\u0026s=64",
      "cl": "D315132",
      "clUrl": "https://phabricator.services.mozilla.com/D315132",
      "description": "Add double-checkmark-16.svg from acorn-icons v1.103.0 and declare it in the\nshared desktop jar so it is available as chrome://global/skin/icons/.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D315132",
      "email": "joelkelly@mozilla.com",
      "hash": "27a65fe1bc37b6d8461a1c9edcee2540dd27aeae",
      "subject": "Bug 2046947 - Vendor the double-checkmark icon from acorn-icons r=desktop-theme-reviewers,dao"
    },
    "D315146": {
      "author": "Sammy Khamis",
      "avatar": "https://www.gravatar.com/avatar/8fe753dbe031a3e6a198606619cb5201?d=identicon\u0026s=64",
      "cl": "D315146",
      "clUrl": "https://phabricator.services.mozilla.com/D315146",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D315146",
      "email": "skhamis@mozilla.com",
      "hash": "32607ec9aaf2f0f3c1f0632f67b90fe45f39e4dc",
      "subject": "Bug 2059270: Add dismissable sync promo to app menu bookmarks panel r=sync-reviewers,fluent-reviewers,places-reviewers,desktop-theme-reviewers,Standard8,tgiles,bolsson"
    },
    "D315258": {
      "author": "Nicolas Chevobbe",
      "avatar": "https://www.gravatar.com/avatar/f942478f2eaeb6cc42142cdd661976a7?d=identicon\u0026s=64",
      "cl": "D315258",
      "clUrl": "https://phabricator.services.mozilla.com/D315258",
      "description": "Those are displayed in the \"Pseudo elements\" section when a `\u003cselect\u003e` element\nis selected.\nWe can also have them displayed in \"Inherited\" sections in the Rules view.\nAdd test cases to cover this.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D315258",
      "email": "nchevobbe@mozilla.com",
      "hash": "a14690fb3b6bdd61607097e2cf911b823ca1767f",
      "subject": "Bug 2042839 - [devtools] Display ::picker rules in Rules view. r=devtools-reviewers,bomsy."
    },
    "D315259": {
      "author": "Nicolas Chevobbe",
      "avatar": "https://www.gravatar.com/avatar/f942478f2eaeb6cc42142cdd661976a7?d=identicon\u0026s=64",
      "cl": "D315259",
      "clUrl": "https://phabricator.services.mozilla.com/D315259",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D315259",
      "email": "nchevobbe@mozilla.com",
      "hash": "d7855b78866cd05e44d4a79bc0e39881ab1a69dc",
      "subject": "Bug 2042839 - [devtools] Handle ::picker rules in computed panel matched selectors. r=devtools-reviewers,bomsy."
    },
    "D315279": {
      "author": "Stephen A Pohl",
      "avatar": "https://www.gravatar.com/avatar/ceeb157ce698ad8c3e5be7c1317498bf?d=identicon\u0026s=64",
      "cl": "D315279",
      "clUrl": "https://phabricator.services.mozilla.com/D315279",
      "description": "On macOS, Shift+Option+ArrowDown/ArrowUp is interpreted by AppKit as a single moveParagraphForwardAndModifySelection: / moveParagraphBackwardAndModifySelection: selector, which we mapped to a single SelectEndParagraph / SelectBeginParagraph command. That command extends the selection to the current paragraph's edge but cannot advance past it, so once the selection focus sits at a paragraph boundary, repeated presses stop extending the selection and only a single paragraph can be selected.\n\nThe non-selecting Option+ArrowDown/ArrowUp binding already avoids this by emitting a character move (moveForward: / moveBackward:) before the paragraph move so the caret first steps across the boundary. Mirror that for the selecting variants by expanding the two moveParagraph...AndModifySelection: selectors into a character-selection command followed by the paragraph-selection command. This keeps them distinct from the Emacs-style Ctrl+Shift+E / Ctrl+Shift+A bindings, whose native selectors intentionally do not cross paragraph boundaries.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D315279",
      "email": "spohl@mozilla.com",
      "hash": "75815c9be080478889c36888337c24b517132fbe",
      "subject": "Bug 2049117: Let Shift+Option+Arrow selection cross paragraph boundaries on macOS. r=mac-reviewers,bradwerth"
    },
    "D315343": {
      "author": "Dão Gottwald",
      "avatar": "https://www.gravatar.com/avatar/45dfe136efbb8e5f89eb0b21775ab195?d=identicon\u0026s=64",
      "cl": "D315343",
      "clUrl": "https://phabricator.services.mozilla.com/D315343",
      "description": "The parent controller's SERP and search-form opens resolved their target\nimplicitly, from whichever tab was selected when the parent ran them. On the\ndirect path that is the same turn as the commit, so it is always the committing\ntab. On the actor message path the call round-trips, so a tab selected in\nbetween receives the load instead, and the SERP opens in the wrong tab.\n\nPin the committing tab's browser at the commit and resolve it parent-side\nthrough resolveTargetBrowser, as the URL-loading path already does. The pin gets\none definition per input instead of a read inlined at each commit point, which\nis also how the remaining commit paths -- the one-off and search-button opens --\npick it up.\n\nBehavior-neutral on the direct path, where the pinned browser is the selected\nbrowser anyway; an absent pin still falls back to the selected tab, and a\nnon-\"current\" load still passes no target, since it opens its own tab. The\nmessage-path change is the fix: browser_switchTabs.js's slow_load switches away\nright after Enter and then waits for the SERP in the tab it left, so it timed\nout on the message path and passes now.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D315343",
      "email": "dao@mozilla.com",
      "hash": "daa508a6ee9887f7e8d53904271ffdbd1bdc14f0",
      "subject": "Bug 2059474 - Pin the target browser for urlbar SERP and search-form loads. r=Standard8"
    },
    "D315647": {
      "author": "Roger Yang",
      "avatar": "https://www.gravatar.com/avatar/d2b191d48ae0f07a2e1367002f8c1767?d=identicon\u0026s=64",
      "cl": "D315647",
      "clUrl": "https://phabricator.services.mozilla.com/D315647",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D315647",
      "email": "royang@mozilla.com",
      "hash": "dd8f53d5b9b9a81b71a03a37f75b36eeb1c30046",
      "subject": "Bug 2059786 - Update IP protection locations title to match Figma. r=android-reviewers,android-l10n-reviewers,parker,gmalekpour"
    },
    "D315682": {
      "author": "Kagami Sascha Rosylight",
      "avatar": "https://www.gravatar.com/avatar/9f759e9904275bba9b2d86f5fb12964d?d=identicon\u0026s=64",
      "cl": "D315682",
      "clUrl": "https://phabricator.services.mozilla.com/D315682",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D315682",
      "email": "krosylight@proton.me",
      "hash": "f88354a77831cd6542bb1e00e4c64f02304251f1",
      "subject": "Bug 2059096 - Un-invert the inverted CMYK math r=aosmond"
    },
    "D315717": {
      "author": "Matthew Gaudet",
      "avatar": "https://www.gravatar.com/avatar/0c4c6c72545e010e29e8da0e3bb229ee?d=identicon\u0026s=64",
      "cl": "D315717",
      "clUrl": "https://phabricator.services.mozilla.com/D315717",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D315717",
      "email": "mgaudet@mozilla.com",
      "hash": "4226c86e3c1a4b7601790717ddac723bff93b90b",
      "subject": "Bug 2059845 - Suggest agents remind forgetful users to update their AI tooling. r=ai4dev-reviewers,marco DONTBUILD"
    },
    "D315719": {
      "author": "Leo Tenenbaum",
      "avatar": "https://www.gravatar.com/avatar/191826fbebe3973ebd6d6eb595ddb5c2?d=identicon\u0026s=64",
      "cl": "D315719",
      "clUrl": "https://phabricator.services.mozilla.com/D315719",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D315719",
      "email": "ltenenbaum@mozilla.com",
      "hash": "8384e0b10c7247e94fb27e7a9bdfc6ec7fd959d4",
      "subject": "Bug 1982627 - Collapse selection range if extending across shadow boundary via JS. r=masayuki"
    },
    "D315780": {
      "author": "Timothy Nikkel",
      "avatar": "https://www.gravatar.com/avatar/0646a42110a02dd585f200f270716852?d=identicon\u0026s=64",
      "cl": "D315780",
      "clUrl": "https://phabricator.services.mozilla.com/D315780",
      "description": "MaybeCreateDisplayPortInFirstScrollFrameEncountered gives a displayport to the\nfirst async scrollable frame it finds, so that frame is ready for APZ before\nanything scrolls it. It skips tabbrowser-arrowscrollbox entirely. That was\ncorrect when bug 1755290 added the bail out, because \u003cscrollbox\u003e was\noverflow: hidden and so never WantAsyncScroll(). Bug 1899582 gave the vertical\ntab strip's scrollbox overflow-y: auto, and bug 2059794 moves that into\narrowscrollbox.css gated on [overflowing], so the tab bar does contain an async\nscrollable element now.\n\nThe strip therefore has only the minimal displayport from\nShouldActivateAllScrollFrames(), which with apz.prefer_jank_minimal_displayports\nsuppresses the async scroll offset until APZ requests a content repaint. It gets\na non-minimal one the first time it is scrolled. The bail out does not prevent\nthe strip from getting a displayport, only from having one before that first\nscroll.\n\nThe arrowscrollbox's scroll container is a direct child frame and every tab\nlives inside it, so scanning only the direct children finds it without walking\nthe tabs. That preserves the optimization bug 1755290 added, which was measured\nat roughly 15% of the parent-process time to open a new tab in a session with\nmany tabs.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D315780",
      "email": "tnikkel@gmail.com",
      "hash": "667ef7dd6c9f7c5f2db1601bde81caf732ed765b",
      "subject": "Bug 2059800. Teach the code that looks for the first scrollable frame to give a displayport about the tab bar scroller. r=dao,hiro,layout-reviewers,emilio,akulyk"
    },
    "D315811": {
      "author": "Ryan VanderMeulen",
      "avatar": "https://www.gravatar.com/avatar/51823ded02903fa76c961fe2a3c1318a?d=identicon\u0026s=64",
      "cl": "D315811",
      "clUrl": "https://phabricator.services.mozilla.com/D315811",
      "description": "The toolchain task asked Gradle for a curated list of tasks, on the assumption that the list drove which\ndependencies got enumerated. It doesn't: with --write-verification-metadata, Gradle resolves every\nresolvable configuration of every project that the requested tasks pull into the build, so a task list can\nonly ever narrow the result. The list was also entirely :geckoview-scoped, which is why the top-level pass\ncovered barely half of what the task as a whole enumerated, and why three further invocations had to make\nup the difference.\n\nMove the passes into `mach android gradle-dependencies` as the set of Gradle builds to cover, each\nrequesting nothing but `help` so that nothing is narrowed, and keep the geckoview-lite artifact scoped by\nnaming the projects its consumers build rather than by naming tasks. Both artifacts enumerate exactly the\nsame set of components and artifacts they did before.\n\nA dependency that is only used conditionally now has to be gated on DOWNLOAD_ALL_GRADLE_DEPENDENCIES,\nwhich this task's mozconfig sets, rather than on a Gradle property that a pass would have to name.\nAndroid-components' coverage dependencies already were, so asking for -Pcoverage was redundant.\n\nThe flags that make a pass enumerate rather than build move in with the passes, so neither caller has to\nset GRADLE_FLAGS in between `mach build` and them. That ordering was load-bearing and easy to get wrong,\nwhich is why both scripts carried a comment warning about it; the trap is now gone rather than documented.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D315811",
      "email": "rvandermeulen@mozilla.com",
      "hash": "bfb2435b3c2dc1dc80b745e2ae02bbe8c2061a0d",
      "subject": "Bug 2059955 - Enumerate android-gradle-dependencies by Gradle build, not by task list. r=ahochheiden"
    },
    "D315812": {
      "author": "Ryan VanderMeulen",
      "avatar": "https://www.gravatar.com/avatar/51823ded02903fa76c961fe2a3c1318a?d=identicon\u0026s=64",
      "cl": "D315812",
      "clUrl": "https://phabricator.services.mozilla.com/D315812",
      "description": "This task has intermittently produced artifacts with files missing, which only surfaces much later as a\nconfusing resolution failure in a task that fetched it. The existing check watches a single hardcoded\nartifact as a canary.\n\nCheck all of it instead. Each enumeration pass leaves behind an inventory of every artifact Gradle\nresolved, with a sha256 for each, so verify the packaged repositories against those. The passes resolve\neither through the local Nexus or from a repository that is packaged as it stands, so anything else absent,\nor any component packaged with one of its files missing or damaged, is a fault and fails the task before it\npays to compress the artifact. The three are reported apart, since what to do about a component that was\nnever packaged is not what to do about one that was packaged incompletely.\n\nTwo wrinkles. Downstream tasks are handed every packaged repository, so an artifact only has to appear in\none of them. And a component's module metadata can name a file that a different module publishes: Gradle\nrecords guava's -jre jar under its -android component, and Kotlin Multiplatform modules redirect to a\nplatform-specific module. Where the recorded name isn't where the component's coordinates point, look for\nits checksum elsewhere in the packaged tree.\n\nGeckoView is exempt: this task builds it and publishes it to a local Maven repository that the standalone\npasses resolve it from, so it is deliberately not packaged.\n\nOnly those three fail the task, because only those three become a resolution failure in a task that fetched\nthe archive. An inventory that contradicts itself, or an entry too malformed to check, is reported as a\nwarning instead: the archive still works, and a red toolchain task would cost more than it tells anyone.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D315812",
      "email": "rvandermeulen@mozilla.com",
      "hash": "5704fb79a38f4c5fa8e8c0ee4d64d464166d4228",
      "subject": "Bug 2059955 - Check that the packaged Gradle dependency cache is complete. r=ahochheiden"
    },
    "D315814": {
      "author": "Caleb Chan",
      "avatar": "https://www.gravatar.com/avatar/2238a75309adf73255119dfc6f497cf3?d=identicon\u0026s=64",
      "cl": "D315814",
      "clUrl": "https://phabricator.services.mozilla.com/D315814",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D315814",
      "email": "cachan@mozilla.com",
      "hash": "d8067bafa502d3e0ef1f68e2ee9667a3b766bed5",
      "subject": "Bug 1882241 - multiple bookmarks updates star. r=places-reviewers,mak"
    },
    "D315846": {
      "author": "mayankleoboy1",
      "avatar": "https://www.gravatar.com/avatar/5ce84f7ec7214e92e88ac71d71c63049?d=identicon\u0026s=64",
      "cl": "D315846",
      "clUrl": "https://phabricator.services.mozilla.com/D315846",
      "description": "Removing N documents from a single DocGroup was O(N^2): each\nRemoveDocument did a linear scan plus an array compaction. Tearing down\n500k Document objects spent 94% of content process main thread samples\nthere (75% memmove, 19% scan).\n\nmDocuments is private and its only readers are IsEmpty() and an\nunordered existence test, so ordering is not observable.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D315846",
      "email": "mayankleoboy1@gmail.com",
      "hash": "bb03981b64cdaf84769e48317fffe8d77e675619",
      "subject": "Bug 1958702 - Use a hash set for DocGroup::mDocuments. r=smaug"
    },
    "D315851": {
      "author": "mayankleoboy1",
      "avatar": "https://www.gravatar.com/avatar/5ce84f7ec7214e92e88ac71d71c63049?d=identicon\u0026s=64",
      "cl": "D315851",
      "clUrl": "https://phabricator.services.mozilla.com/D315851",
      "description": "Further requests can only set BFCacheStatus::REQUEST again.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D315851",
      "email": "mayankleoboy1@gmail.com",
      "hash": "636d432e442af14521765ff484b1e63e614f6b39",
      "subject": "Bug 2051002 - Break out of the bfcache request scan once a blocker is found. r=smaug"
    },
    "D315852": {
      "author": "mayankleoboy1",
      "avatar": "https://www.gravatar.com/avatar/5ce84f7ec7214e92e88ac71d71c63049?d=identicon\u0026s=64",
      "cl": "D315852",
      "clUrl": "https://phabricator.services.mozilla.com/D315852",
      "description": "requests copies the whole group, which CanSavePresentation doesn't need. It\ncan't be made lazy itself because StopPendingJavascriptURLNavigations cancels\nrequests while iterating it.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D315852",
      "email": "mayankleoboy1@gmail.com",
      "hash": "9a41420b537dc21162995b66fc61e6f440cc24e4",
      "subject": "Bug 2051002 - Add nsILoadGroup::visitRequests and use it for the bfcache request check. r=smaug"
    },
    "D315884": {
      "author": "Sajid Anwar",
      "avatar": "https://www.gravatar.com/avatar/554aa5334d7607ad11128e48fddf84a0?d=identicon\u0026s=64",
      "cl": "D315884",
      "clUrl": "https://phabricator.services.mozilla.com/D315884",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D315884",
      "email": "sajidanwar94@gmail.com",
      "hash": "39c90c25677e929dd943f3394b04720794733a2a",
      "subject": "Bug 2060754 - Implement at-rule() function for CSS @supports. r=firefox-style-system-reviewers,emilio"
    },
    "D315886": {
      "author": "Emilio Cobos Álvarez",
      "avatar": "https://www.gravatar.com/avatar/1d91d22a4892f16f744b31fd4286144e?d=identicon\u0026s=64",
      "cl": "D315886",
      "clUrl": "https://phabricator.services.mozilla.com/D315886",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D315886",
      "email": "emilio@crisal.io",
      "hash": "3c49a93e08532dbccca25d0f94419f061551c7de",
      "subject": "Bug 2060039 - Pass a WindowContext rather than a BrowsingContext around for remote printing. r=nika,Jamie,geckoview-reviewers,win-reviewers,gstoll"
    },
    "D315903": {
      "author": "Andrea Marchesini",
      "avatar": "https://www.gravatar.com/avatar/dfb8d0427dd67216b2664131a5c31421?d=identicon\u0026s=64",
      "cl": "D315903",
      "clUrl": "https://phabricator.services.mozilla.com/D315903",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D315903",
      "email": "amarchesini@mozilla.com",
      "hash": "6f3cb8d7e78d940e1fdd47b2b0e72a91ab34451d",
      "subject": "Bug 1731313 - Add support for reordering containers r=Gijs"
    },
    "D315905": {
      "author": "Daisuke Akatsuka",
      "avatar": "https://www.gravatar.com/avatar/a65a0876b78fe449d63939aa44c86afc?d=identicon\u0026s=64",
      "cl": "D315905",
      "clUrl": "https://phabricator.services.mozilla.com/D315905",
      "description": "Bug 2046942 moved the light/dark switch into the --tab-group-${color} tokens\nthemselves, but we were still applying an additional light-dark(). We should\nuse --tab-group-color directly now.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D315905",
      "email": "daisuke@birchill.co.jp",
      "hash": "ec0684b9e8aaf00e98663a43a6672631a0713a0e",
      "subject": "Bug 2057443 - Avoid light-dark() for tab group colors since the tokens already apply it r=desktop-theme-reviewers,tabbrowser-reviewers,urlbar-reviewers,jsudiaman,emilio,adw"
    },
    "D315912": {
      "author": "Tymur Boiko",
      "avatar": "https://www.gravatar.com/avatar/e5455cbc9ccf5951783c79fc29beda3c?d=identicon\u0026s=64",
      "cl": "D315912",
      "clUrl": "https://phabricator.services.mozilla.com/D315912",
      "description": "On a GTK Wayland session, AddX11Dependencies() skips both the X11 socket and\n$XAUTHORITY because GdkIsWaylandDisplay() is true. NVIDIA EGL bring-up in RDD\nstill dials XWayland (/tmp/.X11-unix/X*) and needs the auth cookie\n($XAUTHORITY; on GNOME this is $XDG_RUNTIME_DIR/.mutter-Xwaylandauth.*). Socket-\nonly granting left cookie access denied (\"Authorization required\"), so EGL\nstill failed. Grant the same pair AddX11Dependencies would on X11, only in\nGetRDDPolicy() when Vulkan Video is FEATURE_STATUS_OK and DISPLAY is set.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D315912",
      "email": "tboiko@nvidia.com",
      "hash": "91b0860d83c0b620c496116b76990047e303a72a",
      "subject": "Bug 2057724 - Sandbox - Allow RDD XWayland socket and Xauthority on Wayland for Vulkan Video. r=jld,sandbox-reviewers"
    },
    "D315934": {
      "author": "Max Emig",
      "avatar": "https://www.gravatar.com/avatar/4d46eb7f4a1e85bbda15246d18a47abe?d=identicon\u0026s=64",
      "cl": "D315934",
      "clUrl": "https://phabricator.services.mozilla.com/D315934",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D315934",
      "email": "mozilla@emigm.ax",
      "hash": "eebdde9f7e9f13c5a71d0d31e93391ca57180c75",
      "subject": "Bug 2060028 - Fix the caret position regression when inserting content into an empty block. r=masayuki"
    },
    "D315998": {
      "author": "Nikki Sharpley",
      "avatar": "https://www.gravatar.com/avatar/475216ceafd2f0f87e2621f9ef4fa0e1?d=identicon\u0026s=64",
      "cl": "D315998",
      "clUrl": "https://phabricator.services.mozilla.com/D315998",
      "description": "browser_help_panel_cloning.js iterates every non-hidden \u003cmenuitem\u003e in menu_HelpPopup and asserts a corresponding #appMenu_\u003cid\u003e clone exists in PanelUI-helpView. The helpSwitchDevice menuitem is not hidden, but when browser.nova.enabled is true panelUI.js replaces its clone (#appMenu_helpSwitchDevice) with a moz-promo element, so the clone is absent and the Assert.ok fails on the Nova test variant.\n\nPer the module peer's guidance (comment 2), rather than pinning the pref off (brittle once the pref is removed), skip the helpSwitchDevice item in the cloning loop when Nova is enabled, with an info() pointing at browser_novaHelpSwitchDevicePromo.js, which already covers the promo-replacement behavior. Once browser.nova.enabled is removed, getBoolPref returns the false default and the skip never triggers, so this block can simply be deleted with the pref.\n\nAlso removes the now-unnecessary skip-if = [\"nova\"] rule for this file so it runs on the Nova variant again.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D315998",
      "email": "nsharpley@mozilla.com",
      "hash": "be2d8f21fd5b1be7a78f193688f45f3f0846c5ef",
      "subject": "Bug 2057935 - Skip helpSwitchDevice in browser_help_panel_cloning.js when Nova is enabled r=Gijs"
    },
    "D316000": {
      "author": "Jan Grulich",
      "avatar": "https://www.gravatar.com/avatar/12820c2f3213ea73507ca5f0855250f1?d=identicon\u0026s=64",
      "cl": "D316000",
      "clUrl": "https://phabricator.services.mozilla.com/D316000",
      "description": "Check spa_chunk::size is not larger than mmap'ed buffer, which would\nlead to an out-of-bounds read when the frame is copied. Validate that\nchunk offset + size does not exceed maxsize before processing.\n\nThis is a simple backport of an WebRTC upstream change.\n\nUpstream commit: 612430e8266881eaff478b0000cacc90fb71c918\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316000",
      "email": "jgrulich@redhat.com",
      "hash": "5863efcc070cb5ea81729827b6b7f1a3f7ddd9d0",
      "subject": "Bug 2054625 - WebRTC backport: Video capture: validate PipeWire camera frame size to prevent OOB read r=pehrsons"
    },
    "D316028": {
      "author": "longsonr",
      "avatar": "https://www.gravatar.com/avatar/c5d912dac5c74b47bbaff7164f5f8bb8?d=identicon\u0026s=64",
      "cl": "D316028",
      "clUrl": "https://phabricator.services.mozilla.com/D316028",
      "description": "When both fill and stroke bounds are requested, the transformed copy of\nthe path is only consulted on the rare empty-stroke fallback, but it was\nbuilt unconditionally on every call, costing a full copy of the path\ndata. Only build when a consumer actually needs it.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316028",
      "email": "longsonr@gmail.com",
      "hash": "fe290610c201b9bbf11af7d5b661a0bba11d7f5e",
      "subject": "Bug 2060130 - Only build the BBox space path when we need to r=emilio"
    },
    "D316036": {
      "author": "Reem H",
      "avatar": "https://www.gravatar.com/avatar/6ff5d1766c0abbbc7f56fb248b548de3?d=identicon\u0026s=64",
      "cl": "D316036",
      "clUrl": "https://phabricator.services.mozilla.com/D316036",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D316036",
      "email": "42309026+reemhamz@users.noreply.github.com",
      "hash": "6cfd4a52a5003fd3ae548b07433f6e38529e073c",
      "subject": "Bug 2059741 - Fix crossword telemetry by filtering out iframe-based echos and double interactions. r=Dre"
    },
    "D316039": {
      "author": "Yoshi Cheng-Hao Huang",
      "avatar": "https://www.gravatar.com/avatar/0363e83e6e847e7090abbbafb08716ee?d=identicon\u0026s=64",
      "cl": "D316039",
      "clUrl": "https://phabricator.services.mozilla.com/D316039",
      "description": "A off-thread compiled ScriptLoadRequest will block the onload handler of the\ndocument until it's done. But if it's canceled (for example, an import map is\ninserted), it should also unblock the onload handler.\n\ntest_bug_2054295.html drives the reproduction by suspending two channels from an\n\"http-on-opening-request\" observer.\n\nThe sequence is as follows:\n1. bug_2054295_hold_parser.js is suspended, holding off the parser of\n   file_bug_2054295.html before it reaches the import map.\n2. Meanwhile the preload scanner preloads bug_2054295_entry.mjs, which is long\n   enough to be compiled off-thread, and that blocks onload.\n3. The compiled entry module starts fetching bug_2054295_dep.mjs. That fetch is\n   suspended in turn, and the parser is released.\n4. The parser inserts the import map. Registering it cancels the preloaded (and\n   now onload-blocking) entry module, and the page reports that back to the\n   test.\n5. The dependency fetch is released so the load group drains, and the onload\n   handler must be called.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316039",
      "email": "allstars.chh@gmail.com",
      "hash": "3372dfb7220e5f2f5c70229830cb6c482c58f861",
      "subject": "Bug 2054295 - Unblock onload when a off-thread compiled Module is canceled. r=jonco"
    },
    "D316062": {
      "author": "Jackie Johnson",
      "avatar": "https://www.gravatar.com/avatar/679ab5b029ef3ae60883ec8b488cd982?d=identicon\u0026s=64",
      "cl": "D316062",
      "clUrl": "https://phabricator.services.mozilla.com/D316062",
      "description": "Converts three legacy MainMenuTest smoke tests onto the ui/efficiency framework:\n\n  MainMenuTest.verifyTheReportBrokenSiteSubMenuOptionTest            (TestRail 3080112)\n  MainMenuTest.verifyTheExtensionsMainMenuListTest                   (TestRail 3080134)\n  MainMenuTest.verifyTheMainMenuBackButtonLongClickFromCustomTabTest (TestRail 4245663)\n\nThe first two land in efficiency/tests/MainMenuTest; the custom-tab one lands in\nefficiency/tests/CustomTabsTest alongside the other converted custom-tab main-menu tests.\n\nHarness enablement these conversions required:\n\nReport broken site was not modelled at all, so this adds a WebCompatReporterPage page object and\nWebCompatReporterSelectors, with a MainMenuPage -\u003e WebCompatReporterPage edge that expands the More\nsubmenu first (the entry is browser-only; there is none from the home-page main menu).\n\nCustomTabsSelectors gains MENU_BACK_COMPOSE. mozLongClick dispatches on the resolved element type:\nthe existing UIAutomator MENU_BACK resolves to a UiObject and gets UiObject.longClick(), which uses\nthe ~500ms system long-press timeout. This Compose button does not register that as a long press --\nit lands as a plain click and merely navigates back, so no tab-history sheet ever appears. The\nCompose path instead does composeLongClick(5000ms), matching the legacy robot's\nonNodeWithText(\"Back\") + LONG_CLICK_DURATION.\n\nTabHistorySelectors gains TAB_HISTORY_LIST_UIAUTOMATOR. Espresso resolves against the resumed\nactivity's hierarchy, which is CustomTabActivity inside a custom tab while the test rule's context is\nHomeActivity. The ESPRESSO_BY_ID lookup therefore misses, and the harness then tries to launch\nHomeActivity and times out after 45s. UIAutomator matches device-wide, so it is activity-agnostic --\nand it is what the legacy assertion used.\n\nMainMenuSelectors gains REPORT_BROKEN_SITE_BUTTON, EXTENSIONS_CHEVRON,\nTRY_RECOMMENDED_EXTENSION_BUTTON, DISCOVER_MORE_EXTENSIONS_BUTTON and RECOMMENDED_ADDON_ITEM. Note\nRECOMMENDED_ADDON_ITEM keys on the addon row, not RECOMMENDED_ADDON_ITEM_TITLE: that tag is applied\nvia labelModifier, so the row's merged semantics hide it and a merged-tree onAllNodesWithTag cannot\nsee it.\n\nParity gap: legacy verifyTheRecommendedAddons asserted three named addons, each with its own\n\"Add \u003caddon\u003e\" install button, retrying against a hardcoded candidate list. The port asserts that a\nrecommended-addon row is present instead, since which addons AMO recommends is server-driven and\nmatching on names couples the test to remote data. The install-button check did not carry over. The\nother two tests carry over every legacy assertion explicitly.\n\nThe three legacy tests are annotated with @Converted pointing at their replacements, matching how\nthe rest of this campaign has landed. They keep running alongside the replacements; the annotation is\nwhat the conversion burndown keys off.\n\nAlso corrects the conversion docs, which said to add that marker only once the replacement was green\n\"and landed\". That is not what this campaign does -- every conversion so far has landed the annotation\nin the same commit as its replacement -- and following it literally means the conversion lands looking\nunconverted to the ledger, since a post-landing annotation would need its own bug and review.\n\n# Conflicts:\n#\tmobile/android/fenix/app/src/androidTest/java/org/mozilla/fenix/ui/efficiency/selectors/MainMenuSelectors.kt\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316062",
      "email": "jajohnson@mozilla.com",
      "hash": "65b3d8630090a9bed2b3e6f9dd1c51109f30a6ec",
      "subject": "Bug 2060267 - [efficiency] Convert three MainMenuTest smoke tests to ui/efficiency r=isabel_rios,aaronmt"
    },
    "D316063": {
      "author": "Jackie Johnson",
      "avatar": "https://www.gravatar.com/avatar/679ab5b029ef3ae60883ec8b488cd982?d=identicon\u0026s=64",
      "cl": "D316063",
      "clUrl": "https://phabricator.services.mozilla.com/D316063",
      "description": "Deletes nine stale docs under ui/efficiency/docs/ that describe the removed\nSteps/FeatureSpec/factory-tier model:\n\n  ArchitectureOverview.md   TestAutomationStrategy.md   TestFactoryDesignGoals.md\n  FeatureSpecDataModel.md   FeatureLayer.md             StepsLayer.md\n  Factories.md              LoggingLayer.md             DebugUtilities.md\n\nAll nine were last touched 2025-10-31/2025-11-12, while every doc that survives dates from\n2026-07-29 or later. docs/README.md already listed exactly these nine as \"should be deleted\"; that\nmaintenance note goes away with them, since it only existed to flag the pending removal.\n\nChecked before removing, rather than going on the filename convention alone: the model they document\nis gone from the code (no FeatureSpec/StepsLayer identifiers remain anywhere), the live factory story\nis covered by architecture.md (\"The factories (generation/) - status is honest\", Reachability factory),\nand nothing outside that README note linked to any of them. So no current information is lost.\n\nDocuments a step that was missing from the conversion workflow: each conversion bug has to block the\ntracking meta bug 2030727 ([meta] TAE - Migrate and remove legacy tests), which tracks the campaign\nthrough its depends_on list. A conversion that never gets linked is invisible to anyone reading the meta\nfor status. converting-a-test.md step 8 now says so, and scopes it: test-conversion bugs go on the meta,\ntooling/docs/harness bugs stay off it.\n\nThe remaining docs are normalized with prettier. This is not a lint-gate fix: rumdl covers\nmobile/android/fenix/docs/ but not app/src/androidTest/.../efficiency/docs/, and .prettierrc.js has no\nmarkdown override wired into mozlint, so nothing in-tree enforces formatting on these files. It is a\none-time normalization for consistency.\n\nOne correctness fix rides along. Prettier's *emphasis* -\u003e _emphasis_ rewrite corrupted a bare\n\"isabel_rios\" into \"isabel*rios\" in converting-a-test.md, and left the emphasis unclosed - opening\nwith `*(` and closing with `)\\_`. The reviewer names are now in backticks so the underscore sits in a\ncode span and cannot be reinterpreted by a future prettier run.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316063",
      "email": "jajohnson@mozilla.com",
      "hash": "170b1cf2f0d9fbd67a164b4a5ed8454416147ab9",
      "subject": "Bug 2060280 - [efficiency] Refresh harness docs: drop stale files, document the tracking meta bug, normalize with prettier r=isabel_rios,aaronmt"
    },
    "D316070": {
      "author": "Emma Zuehlcke",
      "avatar": "https://www.gravatar.com/avatar/46f58cc04758e80835820f0f1d5646bb?d=identicon\u0026s=64",
      "cl": "D316070",
      "clUrl": "https://phabricator.services.mozilla.com/D316070",
      "description": "The test passes under Nova, it just runs out of its timeout on code coverage\nbuilds. browser-chrome arms the timeout once per file rather than per task, so\nrequestLongerTimeout(N) is a whole-file budget of N * 45s, and overrunning it is\nreported as a failure even when every assertion passed.\n\nBug 2051271 dropped this file's requestLongerTimeout(4) and bug 2053008 restored\nonly a factor of 2, while raising the comparable siblings to 5, 7 and 10. That\nleft 90s for a file running two full runTestInNormalAndPrivateMode() passes,\nwhich coverage builds cross once Nova adds its overhead.\n\nRaise the factor to 5, matching browser_blockingSharedWorkers.js which has\nalmost the same runtime, and re-enable the test.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316070",
      "email": "emz@mozilla.com",
      "hash": "2cc35aee39bed722b0c8c484228225a7d4dd57bb",
      "subject": "Bug 2057885 - Give browser_blockingIndexedDb.js enough timeout headroom on coverage builds. r=timhuang"
    },
    "D316071": {
      "author": "Gijs Kruitbosch",
      "avatar": "https://www.gravatar.com/avatar/410fad5de3812b3810955d277445bced?d=identicon\u0026s=64",
      "cl": "D316071",
      "clUrl": "https://phabricator.services.mozilla.com/D316071",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D316071",
      "email": "gijskruitbosch@gmail.com",
      "hash": "49c907f1dd9e00c67859bde071f62abb008f5f64",
      "subject": "Bug 2058043 - fix issues with nova in browser_customization_context_menus.js, r=mconley"
    },
    "D316146": {
      "author": "Jack Brown",
      "avatar": "https://www.gravatar.com/avatar/9390fad805dd5d2471db8ce47f8d239d?d=identicon\u0026s=64",
      "cl": "D316146",
      "clUrl": "https://phabricator.services.mozilla.com/D316146",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D316146",
      "email": "jbrown@mozilla.com",
      "hash": "ab9e3ceeae6ae22c3d09bb11ffed892c8464c47b",
      "subject": "Bug 2057058 - Fix BrowserUsageTelemetry's idle-daily observer - r=sthompson,tabbrowser-reviewers"
    },
    "D316147": {
      "author": "Jack Brown",
      "avatar": "https://www.gravatar.com/avatar/9390fad805dd5d2471db8ce47f8d239d?d=identicon\u0026s=64",
      "cl": "D316147",
      "clUrl": "https://phabricator.services.mozilla.com/D316147",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D316147",
      "email": "jbrown@mozilla.com",
      "hash": "b2784d221c707f9cddd27846d1012cae3508ab08",
      "subject": "Bug 2057058 - Report browser.nova.enabled - r=sthompson,tabbrowser-reviewers"
    },
    "D316149": {
      "author": "Jackie Johnson",
      "avatar": "https://www.gravatar.com/avatar/679ab5b029ef3ae60883ec8b488cd982?d=identicon\u0026s=64",
      "cl": "D316149",
      "clUrl": "https://phabricator.services.mozilla.com/D316149",
      "description": "Converts the one extension smoke test in MainMenuTest that verifies the recommended-extensions list\nwithout installing anything (TestRail 3080151), so it needs no addon-install capability.\n\nAdds MainMenuSelectors.EXTENSIONS_BUTTON_UIAUTOMATOR. The Extensions row opens its submenu in a new\nwindow and the node sets testTagsAsResourceId, so it is matched by res-id at the device level rather\nthan through Compose -- mirroring the legacy\nitemWithResId(\"mainMenu.extensions\").clickAndWaitForNewWindow. The existing Compose-text\nEXTENSIONS_BUTTON stays as the twin for verifying the row is present rather than opening it.\n\nConfirmed on device that opening the submenu via the Extensions row lands on the same elements as the\nchevron-expand path, so the existing \"expandedExtensionsMenuItems\" group already covers\nverifyRecommendedAddonsViewFromRedesignedMainMenu -- no new page object needed.\n\nParity: every legacy assertion carried over explicitly (page content, the try-a-recommended-extension\nbutton, the recommended-addons view). Verified in isolation on device: effcheck PASS, outcome=pass,\n0 failures, 0 skipped, not a retry-pass.\n\nDepends on the selectors added in bug 2060267 (TRY_RECOMMENDED_EXTENSION_BUTTON,\nDISCOVER_MORE_EXTENSIONS_BUTTON, RECOMMENDED_ADDON_ITEM), so it stacks on that commit.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316149",
      "email": "jajohnson@mozilla.com",
      "hash": "8261c3ce53f5e2e6f477ecaf492d47ac90f27dca",
      "subject": "Bug 2060288 - [efficiency] Convert MainMenuTest.verifyRecommendedExtensionsListWhileNoExtensionIsInstalledTest to ui/efficiency r=isabel_rios,aaronmt"
    },
    "D316151": {
      "author": "Jackie Johnson",
      "avatar": "https://www.gravatar.com/avatar/679ab5b029ef3ae60883ec8b488cd982?d=identicon\u0026s=64",
      "cl": "D316151",
      "clUrl": "https://phabricator.services.mozilla.com/D316151",
      "description": "ShareOverlayPage could not be navigated to, and failed silently rather than erroring. Two defects\ncompounded:\n\nIts only NavigationRegistry edge (from BrowserPage) had an empty step list, left behind with a\nplaceholder comment, so on.shareOverlay.navigateToPage() performed no actions at all. And\nShareOverlaySelectors had no \"requiredForPage\" selector, so the page-presence check had nothing to\nassert against. Together these made navigateToPage() report success while still sitting on the\nbrowser -- the failure surfaced much later, as a missing element on a screen the test never reached.\n\nSHARING_LAYOUT (the share sheet's root layout, from fragment_share.xml) now joins \"requiredForPage\",\nso arrival is actually verified.\n\nThe empty BrowserPage edge is replaced by an edge from MainMenuPage clicking\nMainMenuSelectors.SHARE_BUTTON. Registering from MainMenuPage lets the graph route\nBrowserPage -\u003e MainMenuPage -\u003e ShareOverlayPage rather than duplicating the menu-opening step, matching\nhow WebCompatReporterPage is wired.\n\nAlso deletes ShareOverlaySelectors.SAVE_AS_PDF_BUTTON: it was UIAUTOMATOR_WITH_RES_ID with the value\n\"Save as PDF\", so it resolved to the res-id \"\u003cpkg\u003e:id/Save as PDF\" and could never match. It had no\ncallers. SAVE_AS_PDF_LABEL, which matches on text the way the legacy robot did, is the working one.\n\nVerified on device: navigation completes through Three Dot Menu -\u003e Share -\u003e \"Share overlay layout\"\nfound. Adding \"requiredForPage\" makes a previously-vacuous presence check real for the existing tests\nthat reach the share sheet by their own clicks (BookmarksTest, CollectionsTest, MainMenuTest), so\nMainMenuTest#verifyTheShareButtonTest was re-run as a regression check: passes, 0 failures, 0 skipped.\n\nNo legacy test is annotated here: this is harness enablement, not a conversion, so it is also\ndeliberately not attached to the conversion tracking meta bug 2030727.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316151",
      "email": "jajohnson@mozilla.com",
      "hash": "d3b4082cf695d263e4606d5f990c8d5863bfce7a",
      "subject": "Bug 2060297 - [efficiency] Fix ShareOverlayPage navigation: empty nav edge and missing page-presence anchor r=isabel_rios,aaronmt"
    },
    "D316152": {
      "author": "Jackie Johnson",
      "avatar": "https://www.gravatar.com/avatar/679ab5b029ef3ae60883ec8b488cd982?d=identicon\u0026s=64",
      "cl": "D316152",
      "clUrl": "https://phabricator.services.mozilla.com/D316152",
      "description": "Adds efficiency/tests/DownloadTest and converts saveAsPdfFunctionalityTest (TestRail 2048448).\n\nThis is the share-sheet route to Save as PDF; the main-menu More-submenu route is already covered by\nMainMenuTest.verifyTheSaveAsPDFSubMenuOptionTest. It uses the local mockWebServer loremIpsumAsset, so\nthere is no network dependency.\n\nBuilds on the ShareOverlayPage navigation fix in bug 2060297 -- before that, navigating to the share\nsheet was a silent no-op.\n\nThe test class disables PromptAbuserDetector for its duration, and that is load-bearing rather than\nboilerplate: without it the download prompt's Download button still resolves and the click still\nreports success, but the click is treated as prompt abuse and dropped, so the dialog stays open and no\ndownload starts. The failure then surfaces much later as a missing download-complete snackbar rather\nthan as a failed click. The legacy DownloadRobot.clickDownload toggles the same flag around its click,\nand eff MainMenuTest already does it as a @Before -- which is why the main-menu save-as-PDF test worked\nwhile a fresh test class did not.\n\nParity gap, recorded in the @Converted notes: legacy verifyDownloadPrompt also asserted that the prompt\nnamed the file (\"Lorem\") and that the Cancel button was displayed. The shared downloadDialog group\ncovers the dialog title and the Download button only. The share-sheet prompt is a native AlertDialog\ncarrying a filename field (prefilled from the page text) alongside Cancel/Download, so it is a\ndifferent dialog from the main-menu route's and deserves its own selectors rather than widening\ndownloadDialog to cover both; those two checks did not carry over.\n\nVerified in isolation on device: effcheck PASS, effverify ok=true clean=true failed_total=0, not a\nretry-pass.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316152",
      "email": "jajohnson@mozilla.com",
      "hash": "3e532955b2eb62b5279d13f2c983e536b4067490",
      "subject": "Bug 2060299 - [efficiency] Convert DownloadTest.saveAsPdfFunctionalityTest to ui/efficiency r=isabel_rios"
    },
    "D316153": {
      "author": "Jackie Johnson",
      "avatar": "https://www.gravatar.com/avatar/679ab5b029ef3ae60883ec8b488cd982?d=identicon\u0026s=64",
      "cl": "D316153",
      "clUrl": "https://phabricator.services.mozilla.com/D316153",
      "description": "Needed by the two remaining download conversions (CustomTabsTest.verifyDownloadInACustomTabTest and\nDownloadTest.pauseResumeCancelDownloadTest); neither could be expressed before this.\n\nAdds the selector strategy UIAUTOMATOR_WITH_RAW_RES_ID_CONTAINING_TEXT. Both existing res-id+text\nstrategies prefix \"$packageName:id/\", but notification action buttons are \"android:id/action0\" --\nsystem ids we do not own -- so the prefixing made them unmatchable. This follows the existing\nUIAUTOMATOR_WITH_WEB_ID_AND_TEXT precedent for res-ids used verbatim.\n\nNotificationSelectors gains NOTIFICATION_ACTION_BUTTON(action), SYSTEM_NOTIFICATION(text) and\nNOTIFICATION_TOP_LINE(text). Every action button on a notification shares android:id/action0, so the\nlabel is what distinguishes PAUSE from RESUME from CANCEL.\n\nNotificationPage gains openNotificationTray(), expandNotification(text),\nclickNotificationActionButton(action), verifyNotificationExists, verifyNotificationDoesNotExist and\ncloseNotificationTray(). Notifications in the shade are collapsed by default and their action buttons\nare not in the hierarchy at all until expanded, hence expandNotification.\n\nclickNotificationActionButton confirms success by the button no longer being present rather than by the\nclick returning: clicking PAUSE swaps the button for RESUME, so the old label going away is what\nactually proves the action was applied. That mirrors the legacy NotificationRobot semantics, and it is\nwhat makes a pause/resume/cancel sequence testable at all.\n\nThree latent defects fixed along the way:\n\nNotificationPage was never registered in PageContext, so it was unreachable via on.* -- the whole page\nobject was dead code, which is why it had a single selector and no helpers.\n\nnavigateToPage() returns BasePage, so page-specific helpers are not visible when chained off it. Added\nthe narrowing override that SettingsAutofillPage and TabHistoryPage already use.\n\nThe shade was modelled as a nav-graph destination with a single edge from HomePage, so navigateToPage()\nfailed with \"no navigation path found\" from anywhere else -- for instance from inside a custom tab. The\nshade is a system overlay reachable from every app state, so openNotificationTray() pulls it down\ndirectly and verifies the header instead. Adding an edge per page would be the wrong shape for\nsomething globally reachable.\n\nVerified on device: the in-progress conversion of CustomTabsTest.verifyDownloadInACustomTabTest\nexercises openNotificationTray + verifyNotificationExists + closeNotificationTray from inside a custom\ntab and passes in isolation (effverify ok=true clean=true failed_total=0, not a retry-pass). That\nconversion is deliberately not included here -- it passes alone but fails when the full CustomTabsTest\nclass runs, with a HomeActivity launch timeout that looks like leaked state, so it lands separately once\nthe teardown is sorted.\n\nNo legacy test is annotated here: this is harness enablement, not a conversion, so it is also\ndeliberately not attached to the conversion tracking meta bug 2030727.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316153",
      "email": "jajohnson@mozilla.com",
      "hash": "ac67015013cf9ede3e3198a0d17fdbc439814b25",
      "subject": "Bug 2060305 - [efficiency] Add notification-shade capability to the harness r=isabel_rios,aaronmt"
    },
    "D316154": {
      "author": "Jackie Johnson",
      "avatar": "https://www.gravatar.com/avatar/679ab5b029ef3ae60883ec8b488cd982?d=identicon\u0026s=64",
      "cl": "D316154",
      "clUrl": "https://phabricator.services.mozilla.com/D316154",
      "description": "verifyTheMainMenuBackButtonLongClickFromCustomTabTest (landed in bug 2060267) ends with the tab-history\nbottom sheet open and never dismisses it, handing the next test in the class an open sheet.\n\nAdds TabHistoryPage.dismissTabHistorySheet(), which presses back and verifies the sheet is gone, and\ncalls it at the end of that test.\n\nScope note, so this is not overclaimed: this is test hygiene, not a fix for the CustomTabsTest flake. It\nwas written as a candidate fix for a retry-pass on verifyDownloadInACustomTabTest and it is not the\ncause -- adding it left the class result byte-identical. That leak is still unidentified, and the\nhelper's KDoc says so explicitly so nobody later reads this as the fix for it.\n\nDeliberately not routed through OverlayRegistry. That registry is scoped to system surfaces a test never\nasked for (OEM prompts, IME tutorials) and only fires on a locate miss, as a recovery path rather than\nteardown. The tab-history sheet is app UI the test opened on purpose, and the registry's own\ndocumentation warns against growing it past a single entry until overlay ordering and per-miss probe\ncost are settled.\n\nVerified: full efficiency CustomTabsTest class green 6/6, effverify ok=true clean=true failed_total=0\nretried=false.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316154",
      "email": "jajohnson@mozilla.com",
      "hash": "cbabe079143b044dca0ef42acf9f2edee1f1688c",
      "subject": "Bug 2060317 - [efficiency] Dismiss the tab-history sheet at the end of the custom-tab long-press test r=isabel_rios"
    },
    "D316155": {
      "author": "Jackie Johnson",
      "avatar": "https://www.gravatar.com/avatar/679ab5b029ef3ae60883ec8b488cd982?d=identicon\u0026s=64",
      "cl": "D316155",
      "clUrl": "https://phabricator.services.mozilla.com/D316155",
      "description": "Follow-up to bug 2060305, which noted this and deliberately left it alone.\n\nNavigationStep.OpenNotificationsTray was a data class taking an openNotificationsTrayAction: () -\u003e Unit\nthat BasePage never invoked -- its handler calls mozOpenNotificationsTray() unconditionally. The\nparameter was dead weight, and worse a trap: anyone passing a real action would reasonably expect it to\nrun, and it silently would not. The single call site passed an empty lambda, which read like a bug in its\nown right.\n\nNow a parameterless object, matching PressBack and WaitForIdle, so the type no longer advertises\nbehaviour it does not have.\n\nKept separate from 2060305 rather than folded in: that bug adds notification-shade capability, while this\nremoves a pre-existing wart on a shared navigation type. Verified compiling and green.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316155",
      "email": "jajohnson@mozilla.com",
      "hash": "7b6ab36a9eb14c83ddbc7e72ab556a00e4ee8389",
      "subject": "Bug 2060324 - [efficiency] Drop the never-invoked lambda from NavigationStep.OpenNotificationsTray r=isabel_rios,aaronmt"
    },
    "D316156": {
      "author": "Jackie Johnson",
      "avatar": "https://www.gravatar.com/avatar/679ab5b029ef3ae60883ec8b488cd982?d=identicon\u0026s=64",
      "cl": "D316156",
      "clUrl": "https://phabricator.services.mozilla.com/D316156",
      "description": "Found by the effcheck NAV/ANCHOR checks added in testops-tools 0e9e06e.\n\nMicrosurveysPage, PWAPage, ReaderViewPage, ShortcutsPage, SitePermissionsPage, SiteSecurityPage and\nTranslationsPage each registered a NavigationRegistry edge with an empty step list -- two of them holding\nonly a \"Will need to create selectors...\" placeholder comment. An edge with no steps makes\nnavigateToPage() perform no actions and report success, so a test carries on against whatever screen\nhappens to be in front of it and fails later, elsewhere, for a reason that points at the wrong step. That\nis the same defect that cost a device build to diagnose in bug 2060297.\n\nThe edges are deleted rather than filled in. All seven pages are unused by any test today, so nobody knows\nthe real navigation path and it cannot be verified; inventing steps would swap a silent lie for an\nunverified one. With no edge at all, navigateToPage() fails loudly with \"no navigation path found\", which\nis the honest answer until someone needs the page and can supply and verify real steps. Because the pages\nare unused, no test changes behaviour. Now-unused NavigationRegistry imports are pruned with them.\n\nThe effcheck ANCHOR rule was narrowed alongside this (in testops-tools): it now only demands a\n\"requiredForPage\" selector from pages that actually register an edge. A page with no edge cannot be\nnavigated to, so there is no arrival check to anchor, and the unnarrowed rule pushed toward inventing\nunverifiable anchors on unfinished scaffolding.\n\nSweep result: 11 page objects flagged before this change, 4 after. The remaining four are deliberately\nleft alone. AddToHomeScreenComponent, CollectionsPage and ToolbarComponent all have empty-step edges but\nARE used -- by MainMenuTest, CollectionsTest and ToolbarTest respectively -- so those tests may currently\nbe green partly because navigation silently succeeds, and fixing them needs a real nav path plus device\nverification per test. SettingsSiteSettingsPermissionsPage needs a requiredForPage anchor. Follow-up work,\nnot mechanical.\n\nVerified: full efficiency CustomTabsTest class green 6/6, effverify ok=true clean=true failed_total=0\nretried=false; ./mach lint on the efficiency package reports 0 errors.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316156",
      "email": "jajohnson@mozilla.com",
      "hash": "a56f34bae83321fc5dfc9fe9326ceb7d1959bf42",
      "subject": "Bug 2060336 - [efficiency] Remove dormant no-op navigation edges from seven page objects r=isabel_rios,aaronmt"
    },
    "D316157": {
      "author": "Jackie Johnson",
      "avatar": "https://www.gravatar.com/avatar/679ab5b029ef3ae60883ec8b488cd982?d=identicon\u0026s=64",
      "cl": "D316157",
      "clUrl": "https://phabricator.services.mozilla.com/D316157",
      "description": "Clears the last two effcheck NAV/ANCHOR findings, following bug 2060336.\n\nCollectionsPage registered a HomePage -\u003e CollectionsPage edge with an empty step list, making\nnavigateToPage() a silent no-op that reported success without navigating. The edge is removed rather than\nfilled in, for the same reason as the seven in bug 2060336 plus one specific to this page: collections are\na section of the tabs tray rather than a screen of their own, and CollectionsTest never calls\nnavigateToPage() on it -- all four usages are mozVerify/mozClick, treating the page purely as a selector\nnamespace after arriving by other means. With no edge, navigateToPage() fails loudly instead of pretending\nto have navigated. Removing it also clears the ANCHOR finding, since a page that cannot be navigated to\nhas no arrival to anchor.\n\nSettingsSiteSettingsPermissionsSelectors gains \"requiredForPage\" on ASK_TO_ALLOW_RADIO_BUTTON. Unlike\nCollectionsPage this page registers a real multi-step edge (main menu -\u003e Settings -\u003e Site settings -\u003e\npermission), so the anchor will be exercised as soon as anything navigates there; without it the first\nsuch navigation would report success against whatever screen happened to be in front of it. The\npermission detail screen always shows the \"Ask to allow\" radio, so it is a sound arrival marker.\n\nAll 58 page objects now pass effcheck's NAV and ANCHOR checks, down from 11 findings when those checks\nwere introduced.\n\nVerified: efficiency CollectionsTest green 4/4 -- the only consumer of CollectionsPage, so the one thing\nthat could have regressed -- effloop_exit 0, and ./mach lint on the efficiency package reports 0 errors.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316157",
      "email": "jajohnson@mozilla.com",
      "hash": "9b5fd00b760779f14db2376437e4f2732c4b064e",
      "subject": "Bug 2060339 - [efficiency] Remove CollectionsPage's no-op nav edge and add a missing page-presence anchor r=isabel_rios,aaronmt"
    },
    "D316158": {
      "author": "Jackie Johnson",
      "avatar": "https://www.gravatar.com/avatar/679ab5b029ef3ae60883ec8b488cd982?d=identicon\u0026s=64",
      "cl": "D316158",
      "clUrl": "https://phabricator.services.mozilla.com/D316158",
      "description": "NOTIFICATION_HEADER matched the text appName, which only exists once Firefox has\nposted a notification and system UI has rendered it, so the page-presence check\nwas racing the notification the caller was actually waiting for. NOTIFICATION_SHADE\nkeys on the shade's own scroller res-id instead, which is present exactly when the\nshade is open. That needs UIAUTOMATOR_WITH_RAW_RES_ID, since the existing raw-res-id\nstrategy's text criterion is not optional at the UiSelector level.\n\nopenNotificationTray() also left the shade open when its verify failed. An open\nshade holds window focus, so everything after it failed on an unrelated error\ninstead of the real one. It now closes the shade before rethrowing, and\ncloseNotificationTray() confirms the close instead of assuming back worked.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316158",
      "email": "jajohnson@mozilla.com",
      "hash": "aca6207e467de57445042f4d9f45e6e50cc4f1d5",
      "subject": "Bug 2060345 - [efficiency] Anchor NotificationPage on the shade itself and close it on the failure path r=isabel_rios,aaronmt"
    },
    "D316159": {
      "author": "Jackie Johnson",
      "avatar": "https://www.gravatar.com/avatar/679ab5b029ef3ae60883ec8b488cd982?d=identicon\u0026s=64",
      "cl": "D316159",
      "clUrl": "https://phabricator.services.mozilla.com/D316159",
      "description": "Two deviations from legacy, both noted in the test: the page is served by the local\nmockWebServer instead of storage.googleapis.com, and PromptAbuserDetector validations\nare disabled so the download prompt's confirm click is not dropped as prompt abuse.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316159",
      "email": "jajohnson@mozilla.com",
      "hash": "9ca431ffe188366fa46b06971fc8f15d9fa357a4",
      "subject": "Bug 2060346 - [efficiency] Convert CustomTabsTest.verifyDownloadInACustomTabTest to ui/efficiency r=isabel_rios,aaronmt"
    },
    "D316160": {
      "author": "Jackie Johnson",
      "avatar": "https://www.gravatar.com/avatar/679ab5b029ef3ae60883ec8b488cd982?d=identicon\u0026s=64",
      "cl": "D316160",
      "clUrl": "https://phabricator.services.mozilla.com/D316160",
      "description": "A retry starts by launching a fresh HomeActivity, and that launch was what failed\nwhenever the previous attempt's HomeActivity was still alive. HomeActivity is\nlaunchMode=\"singleTask\", so the intent went to the existing instance instead of\ncreating one, MonitoringInstrumentation never saw a newly launched activity reach\nRESUMED, and the attempt died after 45s on \"Could not launch intent ... HomeActivity\".\nBecause that error names HomeActivity, it replaced whatever actually failed first.\n\nThe retry path now finishes every activity that is not already destroyed and waits,\nbounded, for the stage registry to clear. It is best-effort: a failure to inspect or\nfinish is logged rather than raised, since this must not convert one failure into\nanother.\n\nCustom-tab tests were where this showed up, because a failure there tends to leave\nHomeActivity resumed behind the custom tab, but nothing about it was specific to\ncustom tabs.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316160",
      "email": "jajohnson@mozilla.com",
      "hash": "42d2eb05f4b51163e0890ad0197f6de39eed4b84",
      "subject": "Bug 2060347 - [efficiency] Finish the failed attempt's activities before retrying r=isabel_rios,aaronmt"
    },
    "D316161": {
      "author": "Jackie Johnson",
      "avatar": "https://www.gravatar.com/avatar/679ab5b029ef3ae60883ec8b488cd982?d=identicon\u0026s=64",
      "cl": "D316161",
      "clUrl": "https://phabricator.services.mozilla.com/D316161",
      "description": "First credit-card coverage on the framework, so it brings the missing pieces with it:\nCreditCardTestData (expiry year relative to today, since the editor offers no past\nyears), credit-card selectors on SettingsAutofillSelectors, and\nSettingsAutofillPage.fillAndSaveCreditCard mirroring fillAndSaveAddress.\n\nThree harness gaps surfaced while validating on device:\n\n- selectDropdownOption matched option text exactly, but the card expiry dropdowns\n  render options with surrounding text, so the month selection found nothing. It now\n  takes an opt-in substring mode, as the legacy robot does for those two dropdowns.\n- selectDropdownOption caught Exception around its retry, and Compose's waitUntil\n  raises ComposeTimeoutException, which extends Throwable — so a timeout escaped the\n  loop and the retry never ran for the case it was written for.\n- BaseTest cleared saved addresses between attempts but not saved cards. A leftover\n  card replaces \"Add card\" with \"Manage cards\", so a retry started on a different\n  screen than the first attempt.\n\nThe secure-your-cards prompt is a platform AlertDialog, so its \"Later\" button uses the\nframework res-id verbatim; ESPRESSO_BY_ID resolves names against the app's R class and\ncannot see it.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316161",
      "email": "jajohnson@mozilla.com",
      "hash": "0fb04a360d8dbec1ca40188ce492e52089a0661f",
      "subject": "Bug 2060406 - [efficiency] Convert CreditCardAutofillTest.deleteSavedCreditCardUsingMenuButtonTest to ui/efficiency r=isabel_rios,aaronmt"
    },
    "D316162": {
      "author": "Nicolas Grunbaum",
      "avatar": "https://www.gravatar.com/avatar/e49c6f6d2a2296f8ff216adbd0a60fe5?d=identicon\u0026s=64",
      "cl": "D316162",
      "clUrl": "https://phabricator.services.mozilla.com/D316162",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D316162",
      "email": "ngrunbaum@mozilla.com",
      "hash": "6ec4312c7ebfad648232b79564450dba0b036d0f",
      "subject": "Bug 2060413 - fix invalid test wpt/webrtc/simulcast/rid-manipulation.html;r=bwc"
    },
    "D316178": {
      "author": "Jackie Johnson",
      "avatar": "https://www.gravatar.com/avatar/679ab5b029ef3ae60883ec8b488cd982?d=identicon\u0026s=64",
      "cl": "D316178",
      "clUrl": "https://phabricator.services.mozilla.com/D316178",
      "description": "Both pages hung their edge off MainMenuPage, but that node stands for two different\nscreens — the home menu and the browser menu — and it is reachable from HomePage in one\nstep. So the planner routed AppEntry -\u003e HomePage -\u003e MainMenuPage and then looked for\nShare, or More + Report broken site, in the home menu, where neither exists. Both are\nbrowser-only items.\n\nInside a test this never surfaced: both call sites load a URL first, so the tracker is\nalready on BrowserPage and the browser-menu route is the one taken. Only the reachability\nfactory, which starts cold from AppEntry, exposes it.\n\nRooting the edges at BrowserPage with the menu-opening click inline duplicates that click,\nwhich is what hanging them off MainMenuPage was avoiding — but a duplicated step is worth\nmore than an edge the graph can reach through the wrong screen. FindInPagePage,\nTabHistoryPage and UnifiedTrustPanelPage are rooted the same way. Both pages now default\nthe url in navigateToPage, since reaching a share sheet or a broken-site report needs a\npage to act on.\n\nSplitting MainMenuPage into home and browser nodes would fix the ambiguity at its root;\nthat is a larger change and is not attempted here.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316178",
      "email": "jajohnson@mozilla.com",
      "hash": "0c8e5d23a3970348a7ee091bb275fb4b10dbd473",
      "subject": "Bug 2060429 - [efficiency] Root ShareOverlayPage and WebCompatReporterPage at BrowserPage so reachability can route to them r=isabel_rios,aaronmt"
    },
    "D316180": {
      "author": "Stephen A Pohl",
      "avatar": "https://www.gravatar.com/avatar/ceeb157ce698ad8c3e5be7c1317498bf?d=identicon\u0026s=64",
      "cl": "D316180",
      "clUrl": "https://phabricator.services.mozilla.com/D316180",
      "description": "BrowserParent::RecvSetDimensions() rescaled a resize request coming from content for DPI and passed it on without bounding the size, and nothing further down keeps a window near the size of its screen. The size passed to window.open() is already bounded that way in nsWindowWatcher::SizeOpenedWindow().\n\nThe size is now clamped to twice the available area of the screen the window is on. Twice rather than exactly the screen, because the size we get for a screen is not always accurate, on Wayland in particular, and all we need is to keep the size in a range the window can be given. The clamp lives in RecvSetDimensions() rather than in nsGlobalWindowOuter, because for a content window the resize is requested in the content process but carried out in the parent, so this is where it can be enforced.\n\nResizeByOuter() also added the deltas coming from content to the current size in 32-bit arithmetic, which overflows for large values. It now adds in 64 bits and keeps the result in range.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316180",
      "email": "spohl@mozilla.com",
      "hash": "e30801fa1ccdf62526c18bcfe6d123be07d274da",
      "subject": "Bug 2051788: Clamp content-initiated window resizes to the screen in the parent process. r=emilio,dom-core-reviewers,smaug"
    },
    "D316193": {
      "author": "Jan de Mooij",
      "avatar": "https://www.gravatar.com/avatar/709c5feed942bf99f098bb24aa1cc86f?d=identicon\u0026s=64",
      "cl": "D316193",
      "clUrl": "https://phabricator.services.mozilla.com/D316193",
      "description": "This adds a fourth slot to `ResumeFrameArgs` for the generator's resume index.\nThe resumer is now responsible for reading the generator's resume index slot and\nmarking the generator as running (this clobbers the generator's resume index slot).\n\nInitially this was required for part 4, but I've since changed that path to no longer\nallow executing arbitrary JS through the interrupt handler. However having the resume\nindex in `ResumeFrameArgs` also simplifies the Ion implementation later on and will be\nmore efficient in some cases, so I've kept it.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316193",
      "email": "jdemooij@mozilla.com",
      "hash": "44ccd2a4fcf1b4272a75abb2b3905728ec7b0bb6",
      "subject": "Bug 2060131 part 1 - Pass the generator resume index in the ResumeFrameArgs. r=iain"
    },
    "D316194": {
      "author": "Jan de Mooij",
      "avatar": "https://www.gravatar.com/avatar/709c5feed942bf99f098bb24aa1cc86f?d=identicon\u0026s=64",
      "cl": "D316194",
      "clUrl": "https://phabricator.services.mozilla.com/D316194",
      "description": "The next patch will use this to restore registers in `emitIsDebuggeeCheck` only if\nwe actually called into C++.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316194",
      "email": "jdemooij@mozilla.com",
      "hash": "5eedf93248d8d48988a8865707dc483b42812602",
      "subject": "Bug 2060131 part 2 - Add emitAfterCall argument to emitIsDebuggeeCheck. r=iain"
    },
    "D316195": {
      "author": "Jan de Mooij",
      "avatar": "https://www.gravatar.com/avatar/709c5feed942bf99f098bb24aa1cc86f?d=identicon\u0026s=64",
      "cl": "D316195",
      "clUrl": "https://phabricator.services.mozilla.com/D316195",
      "description": "We were doing this as part of `JSOp::AfterYield`, but that's too late when we\nadd an overrecursion check to the resume prologue.\n\nSetting the flag in the prologue makes this consistent with both the C++ interpreter's\nresume code and Baseline's non-resume prologue.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316195",
      "email": "jdemooij@mozilla.com",
      "hash": "9879a2d1ab80d9a1b57611cfcd4b37b21c9427b9",
      "subject": "Bug 2060131 part 3 - Set the frame's debuggee flag in Baseline's generator resume prologue. r=iain"
    },
    "D316196": {
      "author": "Jan de Mooij",
      "avatar": "https://www.gravatar.com/avatar/709c5feed942bf99f098bb24aa1cc86f?d=identicon\u0026s=64",
      "cl": "D316196",
      "clUrl": "https://phabricator.services.mozilla.com/D316196",
      "description": "This is more consistent with the normal (non-resume) prologue. Currently all\ngenerator-resumes go through `GeneratorNext` and it has an overrecursion check,\nbut when Ion can inline that function and compile generators, the generator's\nown overrecursion check becomes more important.\n\nUnlike the normal overrecursion check in the prologue, this one does not handle\ninterrupts. Supporting interrupts while we're in the middle of resuming a generator\nframe is complicated considering Debugger interactions.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316196",
      "email": "jdemooij@mozilla.com",
      "hash": "8efdfae70717f45b0c9e6ac1459c5a9927242062",
      "subject": "Bug 2060131 part 4 - Add an overrecursion check to the generator resume prologue. r=iain"
    },
    "D316197": {
      "author": "Jan de Mooij",
      "avatar": "https://www.gravatar.com/avatar/709c5feed942bf99f098bb24aa1cc86f?d=identicon\u0026s=64",
      "cl": "D316197",
      "clUrl": "https://phabricator.services.mozilla.com/D316197",
      "description": "`GeneratorNext` now has a bytecode length of ~115, less than `smallFunctionMaxBytecodeLength` (140).\nThis ensures we can inline it once WarpBuilder can compile `JSOp::Resume`.\n\nThe `GeneratorSetClosed` intrinsic was only called in the `catch`-blocks, after\nchecking `!GeneratorObjectIsClosed`. Move that if-statement into the intrinsic to\navoid the extra call and branch.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316197",
      "email": "jdemooij@mozilla.com",
      "hash": "13a058f8307e2dd55605e79555dffb9f6844ee7a",
      "subject": "Bug 2060131 part 5 - Shrink GeneratorNext so that it can be inlined later. r=iain"
    },
    "D316198": {
      "author": "Jan de Mooij",
      "avatar": "https://www.gravatar.com/avatar/709c5feed942bf99f098bb24aa1cc86f?d=identicon\u0026s=64",
      "cl": "D316198",
      "clUrl": "https://phabricator.services.mozilla.com/D316198",
      "description": "Now that `JSOp::Resume` is very similar to a call, we can Ion-compile and inline\nthe self-hosted `GeneratorNext` function. (`GeneratorThrow` and `GeneratorReturn`\ncan also be Ion-compiled now but they're less performance-sensitive.)\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316198",
      "email": "jdemooij@mozilla.com",
      "hash": "52b3c9699cea30f750a46ae4a6d311edba2fc29a",
      "subject": "Bug 2060131 part 6 - Support JSOp::Resume in WarpBuilder. r=iain"
    },
    "D316199": {
      "author": "Jan de Mooij",
      "avatar": "https://www.gravatar.com/avatar/709c5feed942bf99f098bb24aa1cc86f?d=identicon\u0026s=64",
      "cl": "D316199",
      "clUrl": "https://phabricator.services.mozilla.com/D316199",
      "description": "This op doesn't make a call.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316199",
      "email": "jdemooij@mozilla.com",
      "hash": "1d7c81028b308890ee7355f5323fc909d2c5c8ad",
      "subject": "Bug 2060131 part 7 - Rename CallIsSuspendedGeneratorResult op to IsSuspendedGeneratorResult. r=iain"
    },
    "D316200": {
      "author": "Jan de Mooij",
      "avatar": "https://www.gravatar.com/avatar/709c5feed942bf99f098bb24aa1cc86f?d=identicon\u0026s=64",
      "cl": "D316200",
      "clUrl": "https://phabricator.services.mozilla.com/D316200",
      "description": "This will avoid a redundant unbox in Ion.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316200",
      "email": "jdemooij@mozilla.com",
      "hash": "f10aa7bbbdd6dae7d99556000953048bfc8ee47a",
      "subject": "Bug 2060131 part 8 - Make IsSuspendedGeneratorResult take an object operand. r=iain"
    },
    "D316201": {
      "author": "Jan de Mooij",
      "avatar": "https://www.gravatar.com/avatar/709c5feed942bf99f098bb24aa1cc86f?d=identicon\u0026s=64",
      "cl": "D316201",
      "clUrl": "https://phabricator.services.mozilla.com/D316201",
      "description": "This is required to get good performance for Ion-compiled `GeneratorNext`.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316201",
      "email": "jdemooij@mozilla.com",
      "hash": "cd88ae08d75fc09fbd035127480ee177f38aa6f7",
      "subject": "Bug 2060131 part 9 - Transpile IsSuspendedGeneratorResult. r=iain"
    },
    "D316202": {
      "author": "Jan de Mooij",
      "avatar": "https://www.gravatar.com/avatar/709c5feed942bf99f098bb24aa1cc86f?d=identicon\u0026s=64",
      "cl": "D316202",
      "clUrl": "https://phabricator.services.mozilla.com/D316202",
      "description": "`BaselineFrame::trace` and `InterpreterFrame::trace` clear the locals that aren't live\nat the frame's pc. Nothing between restoring these slots and setting the pc can GC,\nso assert this to prevent a (future) footgun.\n\nThis was an issue for an earlier prototype based on a different approach. It caused\nJetStream to fail intermittently.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316202",
      "email": "jdemooij@mozilla.com",
      "hash": "9c6d75198bd384c54415a2515c19eeb4d560c62b",
      "subject": "Bug 2060131 part 10 - Assert resuming generator stack slots are only traced at the resume point. r=iain"
    },
    "D316208": {
      "author": "Sotaro Ikeda",
      "avatar": "https://www.gravatar.com/avatar/a0c6bcb88fdc08a4e55f4fcf65cf0428?d=identicon\u0026s=64",
      "cl": "D316208",
      "clUrl": "https://phabricator.services.mozilla.com/D316208",
      "description": "The wait ensures that FwdTransactionTracker is updated by ImageBridgeChild.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316208",
      "email": "sotaro.ikeda.g@gmail.com",
      "hash": "9178c688df23bce37339fac04f82962854ee3150",
      "subject": "Bug 2060449 - Wait ImageBrige task handled in CanvasContext::Unconfigure() with offscreen canvas r=gfx-reviewers,aosmond"
    },
    "D316221": {
      "author": "Dave Townsend",
      "avatar": "https://www.gravatar.com/avatar/362f7fbd402cbbcc24cc12580712aa62?d=identicon\u0026s=64",
      "cl": "D316221",
      "clUrl": "https://phabricator.services.mozilla.com/D316221",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D316221",
      "email": "dtownsend@oxymoronical.com",
      "hash": "da25fd8337c6a2ef00deb78757b5348809d9ddf9",
      "subject": "Bug 2045980: Add a site policy for https-only mode. r=mkaply,necko-reviewers"
    },
    "D316236": {
      "author": "Timothy Nikkel",
      "avatar": "https://www.gravatar.com/avatar/0646a42110a02dd585f200f270716852?d=identicon\u0026s=64",
      "cl": "D316236",
      "clUrl": "https://phabricator.services.mozilla.com/D316236",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D316236",
      "email": "tnikkel@gmail.com",
      "hash": "d7420de296238efb3c45b5fa3b9f4eb81d080802",
      "subject": "Bug 2060106. r=gfx-reviewers,nical"
    },
    "D316244": {
      "author": "Dão Gottwald",
      "avatar": "https://www.gravatar.com/avatar/45dfe136efbb8e5f89eb0b21775ab195?d=identicon\u0026s=64",
      "cl": "D316244",
      "clUrl": "https://phabricator.services.mozilla.com/D316244",
      "description": "When the view reopens for an abandoned search, it shows the results of the\nprevious query while a new query runs, and it considered them reusable as long\nas the search string was unchanged. Results depend on the selected tab, though,\nand the search bar keeps its value across tabs, so clicking it after a tab\nswitch showed the previous tab's tab-to-search suggestion until the new results\narrived.\n\nReusable results now have to match the current page as well, and the query\ncontext cache is keyed on it, so both tabs' results stay cached and switching\nback and forth doesn't flicker. Where nothing is cached for the current page,\nthe view opens once the new results arrive instead of immediately showing\nanother page's results.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316244",
      "email": "dao@mozilla.com",
      "hash": "a384857f0a11a511290f209fc3ccab5ea6ac87cb",
      "subject": "Bug 2033089 - Don't reuse view results that were fetched for another page. r=Standard8"
    },
    "D316247": {
      "author": "Emma Zuehlcke",
      "avatar": "https://www.gravatar.com/avatar/46f58cc04758e80835820f0f1d5646bb?d=identicon\u0026s=64",
      "cl": "D316247",
      "clUrl": "https://phabricator.services.mozilla.com/D316247",
      "description": "The Sqlite.shutdown blocker was added only after openConnection() resolved, so a\nconnection still opening when the barrier passed was never covered by it and\ncould outlive shutdown, crashing with \"Storage connection not closed:\ncontent-prefs.sqlite\". Register it in the conn getter instead, before opening.\n\nFound via bug 2058143 part 10, which calls removeByName() from the synchronous\nprofile data migration; an xpcshell test that starts one and then exits loses\nthe race.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316247",
      "email": "emz@mozilla.com",
      "hash": "67a2fce136c2a2f72d3c169cc8c816c9ad3d2c39",
      "subject": "Bug 2060504 - Close a ContentPrefService2 connection that is still opening when Sqlite shutdown begins. r=firefox-desktop-core-reviewers ,mak"
    },
    "D316250": {
      "author": "Kagami Sascha Rosylight",
      "avatar": "https://www.gravatar.com/avatar/9f759e9904275bba9b2d86f5fb12964d?d=identicon\u0026s=64",
      "cl": "D316250",
      "clUrl": "https://phabricator.services.mozilla.com/D316250",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D316250",
      "email": "krosylight@proton.me",
      "hash": "b3055aba89aa32752e9331384f5f076578b425ed",
      "subject": "Bug 2060289 - Add ignoreUsingDeclarations: true to no-unused-vars rule in configs/recommended.mjs r=Standard8,frontend-codestyle-reviewers"
    },
    "D316252": {
      "author": "smayya",
      "avatar": "https://www.gravatar.com/avatar/b032108dab3ccfada1140fb485c6e182?d=identicon\u0026s=64",
      "cl": "D316252",
      "clUrl": "https://phabricator.services.mozilla.com/D316252",
      "description": "PrefetchRecordParent::Init() created its channel via NS_NewChannelInternal\nwith a null aLoadingNode, since it runs in the parent process. The\nresulting nsILoadInfo had no associated BrowsingContext, so DevTools'\nNetwork panel which attributes requests to a tab by BrowsingContext ID\nis silently dropped every prefetch request.\n\nUse LoadInfo::CreateForNonDocument(aWGP, ...) instead, which derives the\nBrowsingContext ID (and CookieJarSettings) from the WindowGlobalParent\nalready available in Init(), matching the pattern used for other\nparent-process-initiated loads such as object/embed loads in\nDocumentLoadListener.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316252",
      "email": "smayya@mozilla.com",
      "hash": "b2c421ce28f2aad3a6abd27a7dd6508661810d42",
      "subject": "Bug 2056993 - Give speculation-rules prefetch channels a BrowsingContext-aware LoadInfo so DevTools can attribute them. r=valentin,bomsy"
    },
    "D316262": {
      "author": "Titouan Thibaud",
      "avatar": "https://www.gravatar.com/avatar/968f8efd6bc3bd81eaf677cd2184bc5b?d=identicon\u0026s=64",
      "cl": "D316262",
      "clUrl": "https://phabricator.services.mozilla.com/D316262",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D316262",
      "email": "tthibaud@mozilla.com",
      "hash": "68ac12e2f807832350e7550716a8d77fbb2fe7f5",
      "subject": "Bug 2060530 - Remove unused translate strings for `mozac_feature_relay_chip_text`. r=android-reviewers,parker,marcin"
    },
    "D316267": {
      "author": "Krist Baliev",
      "avatar": "https://www.gravatar.com/avatar/9144471bc03d7f5e8103c28b824b8f31?d=identicon\u0026s=64",
      "cl": "D316267",
      "clUrl": "https://phabricator.services.mozilla.com/D316267",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D316267",
      "email": "kbaliev@mozilla.com",
      "hash": "be03f4a8bd92dadf04a9421f7c65fefc8e8c0e46",
      "subject": "Bug 2060518: Update login-line styles in contextual password manager. r=mtigley,credential-management-reviewers"
    },
    "D316274": {
      "author": "Emilio Cobos Álvarez",
      "avatar": "https://www.gravatar.com/avatar/1d91d22a4892f16f744b31fd4286144e?d=identicon\u0026s=64",
      "cl": "D316274",
      "clUrl": "https://phabricator.services.mozilla.com/D316274",
      "description": "Also while at it be clearer about hashing in SVGImageContext, since it\nlooks like we'd be hashing hashes :)\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316274",
      "email": "emilio@crisal.io",
      "hash": "ca99efee6b1ac1899e2066a3ba7359c3d36f9f07",
      "subject": "Bug 2048635 - Don't allow param(--foo) in link-parameters. r=firefox-style-system-reviewers,firefox-svg-reviewers,dshin,longsonr"
    },
    "D316276": {
      "author": "Gijs Kruitbosch",
      "avatar": "https://www.gravatar.com/avatar/410fad5de3812b3810955d277445bced?d=identicon\u0026s=64",
      "cl": "D316276",
      "clUrl": "https://phabricator.services.mozilla.com/D316276",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D316276",
      "email": "gijskruitbosch@gmail.com",
      "hash": "7dbb2256cd59a6f8015aff1861a5e944691478dd",
      "subject": "Bug 2028648 - fix browser_customization_context.js expectation of a resized window so it doesn't fail on Windows standalone, r=florian"
    },
    "D316285": {
      "author": "Emilio Cobos Álvarez",
      "avatar": "https://www.gravatar.com/avatar/1d91d22a4892f16f744b31fd4286144e?d=identicon\u0026s=64",
      "cl": "D316285",
      "clUrl": "https://phabricator.services.mozilla.com/D316285",
      "description": "`link-parameters: param(--foo, var(--bar));` is a valid value, but has\nan arbitrary substitution function and we shouldn't just treat it as a\nparsed value.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316285",
      "email": "emilio@crisal.io",
      "hash": "f3b6370c6510ff3c2f92919f749dbc439d8f11a6",
      "subject": "Bug 2060558 - Deal with arbitrary substitution functions even if value is parsed correctly. r=firefox-style-system-reviewers,dshin"
    },
    "D316288": {
      "author": "Nicolas Silva",
      "avatar": "https://www.gravatar.com/avatar/a375423648d373880fdd9e4eccc6b920?d=identicon\u0026s=64",
      "cl": "D316288",
      "clUrl": "https://phabricator.services.mozilla.com/D316288",
      "description": "SegmentBuilder::initialize took a prim rect and a clip rect and pushed both as\nclips. Its only non-test caller is the compositor clip promotion path in\nrenderer/composite.rs, which passes the same rect for both, so collapsing the\npair into a single bounds rect changes nothing there and removes a duplicate\nclip item (and the split events it generated).\n\nThe segment unit tests keep exercising both rects: they pass the intersection\nas the bounds and still push the two rects explicitly, which is what makes them\ninteresting clips.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316288",
      "email": "nsilva@mozilla.com",
      "hash": "f5ae18b4c1525c7974e0311a10d4fac46789f55b",
      "subject": "Bug 2060286 - Give SegmentBuilder a single bounds rect. r=gw"
    },
    "D316289": {
      "author": "Nicolas Silva",
      "avatar": "https://www.gravatar.com/avatar/a375423648d373880fdd9e4eccc6b920?d=identicon\u0026s=64",
      "cl": "D316289",
      "clUrl": "https://phabricator.services.mozilla.com/D316289",
      "description": "`antialiasing_vertex` built the transform bounds by intersecting\n`local_prim_rect` with `local_clip_rect`. Despite the names, the former is\nthe rect that situates the pattern (it is fed from `QuadPrimitive.pattern_rect`)\nand the latter is the primitive's coverage rect (`QuadPrimitive.bounds`), so\nthe pattern rect was constraining where anti-aliasing is applied.\n\nThe intersection is inert today: `create_quad_primitive` rounds `bounds` to\nthe device grid but deliberately captures `pattern_rect` before rounding, so\n`bounds` can exceed `pattern_rect` by up to half a pixel, but only on the\nedges selected by `round_edges = !aa_flags` - and `edge_no_aa_offset` pushes\nthose edges out by 10 units anyway. No behavior change; this removes the\ndependency so the pattern rect can be moved independently of coverage.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316289",
      "email": "nsilva@mozilla.com",
      "hash": "7db1111dcd9097b39df4af7da55fa3efa3e40cb0",
      "subject": "Bug 2060286 - Anti-alias the quad's coverage rect, not its intersection with the pattern rect. r=gw"
    },
    "D316290": {
      "author": "Nicolas Silva",
      "avatar": "https://www.gravatar.com/avatar/a375423648d373880fdd9e4eccc6b920?d=identicon\u0026s=64",
      "cl": "D316290",
      "clUrl": "https://phabricator.services.mozilla.com/D316290",
      "description": "The quad GPU representation already carries a coverage rect (bounds) and a\nrect that situates the pattern (pattern_rect); only the PrimitiveInfo field\nnames still used the old local_prim_rect/local_clip_rect vocabulary. Pure\nrename, no behavior change.\n\nThe PrimitiveHeader path (prim_shared.glsl, ps_text_run.glsl) is untouched;\nit is still on the old representation.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316290",
      "email": "nsilva@mozilla.com",
      "hash": "a55e12a142bcc6c471731df302100639f5b865a9",
      "subject": "Bug 2060286 - Rename the quad shaders' PrimitiveInfo rect fields to pattern_rect/bounds. r=gw"
    },
    "D316291": {
      "author": "Nicolas Silva",
      "avatar": "https://www.gravatar.com/avatar/a375423648d373880fdd9e4eccc6b920?d=identicon\u0026s=64",
      "cl": "D316291",
      "clUrl": "https://phabricator.services.mozilla.com/D316291",
      "description": "`build_clip_chain_instance` already computes the primitive's coverage rect as\n`local_bounding_rect` (its extent intersected with the accumulated\naxis-aligned clip), uses it to evaluate the clip nodes and to derive\n`pic_coverage_rect`, and then throws it away. The same rect is reconstructed\nby hand further down the pipeline.\n\nStore it as `local_coverage_rect` and convert the first of those\nreconstructions: `prepare_image_quads`' `tight_clip_rect` was exactly\n`clip_chain.local_clip_rect.intersection(\u0026prim_rect).unwrap()`, with\n`prim_rect` being the snapped prim rect that `get_local_prim_coverage_rect`\nreturns for a non-picture primitive. Dropping the unwrap removes a latent\npanic.\n\n`local_clip_rect` stays: it excludes the primitive's own extent, which is what\ncallers drawing a differently-shaped sub-quad need.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316291",
      "email": "nsilva@mozilla.com",
      "hash": "e325f8e4a387d8ca279639da1c7a5e478e059433",
      "subject": "Bug 2060286 - Surface the primitive's coverage rect on ClipChainInstance. r=gw"
    },
    "D316292": {
      "author": "Nicolas Silva",
      "avatar": "https://www.gravatar.com/avatar/a375423648d373880fdd9e4eccc6b920?d=identicon\u0026s=64",
      "cl": "D316292",
      "clUrl": "https://phabricator.services.mozilla.com/D316292",
      "description": "`local_clip_rect` held only the clips that applied to the quad, and\n`prepare_quad_impl` folded the primitive's rect into the coverage on its\nbehalf. Replace it with `bounds`, which each call site fills in with the whole\ncoverage of what it is drawing: the extent, intersected with whatever extra\nclips it knows about.\n\n`prepare_quad_impl` still intersects `desc.local_rect` and the clip chain's\nlocal clip rect, so this commit is a no-op; the point is that every site now\nstates its own coverage, which is what lets the next commit drop the\n`local_rect` term.\n\n`local_rect` keeps its name until it stops affecting coverage.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316292",
      "email": "nsilva@mozilla.com",
      "hash": "6639d25b2b6ab87ca369da5e236c9a55998c96a9",
      "subject": "Bug 2060286 - Make QuadDescriptor's second rect the coverage rect. r=gw"
    },
    "D316293": {
      "author": "Nicolas Silva",
      "avatar": "https://www.gravatar.com/avatar/a375423648d373880fdd9e4eccc6b920?d=identicon\u0026s=64",
      "cl": "D316293",
      "clUrl": "https://phabricator.services.mozilla.com/D316293",
      "description": "This is the point of the series. `prepare_quad_impl` intersected\n`desc.local_rect` - the rect that situates the pattern - into the coverage\nrect, so moving or resizing the pattern changed which pixels the primitive\ncovered. The previous commit made every call site supply its own coverage, so\nthe term can go.\n\nCombining `desc.bounds` with the clip chain's accumulated local clip rect\nstays: that is a clip rect, and leaving it here means a call site that omits\nit still renders correctly rather than escaping its clip.\n\nThe only places where this term was not already redundant are the ones where\nthe pattern rect legitimately extends past the primitive: the stretch path in\n`prepare_repeatable_quad`, which bakes a stretch size larger than the prim\nrect into the pattern rect, and radial gradients, where\n`optimize_radial_gradient` shrinks the prim rect without shrinking the clip\nrect.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316293",
      "email": "nsilva@mozilla.com",
      "hash": "8e8fb477d07ada1fecf53dcaa7decaf01cefeff5",
      "subject": "Bug 2060286 - Stop folding the quad's pattern rect into its coverage. r=gw"
    },
    "D316294": {
      "author": "Nicolas Silva",
      "avatar": "https://www.gravatar.com/avatar/a375423648d373880fdd9e4eccc6b920?d=identicon\u0026s=64",
      "cl": "D316294",
      "clUrl": "https://phabricator.services.mozilla.com/D316294",
      "description": "The segmenting paths built each segment's coverage from the clip chain's bare\nclip rect, so a segment whose rect escapes the primitive was not clipped back\nto it. Compose from `desc.bounds` instead, like the repeated-tile path already\ndoes. That makes the rule for every sub-quad uniform - intersect your extent\ninto the parent's bounds - and drops the need to reach for the clip chain.\n\nOnly reachable through WebRender's own API: `create_border_segments` builds the\ncorner rects from the raw widths (the `overlap` computation exists for widths\nthat exceed the border box) and `NinePatchDescriptor::for_each_segment`\nlikewise, but a CSS border box always contains its widths. Nothing about the\ncached corner texture, the segment cache key or the radius changes - only which\npixels of the segment are painted.\n\nThe two new reftests cover both paths. Neither behavior was pinned before:\nborder-widths-exceed-box spills 3200 pixels outside the border box without\nthis change, and border-image-widths-exceed-box 21192.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316294",
      "email": "nsilva@mozilla.com",
      "hash": "cdf9180b8bb3713a8751896211c7e833468b7175",
      "subject": "Bug 2060286 - Bound border and nine-patch segments by the primitive. r=gw"
    },
    "D316295": {
      "author": "Nicolas Silva",
      "avatar": "https://www.gravatar.com/avatar/a375423648d373880fdd9e4eccc6b920?d=identicon\u0026s=64",
      "cl": "D316295",
      "clUrl": "https://phabricator.services.mozilla.com/D316295",
      "description": "Whether a quad is large enough to be worth splitting into anti-aliased edge\nstrips is a question about the area it draws, not about the rect that situates\nits pattern. With the two now separate, read `bounds`.\n\nThis is the last consumer in the quad path that read the pattern rect to make a\ncoverage decision.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316295",
      "email": "nsilva@mozilla.com",
      "hash": "98f50b52107e577414bfcdc1894d3d97ddb8e830",
      "subject": "Bug 2060286 - Pick AA edge instances based on the quad's coverage. r=gw"
    },
    "D316296": {
      "author": "Nicolas Silva",
      "avatar": "https://www.gravatar.com/avatar/a375423648d373880fdd9e4eccc6b920?d=identicon\u0026s=64",
      "cl": "D316296",
      "clUrl": "https://phabricator.services.mozilla.com/D316296",
      "description": "`image_tiling::repetitions` took the rect that anchors the pattern and used it\nfor two things: its origin as the anchor the repetitions step away from, and its\nextent to bound how many repetitions are emitted, via an intersection with the\nvisible rect. The second is a coverage decision and does not belong to a\npattern rect.\n\nDrop the intersection and let `coverage_rect` be the only rect that bounds the\nresult. Two guards replace what it also happened to do: an empty coverage rect\nreturns no repetitions as before (and keeps dodging the stride asserts), and the\ncounts are clamped at zero for a coverage rect lying entirely before the anchor.\n\nThe callers that were relying on it now say so:\n\n - `prepare_repeatable_quad` needs no change. It already intersects the\n   conservative visible rect with the quad's bounds, which makes the old\n   intersection redundant - it was not on main, where that term was the bare\n   clip rect.\n - `prepare_image_quads`' tiled path passed the conservative visible rect,\n   bounded by nothing, so bound it by the coverage rect. That is tighter than\n   the prim rect it used to be intersected with, which only drops repetitions\n   whose tiles were clipped out anyway. `tiles` keeps the untightened rect so\n   its edge flags are unaffected.\n - The image-mask clip in `clip.rs` bounds the region by the mask rect, which\n   for a repeated mask genuinely is the coverage bound. Its bug 1648323 fallback\n   can leave the visible rect outside the mask rect entirely, and relied on the\n   intersection to produce no repetitions at all.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316296",
      "email": "nsilva@mozilla.com",
      "hash": "83d458bd751223d71d8c400e1d4cd1ba25610b21",
      "subject": "Bug 2060286 - Stop bounding repetitions by the pattern rect. r=gw"
    },
    "D316297": {
      "author": "Nicolas Silva",
      "avatar": "https://www.gravatar.com/avatar/a375423648d373880fdd9e4eccc6b920?d=identicon\u0026s=64",
      "cl": "D316297",
      "clUrl": "https://phabricator.services.mozilla.com/D316297",
      "description": "Now that it no longer contributes to coverage, every remaining use situates the\npattern: the pattern builder's origin, the stretch size and repetition counts,\nthe nine-patch source slicing, and the rect written to the GPU as the quad's\npattern rect. Rename it, and the local bindings that feed it, to say so.\n\n`adjust_indirect_pattern_resolution` already took the pattern rect under the old\nname; its parameter follows.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316297",
      "email": "nsilva@mozilla.com",
      "hash": "fd76992fbba4e70f278fad1e67bff3ca246c2541",
      "subject": "Bug 2060286 - Rename QuadDescriptor::local_rect to pattern_rect. r=gw"
    },
    "D316298": {
      "author": "Nicolas Silva",
      "avatar": "https://www.gravatar.com/avatar/a375423648d373880fdd9e4eccc6b920?d=identicon\u0026s=64",
      "cl": "D316298",
      "clUrl": "https://phabricator.services.mozilla.com/D316298",
      "description": "PrimitiveHeader is the last GPU struct on the old representation. Its two\nremaining users are text runs and split composites, and for both the rename\nis exact: local_rect already only situates content (for a text run it is the\nrun anchor, and the shader reads nothing but its origin) while\nlocal_clip_rect is already the only rect that clips.\n\nRenames the Rust struct, PrimitiveHeaderF, and the matching GLSL in\nprim_shared.glsl, ps_text_run.glsl and ps_split_composite.glsl. No behavior\nchange: in particular the text run's bounds deliberately keep no prim-rect\nterm, since glyph ink extends past the authored rect.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316298",
      "email": "nsilva@mozilla.com",
      "hash": "9c633680d56d35ef71f3d69f225a5cc2b5859fb4",
      "subject": "Bug 2060286 - Move PrimitiveHeader to the bounds/pattern_rect representation. r=gw"
    },
    "D316299": {
      "author": "Nicolas Silva",
      "avatar": "https://www.gravatar.com/avatar/a375423648d373880fdd9e4eccc6b920?d=identicon\u0026s=64",
      "cl": "D316299",
      "clUrl": "https://phabricator.services.mozilla.com/D316299",
      "description": "Mechanical follow-up now that the two roles are separate everywhere.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316299",
      "email": "nsilva@mozilla.com",
      "hash": "3424c800416d49325d4dfd6bf45cae949263aefb",
      "subject": "Bug 2060286 - Rename the remaining prim-rect-as-pattern fields. r=gw"
    },
    "D316301": {
      "author": "Rémi Papillié",
      "avatar": "https://www.gravatar.com/avatar/6dbd13dd334657fae5d8837fb3cdde16?d=identicon\u0026s=64",
      "cl": "D316301",
      "clUrl": "https://phabricator.services.mozilla.com/D316301",
      "description": "Add all the required math to compute contoured paths for corner shape's\nsuperellipses.\n\nThe superellipse calculation now correctly extends outside the curved region\nfollowing the curve tangents.\n\nAlso add inset support to distance_to_shaped_rect(), and correctly test\nall corners to allow them to overlap.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316301",
      "email": "rpapillie@mozilla.com",
      "hash": "01323fef09ab23eae129df46d1e010c423603804",
      "subject": "Bug 2058091 - Implement superellipse contouring for corner-shape. r=gfx-reviewers,nical"
    },
    "D316302": {
      "author": "Rémi Papillié",
      "avatar": "https://www.gravatar.com/avatar/6dbd13dd334657fae5d8837fb3cdde16?d=identicon\u0026s=64",
      "cl": "D316302",
      "clUrl": "https://phabricator.services.mozilla.com/D316302",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D316302",
      "email": "rpapillie@mozilla.com",
      "hash": "58ac633a13d8a756a35238497df24884dd464185",
      "subject": "Bug 2058091 - Add missing min/max operators in SWGL. r=gfx-reviewers,nical"
    },
    "D316303": {
      "author": "Rémi Papillié",
      "avatar": "https://www.gravatar.com/avatar/6dbd13dd334657fae5d8837fb3cdde16?d=identicon\u0026s=64",
      "cl": "D316303",
      "clUrl": "https://phabricator.services.mozilla.com/D316303",
      "description": "Compute the contoured superellipse path in ps_quad_mask from\nthe given inset value.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316303",
      "email": "rpapillie@mozilla.com",
      "hash": "0111cc05bd46751bcd72fac3a0902492cd312a16",
      "subject": "Bug 2058091 - Add inset to ps_quad_mask. r=gfx-reviewers,nical"
    },
    "D316304": {
      "author": "Rémi Papillié",
      "avatar": "https://www.gravatar.com/avatar/6dbd13dd334657fae5d8837fb3cdde16?d=identicon\u0026s=64",
      "cl": "D316304",
      "clUrl": "https://phabricator.services.mozilla.com/D316304",
      "description": "Add support for corner-shape in box-shadows with a non-zero spread-radius.\n\nThis uses the spread radius as an inset value forwarded to ps_quad_mask.\n\nSome inset cases are not handled correctly yet, this is left as future work.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316304",
      "email": "rpapillie@mozilla.com",
      "hash": "872fecce210048fab5f5a92f7f686b3ef223f12c",
      "subject": "Bug 2048908 - Add inset to box shadows. r=gfx-reviewers,nical"
    },
    "D316311": {
      "author": "Nicolas Silva",
      "avatar": "https://www.gravatar.com/avatar/a375423648d373880fdd9e4eccc6b920?d=identicon\u0026s=64",
      "cl": "D316311",
      "clUrl": "https://phabricator.services.mozilla.com/D316311",
      "description": "Now that the profiler hooks are installed before the pool spawns its threads,\nthose threads register with the Gecko profiler, and ThreadRegistry::Register\nlazily creates an nsThread wrapper for them that is only released when the\nthread exits. Nothing waited for the pool's threads, so they could still be\nwinding down when XPCOM writes its leak log, which showed up as an intermittent\nleaked nsThread (and its Mutex) in the GPU process.\n\nKeep the threads' join handles and wait for them to exit when the pool is\ndropped. The pool's own channel clones have to be dropped before joining: the\nscene builder's SceneBuilderResult::ShutDown is consumed by the render backend's\nmain loop, so the backend's drain loop only ends once every api_tx clone is gone\nand recv() fails.\n\nAlso destroy the pool explicitly from RenderThread::ShutDown rather than\nrelying on the RenderThread destructor: the destructor runs after sRenderThread\nhas been cleared, so callbacks made by a draining backend thread could no\nlonger find the render thread.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316311",
      "email": "nsilva@mozilla.com",
      "hash": "2eab5d639ce56b13d276310a4f79aee7e100826d",
      "subject": "Bug 2060612 - Wait for the render backend pool threads to exit at shutdown. r=gfx-reviewers,lsalzman"
    },
    "D316321": {
      "author": "Delia Pop",
      "avatar": "https://www.gravatar.com/avatar/9bc6f69101aaf2750dbd3cfc9d6b37d8?d=identicon\u0026s=64",
      "cl": "D316321",
      "clUrl": "https://phabricator.services.mozilla.com/D316321",
      "description": "Converted the verifyUpdatedLoginIsSavedTest and verifyMultipleLoginsSelectionsTest UI tests to the efficiency framework.\n\nThe new UI tests successfully passed 50x on Firebase.  [[ https://treeherder.mozilla.org/jobs?repo=try\u0026landoInstance=lando-prod-2025\u0026landoCommitID=75070  | Try ]]\nAll efficiency UI tests successfully passed 1x on Firebase. [[ https://treeherder.mozilla.org/jobs?repo=try\u0026landoInstance=lando-prod-2025\u0026landoCommitID=75068 | Try ]]\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316321",
      "email": "dpop@mozilla.com",
      "hash": "202150dcdade5798ca858b843b51b20112b4d061",
      "subject": "Bug 2060474 - Migrate verifyUpdatedLoginIsSavedTest and verifyMultipleLoginsSelectionsTest UI tests to the efficiency framework r=jajohnson"
    },
    "D316340": {
      "author": "Ben Dean-Kawamura",
      "avatar": "https://www.gravatar.com/avatar/c217524744993500b5045ec968241b7d?d=identicon\u0026s=64",
      "cl": "D316340",
      "clUrl": "https://phabricator.services.mozilla.com/D316340",
      "description": "Adding vets ahead of time so that we can take the UniFFI 0.32 release.\nThis will be alongside a Glean release and app-services vendor that also\nupgrade UniFFI.\n\nThe versions here come from audit failures from Glean's CI when they\ntried to do the upgrade.  I think the patch versions could be a bit\ndifferent -- there are newer versions in a couple cases.  However, I\nwent with the ones that cargo chose for the Glean PR.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316340",
      "email": "bdk@mozilla.com",
      "hash": "f892c4a858ac24b2e94d09fc1219da62695c8b5d",
      "subject": "Bug 2060244 - Vets for UniFFI 0.32, r=janerik,supply-chain-reviewers"
    },
    "D316346": {
      "author": "Ryan Curran",
      "avatar": "https://www.gravatar.com/avatar/d0a37fafe20f8303f2651aadd8129247?d=identicon\u0026s=64",
      "cl": "D316346",
      "clUrl": "https://phabricator.services.mozilla.com/D316346",
      "description": "mochitest-remote is the only browser-chrome flavor suite running on the\nheadless VM pool, and it has been failing consistently since it was enabled.\n\nbrowser-test.js nextTest calls SimpleTest.waitForFocus before every test,\nincluding the first. That lands in SimpleTest.promiseFocus, which awaits a\nfocus event with no timeout and no fallback. Window activation never\ncompletes on these workers, so the job hangs before the first test, produces\nno output, and is killed by the 370s harness timeout on every one of its\nnine retries. A representative task burns 1h15m to produce zero results.\n\nProfiler captures taken automatically at the hang confirm the browser is\nidle rather than deadlocked: 1156 of 1157 GeckoMain samples sit in\nNative event loop idle under NSApplication run, waiting for an AppKit event\nthat never arrives.\n\nThis is not specific to mochitest-remote. mochitest-devtools-chrome was\nevaluated for this pool in June 2026 and rejected for the same signature;\nmochitest-remote only predates that finding. The block comment on this test\nset already states that suites needing focus management and browser windows\nare intentionally omitted, so this brings the list back in line with its own\nstated policy.\n\nBug 2050174 tracks the underlying window activation issue on these workers.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316346",
      "email": "rcurran@mozilla.com",
      "hash": "adc0ceedfb3c2dcc19cb41785f247e35894d05e3",
      "subject": "Bug 2059365 - Remove mochitest-remote from the macosx1500-aarch64-vms test set. r=jdescottes"
    },
    "D316347": {
      "author": "Dão Gottwald",
      "avatar": "https://www.gravatar.com/avatar/45dfe136efbb8e5f89eb0b21775ab195?d=identicon\u0026s=64",
      "cl": "D316347",
      "clUrl": "https://phabricator.services.mozilla.com/D316347",
      "description": "An engine's icon URL is a blob URL, which only resolves in the process that\ncreated it, so passing it to the child leaves a \u003cmoz-urlbar\u003e in a content\nprocess -- what the new tab page needs -- with a URL it can't load.\nUrlbarParent converts such an icon to a data URL, which loads anywhere.\n\nThe conversion sits in UrlbarParent so that the direct path keeps handing out\nthe parent's own URL and copies nothing. Base64 costs a third more than the\nbytes it carries, but the search service caps an icon at MAX_ICON_SIZE (20KB)\nand each engine is fetched once per process, so the ceiling is a few KB --\ncheap next to giving the child a blob it would have to own and revoke.\n\nWorth checking: a test can no longer compare the switcher's icon against the\nURL the search service resolves, because over the message path those are one\nimage under two URLs. searchModeSwitcherIconIs compares what they show instead,\nand the assertions that rested on URL equality go through it.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316347",
      "email": "dao@mozilla.com",
      "hash": "56cad6e42a02433a111cbbf0a2a66b3739e9ec3e",
      "subject": "Bug 2060639 - Send urlbar engine icons over the actor as data URLs. r=mbeier"
    },
    "D316357": {
      "author": "Segun Famisa",
      "avatar": "https://www.gravatar.com/avatar/ce9ff32b0db44f5692a673fddca3a516?d=identicon\u0026s=64",
      "cl": "D316357",
      "clUrl": "https://phabricator.services.mozilla.com/D316357",
      "description": "We have been having a couple of issues with the reliability of the sync, and requests getting backed off for significant periods of time.\nIn order to be gentler, we would like to change the exponential backoff policy to a linear one\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316357",
      "email": "sfamisa@mozilla.com",
      "hash": "e152e4212d19c94dfebb720a828ab44651a6e32b",
      "subject": "Bug 2041557 - Change sync worker backoff policy to linear back-off instead of exponential back-off r=markh,jonalmeida,android-reviewers"
    },
    "D316362": {
      "author": "az",
      "avatar": "https://www.gravatar.com/avatar/788a42b35c139431ccaf9575c6626a93?d=identicon\u0026s=64",
      "cl": "D316362",
      "clUrl": "https://phabricator.services.mozilla.com/D316362",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D316362",
      "email": "azebrowski@mozilla.com",
      "hash": "865645f919070e0ccab8588a17784f13543fc26f",
      "subject": "Bug 2060653 - Remove unused RemoteMediaDataEncoderParent::mManagerThread member r=aosmond,media-playback-reviewers"
    },
    "D316392": {
      "author": "Steve Fink",
      "avatar": "https://www.gravatar.com/avatar/31f940cb8df709df2597484cda2b7f34?d=identicon\u0026s=64",
      "cl": "D316392",
      "clUrl": "https://phabricator.services.mozilla.com/D316392",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D316392",
      "email": "sfink@mozilla.com",
      "hash": "73dc906c1a0bb92020d124a692329f335933ab57",
      "subject": "Bug 2057458 - Remove assertion that depends on marking only a single object for testing r=spidermonkey-reviewers,jonco"
    },
    "D316395": {
      "author": "Glenn Watson",
      "avatar": "https://www.gravatar.com/avatar/3d823baa293744dbe3cbe8ce33d77065?d=identicon\u0026s=64",
      "cl": "D316395",
      "clUrl": "https://phabricator.services.mozilla.com/D316395",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D316395",
      "email": "git@chillybin.org",
      "hash": "a6a10fd10203348f48feb1eb79861d169f3e85ed",
      "subject": "Bug 2060674 - Fix distrobox sharing shader cache with host r=gfx-reviewers,lsalzman"
    },
    "D316397": {
      "author": "Lee Salzman",
      "avatar": "https://www.gravatar.com/avatar/029a38b9773f1943419c24b7c3d93761?d=identicon\u0026s=64",
      "cl": "D316397",
      "clUrl": "https://phabricator.services.mozilla.com/D316397",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D316397",
      "email": "lsalzman@mozilla.com",
      "hash": "ba9d92c857db2b2e6215171ffad927e3a9a58662",
      "subject": "Bug 2057183 - Rename SWGL's __VERSION__ to __SWGL_GLSL_VERSION__. r=gfx-reviewers,gw"
    },
    "D316430": {
      "author": "Colden Cullen",
      "avatar": "https://www.gravatar.com/avatar/293f65f82629e08b81f8f4c2a8246de7?d=identicon\u0026s=64",
      "cl": "D316430",
      "clUrl": "https://phabricator.services.mozilla.com/D316430",
      "description": "These aren't actually used anywhere, and make re-using Pseudo implementations between different parsers MUCH more complicated.\n\nThis is technically a breaking change, as downstreams will need to\nremove the type definition, but that's all that's required (see\nstyle/servo/selector_parser.rs for required changes).\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316430",
      "email": "colden@coldencullen.com",
      "hash": "856a07b9fd1b6112f2869f9ceff5e9ecd74c3706",
      "subject": "Bug 2060708: Remove unused type Impl from traits r=firefox-style-system-reviewers,emilio"
    },
    "D316431": {
      "author": "Updatebot",
      "avatar": "https://www.gravatar.com/avatar/cd270ac15e761e2d4c08e9c9b7cfecca?d=identicon\u0026s=64",
      "cl": "D316431",
      "clUrl": "https://phabricator.services.mozilla.com/D316431",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D316431",
      "email": "updatebot@mozilla.com",
      "hash": "147720b22799d98c00ddcd808a9b5508618b4689",
      "subject": "Bug 2060710 - Update PDF.js to 5f181fd8b0db777e18566bf1972848d700f0b44d r=pdfjs-reviewers,calixte"
    },
    "D316436": {
      "author": "Mike Hommey",
      "avatar": "https://www.gravatar.com/avatar/5d5f37905f36ca9989f88861a702cff3?d=identicon\u0026s=64",
      "cl": "D316436",
      "clUrl": "https://phabricator.services.mozilla.com/D316436",
      "description": "In some cases, IPC messages between the sccache client and sccache\nserver are too large for the default frame length, and we had a work\naround for some of those cases that happened in CI some time ago.\n\nTurning on the sccache client-side mode makes this IPC default frame\nlength problem worse, preventing the caching of many rust crate build\noutput.  So at least until sccache is improved to handle the situation\nmore smoothly, we're going to need to increase the frame length.\n\nThe previous workaround only applied to automation, where\nmozconfig.cache is used. We however now need to apply it more globally,\nsetting the variable from configure whenever sccache is in use instead,\nalongside the other sccache variables, which also gets it in the\nenvironment of whatever starts the sccache daemon: configure's own\ncompiler checks, make, or client.mk.\n\nThis only moves the setting, without changing the value just yet.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316436",
      "email": "mh+mozilla@glandium.org",
      "hash": "8ff29f8d3883f8b13efb95643afe6352d09f3696",
      "subject": "Bug 2059632 - Move SCCACHE_MAX_FRAME_LENGTH out of mozconfig.cache. r=firefox-build-system-reviewers,ahochheiden"
    },
    "D316437": {
      "author": "Mike Hommey",
      "avatar": "https://www.gravatar.com/avatar/5d5f37905f36ca9989f88861a702cff3?d=identicon\u0026s=64",
      "cl": "D316437",
      "clUrl": "https://phabricator.services.mozilla.com/D316437",
      "description": "Also increase the sccache max frame length to work around caching issues\nwith large build outputs.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316437",
      "email": "mh+mozilla@glandium.org",
      "hash": "aed87c3e0841a58bb57f7dbeb38b0dae1c837c9b",
      "subject": "Bug 2059632 - Enable sccache client side mode. r=firefox-build-system-reviewers,ahochheiden"
    },
    "D316438": {
      "author": "nirmaladvani",
      "avatar": "https://www.gravatar.com/avatar/a61e6ca34b9dfc93535b51aac017954c?d=identicon\u0026s=64",
      "cl": "D316438",
      "clUrl": "https://phabricator.services.mozilla.com/D316438",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D316438",
      "email": "nirmaladvani@live.com",
      "hash": "70483802e079d4e50ed0626cf5d266d6683fb80e",
      "subject": "Bug 2060649 - Remove unused BounceTrackingState::ShouldCreateBounceTrackingStateForBC declaration r=emz"
    },
    "D316441": {
      "author": "Stephen Thompson",
      "avatar": "https://www.gravatar.com/avatar/f7173a41a5f3f5f210e160e79dda5488?d=identicon\u0026s=64",
      "cl": "D316441",
      "clUrl": "https://phabricator.services.mozilla.com/D316441",
      "description": "browser_startup_flicker.js fails on macOS under both Proton and Nova designs. Two icons and the active tab are animating their opacity while the window activates, but `isLikelyFocusChange` does not return true because it is only being passed the rects for the two icons. `isLikelyFocusChange` needs three or more rects to change at once.\n\nThe main change I made is to allow 2 or more rects in the titlebar to be identified as a focus change. This is sufficient to fix the test for macOS with both Nova and Proton. It feels like there's a risk that this could mask unwanted flickers in the future, though.\n\nThe Nova design does not have a shadow around the active tab, so I removed that exception when the test is running with Nova enabled. This is not necessary to fix the test, but this will hopefully be a flag for us to remove this exception entirely during post-Nova codebase cleanup.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316441",
      "email": "sthompson@mozilla.com",
      "hash": "f0bd7c0bfb4fed796b1a025c8422521cbaa28f34",
      "subject": "Bug 1999420 - relax flicker test focus change detection rules r=emilio"
    },
    "D316459": {
      "author": "Updatebot",
      "avatar": "https://www.gravatar.com/avatar/cd270ac15e761e2d4c08e9c9b7cfecca?d=identicon\u0026s=64",
      "cl": "D316459",
      "clUrl": "https://phabricator.services.mozilla.com/D316459",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D316459",
      "email": "updatebot@mozilla.com",
      "hash": "bdc1e7772e99f9be35c6629e4c3a537dea18545b",
      "subject": "Bug 2060759 - Update android nightly application-services version bump to e15eae17ef0a4ccc5f3584ff7a9c6b57677a4058 r=release-managers,dmeehan"
    },
    "D316487": {
      "author": "Mike Hommey",
      "avatar": "https://www.gravatar.com/avatar/5d5f37905f36ca9989f88861a702cff3?d=identicon\u0026s=64",
      "cl": "D316487",
      "clUrl": "https://phabricator.services.mozilla.com/D316487",
      "description": "It's currently limited to MINGW, but MSVC has had those headers for a\nwhile. Switching to clang 22 causes a build failure with the alternative\ncode path, so this preventively fixes it.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316487",
      "email": "mh+mozilla@glandium.org",
      "hash": "af5513e31ca8d5bfa92216ee17ae9531fb585a28",
      "subject": "Bug 2060781 - Make the GNU make build system use stdint.h and inttypes.h on Windows. r=sylvestre"
    },
    "D316536": {
      "author": "longsonr",
      "avatar": "https://www.gravatar.com/avatar/c5d912dac5c74b47bbaff7164f5f8bb8?d=identicon\u0026s=64",
      "cl": "D316536",
      "clUrl": "https://phabricator.services.mozilla.com/D316536",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D316536",
      "email": "longsonr@gmail.com",
      "hash": "8bcd9b687fd218fd17aeca2ed7754889d770d856",
      "subject": "Bug 2060873 - Let svg.new-getBBox.enabled and svg.Moz2D.strokeBounds.enabled ride the trains r=emilio"
    },
    "a521925ce15f": {
      "author": "moz-wptsync-bot",
      "avatar": "https://www.gravatar.com/avatar/c26d4d31bbd58c7c2201edd90d400494?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "MANUAL PUSH: wpt sync bot\n\nwpt-head: 5571fcea703e6a567e714aed82670749d6064c6e\nwpt-type: landing",
      "email": "wptsync@mozilla.com",
      "hash": "a521925ce15fa17e7f4dc3b58c9abe6a0bd0e2d0",
      "subject": "Bug 2060607 - [wpt-sync] Update web-platform-tests to 5571fcea703e6a567e714aed82670749d6064c6e, a=testonly"
    },
    "a7a6374bb766": {
      "author": "Hyowon Kim",
      "avatar": "https://www.gravatar.com/avatar/c42b48211e9351e41e397cdfebdd5425?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "Automatic update from web-platform-tests\nFix clipboard permissions-policy tests timing out\n\npermissions-policy-clipboard-{read,write}.html were sending\n{enabled: true/false} but test_feature_availability() filters on\nevt.data.type === 'availability-result', so test.done() was never\ncalled. Add the type field to fix the mismatch.\n\nBug: 492280259\nChange-Id: I0644ec5399ef87039818d13f8b220c7578cabfe1\nReviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/8185536\nCommit-Queue: Hyowon Kim \u003chyowon@igalia.com\u003e\nReviewed-by: Ari Chivukula \u003carichiv@chromium.org\u003e\nCr-Commit-Position: refs/heads/main@{#1673006}\n\n--\n\nwpt-commits: 82d79deebb4ae4b03edb6ab5316b8749298279a9\nwpt-pr: 61684",
      "email": "hyowon@igalia.com",
      "hash": "a7a6374bb766d1dd9e73d95b84e78bfe34db1b6c",
      "subject": "Bug 2060175 [wpt PR 61684] - Fix clipboard permissions-policy tests timing out, a=testonly"
    },
    "a9201949a410": {
      "author": "agoloman",
      "avatar": "https://www.gravatar.com/avatar/cd12c4a70c28dead95af1f72ff892316?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "",
      "email": "agoloman@mozilla.com",
      "hash": "a9201949a410b73b784acc012001f6bc7387e7d3",
      "subject": "Bug 2060607 - update wpt metadata."
    },
    "aed278276993": {
      "author": "dependabot[bot]",
      "avatar": "https://www.gravatar.com/avatar/48ea49be76d0c68403a7f3df87e3487d?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "Automatic update from web-platform-tests\nBump docker/login-action from 4.4.0 to 4.6.0\n\nBumps [docker/login-action](https://github.com/docker/login-action) from 4.4.0 to 4.6.0.\n- [Release notes](https://github.com/docker/login-action/releases)\n- [Commits](https://github.com/docker/login-action/compare/af1e73f918a031802d376d3c8bbc3fe56130a9b0...dbcb813823bdd20940b903addbd779551569679f)",
      "email": "49699333+dependabot[bot]@users.noreply.github.com",
      "hash": "aed278276993dd55023f6edab338942a46b85383",
      "subject": "Bug 2060398 [wpt PR 61698] - Bump docker/login-action from 4.4.0 to 4.6.0, a=testonly"
    },
    "b8ce5e7d1ea8": {
      "author": "moz-wptsync-bot",
      "avatar": "https://www.gravatar.com/avatar/c26d4d31bbd58c7c2201edd90d400494?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "wpt-pr: 61707\nwpt-type: metadata",
      "email": "wptsync@mozilla.com",
      "hash": "b8ce5e7d1ea849c0cfe64cd3985b420d0f644c2c",
      "subject": "Bug 2060434 [wpt PR 61707] - Update wpt metadata, a=testonly"
    },
    "bb331b30578f": {
      "author": "Roberto Rodriguez",
      "avatar": "https://www.gravatar.com/avatar/45f4995b936231d4893f38e70cbc4805?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "Automatic update from web-platform-tests\nWebKit export of https://bugs.webkit.org/show_bug.cgi?id=319508\n\n--\n\nwpt-commits: 82150ed7f0a219c6af5bf5d584567116bdcebfa8\nwpt-pr: 61653",
      "email": "roberto_rodriguez2@apple.com",
      "hash": "bb331b30578f904852323b700c82710c80ec20bf",
      "subject": "Bug 2059677 [wpt PR 61653] - WebKit export of https://bugs.webkit.org/show_bug.cgi?id=319508, a=testonly"
    },
    "bf46e424a8b9": {
      "author": "moz-wptsync-bot",
      "avatar": "https://www.gravatar.com/avatar/c26d4d31bbd58c7c2201edd90d400494?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "wpt-pr: 61704\nwpt-type: metadata",
      "email": "wptsync@mozilla.com",
      "hash": "bf46e424a8b910f1858369e9973470943fd276e5",
      "subject": "Bug 2060424 [wpt PR 61704] - Update wpt metadata, a=testonly"
    },
    "c29cc56528f5": {
      "author": "Silaghi",
      "avatar": "https://www.gravatar.com/avatar/81acf29bb88b2a0ded61f47b93c59dea?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "This reverts commit 4889e720448b570304f42ff7ee6af52ef5c2f1f2.",
      "email": "asilaghi@mozilla.com",
      "hash": "c29cc56528f5f15ada21238573da73bcb4b83c04",
      "subject": "Revert \"Bug 2042994 - Parse and serialize -webkit-line-clamp as a legacy shorthand for line-clamp. r=AlaskanEmily,dshin,firefox-style-system-reviewers,emilio\" for causing wr at /line-clamp-034.html"
    },
    "c2d4b77e23d0": {
      "author": "agoloman",
      "avatar": "https://www.gravatar.com/avatar/cd12c4a70c28dead95af1f72ff892316?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "This reverts commit a53d0867cbd629506409a6878624a59d60df69f0.\n\nRevert \"Bug 2044501 - Add cached async codec-support path for MediaCapabilities decode behind a pref. r=media-playback-reviewers,alwu\"\n\nThis reverts commit 76004a6b2462d6faadb10803de77d8d63157f4c9.\n\nRevert \"Bug 2044501 - Add RemoteMediaManagerChild::EnsureCodecSupportFor for async HW codec support queries. r=media-playback-reviewers,alwu\"\n\nThis reverts commit 4d91a741e3ca769461a20d82ce1011e16cb3e92f.",
      "email": "agoloman@mozilla.com",
      "hash": "c2d4b77e23d00b1dc3c7d70bd97504773a0a5694",
      "subject": "Revert \"Bug 2044501 - Add moz-WPT for new media-capabilities supports-cache pref. r=media-playback-reviewers,alwu\" for causing wpt unexpected passes."
    },
    "d4bf43c844d3": {
      "author": "agoloman",
      "avatar": "https://www.gravatar.com/avatar/cd12c4a70c28dead95af1f72ff892316?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "This reverts commit ee4dd00e853d252b0263c2e16d72574ffc4946bf.",
      "email": "agoloman@mozilla.com",
      "hash": "d4bf43c844d37a7c82b179edf71a8509310cefa7",
      "subject": "Revert \"Bug 2057352 - Only accept modifying existing attributes in nested resource updates. r=devtools-reviewers,nchevobbe\" as requeste by dev."
    },
    "d77a7079309c": {
      "author": "agoloman",
      "avatar": "https://www.gravatar.com/avatar/cd12c4a70c28dead95af1f72ff892316?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "This reverts commit 3f6b989a6b866ec8bb982ecadd1eb573ba78264b.\n\nRevert \"Bug 2039416 - Update builders to rustc 1.95. r=firefox-build-system-reviewers,sergesanspaille\"\n\nThis reverts commit 7ad170b516de70551779e80d27ec840f70386406.",
      "email": "agoloman@mozilla.com",
      "hash": "d77a7079309c62539ac45cf6ec322bd42cb09714",
      "subject": "Revert \"Bug 1977771, Bug 2039416 - Update builders to clang 22. r=firefox-build-system-reviewers,sergesanspaille\" for causing toolchain failures."
    },
    "d84fa0b5fdc2": {
      "author": "Nina Satragno",
      "avatar": "https://www.gravatar.com/avatar/e755b297dbfe61dba9252243e2adefca?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "Automatic update from web-platform-tests\n[webdriver] Add suggested reviewers for WebAuthn\n\nAdd nsatragno (myself) and whimboo as suggested reviewers for the\nWebAuthn webdriver tests.\n\nSee issue #20684\n\n--\n\nwpt-commits: e1964b2b9e68e86c4f59ebf78f57a4611e4b67b7\nwpt-pr: 61551",
      "email": "nsatragno@google.com",
      "hash": "d84fa0b5fdc27a108a86be6ccc94f377970367bf",
      "subject": "Bug 2058250 [wpt PR 61551] - [webdriver] Add suggested reviewers for the WebDriver WebAuthn folder, a=testonly"
    },
    "da654e92f196": {
      "author": "agoloman",
      "avatar": "https://www.gravatar.com/avatar/cd12c4a70c28dead95af1f72ff892316?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "This reverts commit f57a88af44ba8e36337758b1b7162e9cd33cafd1.",
      "email": "agoloman@mozilla.com",
      "hash": "da654e92f196e3e1faea42213569d4452485503a",
      "subject": "Revert \"Bug 2044636 - Route MediaCapabilities WebRTC and encode paths through async codec support. r=media-playback-reviewers,webrtc-reviewers,bwc,padenot\" for causing build bustages @TestWebrtcCodecFactory.cpp."
    },
    "e7c5c11627a2": {
      "author": "Yoshisto Yanagisawa",
      "avatar": "https://www.gravatar.com/avatar/05dc6ec69fee144308c4ecca9a1cdea9?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "Automatic update from web-platform-tests\nServiceWorker: Do not set timing_allow_passed for filtered subresource responses\n\nServiceWorkerSubresourceLoader::StartResponse sets `timing_allow_passed`\non the response head. This should only be set for same-origin (kBasic)\nor synthetic (kDefault) responses, and not for filtered responses\n(kCors, kOpaque, kOpaqueRedirect, etc.).\n\nTAG=agy\nCONV=486ca596-5fda-41bd-8a3e-dfe09b7d70fe\n\nBug: 517092658\nChange-Id: Iae1cb465902187cc8724d1000676451a5c68f18d\nReviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/8182169\nReviewed-by: Shunya Shishido \u003csisidovski@chromium.org\u003e\nCommit-Queue: Yoshisato Yanagisawa \u003cyyanagisawa@chromium.org\u003e\nCr-Commit-Position: refs/heads/main@{#1673052}\n\n--\n\nwpt-commits: eb56b4751033eb5f67589fcf07e8c7574114dc9f\nwpt-pr: 61704",
      "email": "yyanagisawa@chromium.org",
      "hash": "e7c5c11627a28acbdd70f410a4362c6097ced0d1",
      "subject": "Bug 2060424 [wpt PR 61704] - ServiceWorker: Do not set timing_allow_passed for filtered subresource responses, a=testonly"
    },
    "eed399fe82de": {
      "author": "Alexandru Marc",
      "avatar": "https://www.gravatar.com/avatar/f90e8bfbc9c1383d73053a8809b77e48?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "This reverts commit 4c6076be4cef3427b7c0843def5d276a04cefe28.",
      "email": "amarc@mozilla.com",
      "hash": "eed399fe82defc92426e628ce5da79dd23785e28",
      "subject": "Revert \"Bug 2057317 - Provide the New Tab context id to the Mozilla Ads Client r=mconley\" for causing xpcshell failures @ test_AdsClient"
    },
    "f4dc24c1ff21": {
      "author": "moz-wptsync-bot",
      "avatar": "https://www.gravatar.com/avatar/c26d4d31bbd58c7c2201edd90d400494?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "wpt-pr: 61708\nwpt-type: metadata",
      "email": "wptsync@mozilla.com",
      "hash": "f4dc24c1ff210965bce141404f9206a8c36e2fd0",
      "subject": "Bug 2060437 [wpt PR 61708] - Update wpt metadata, a=testonly"
    },
    "f7ce3f61bbbf": {
      "author": "Jose Dapena Paz",
      "avatar": "https://www.gravatar.com/avatar/72b397b3ee04435973aabf5c6966b1ca?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "Automatic update from web-platform-tests\nContainer Timing: rename containertiming-ignore to containertimingignore\n\nThe standard discussion [1] concluded that a dashed HTML content\nattribute is inappropriate for the ignore marker. It should be spelled\n`containertimingignore` (no dash), consistent with how HTML content\nattributes are conventionally named. The JS accessor remains\n`containerTimingIgnore`.\n\n[1] https://github.com/WICG/container-timing/issues/65\n\n`containertimingignore` becomes the canonical spelling.\n\nBoth are spelling are:\n- Functional. Though the dashed `containertiming-ignore` spelling is\ndeprecated (showing a console warning when found).\n- Firing the existing use counter.\n- Read through the HasContainerTimingIgnoreAttribute() helper, that\nshould go away with the dashed spelling once the origin trial ends.\n\nBug: 539984792\nChange-Id: I2af8a3a007c5387a1dce58d23e60cd6fca2564ac\nReviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/8166600\nReviewed-by: Scott Haseley \u003cshaseley@chromium.org\u003e\nCommit-Queue: José Dapena Paz \u003cjdapena@igalia.com\u003e\nCr-Commit-Position: refs/heads/main@{#1672798}\n\n--\n\nwpt-commits: afc63310c3991e10dd182555b91c34be7ddaf4b1\nwpt-pr: 61693",
      "email": "jdapena@igalia.com",
      "hash": "f7ce3f61bbbf0c2d9d0104ced5891e8220fe5ca1",
      "subject": "Bug 2060348 [wpt PR 61693] - Container Timing: rename containertiming-ignore to containertimingignore, a=testonly"
    },
    "fbc01907a368": {
      "author": "agoloman",
      "avatar": "https://www.gravatar.com/avatar/cd12c4a70c28dead95af1f72ff892316?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "This reverts commit abe6cd3ead8e5aada0ba7341b0cd81dc9b9ae152.",
      "email": "agoloman@mozilla.com",
      "hash": "fbc01907a368f3c1bcf95653c5fda48099a4688b",
      "subject": "Revert \"Bug 2048566 - Gate WebRTC GMP codec creation on plugin availability. r=webrtc-reviewers,bwc\" for causing webrtc and media failures."
    },
    "fc15c4205d27": {
      "author": "moz-wptsync-bot",
      "avatar": "https://www.gravatar.com/avatar/c26d4d31bbd58c7c2201edd90d400494?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "wpt-pr: 61551\nwpt-type: metadata",
      "email": "wptsync@mozilla.com",
      "hash": "fc15c4205d27576eb8ad92caf341e6dc345f7bf1",
      "subject": "Bug 2058250 [wpt PR 61551] - Update wpt metadata, a=testonly"
    }
  },
  "date": "2026-08-05",
  "days": 1,
  "generatedAt": "2026-08-05T22:09:00Z",
  "markdown": "## Highlights\n- **Privacy** Firefox ripped out cookie banner handling across desktop, GeckoView, android-components, and Fenix, including profile cleanup for existing data. [Phab D314673](https://phabricator.services.mozilla.com/D314673) [Phab D314665](https://phabricator.services.mozilla.com/D314665) [Phab D314667](https://phabricator.services.mozilla.com/D314667) [Phab D314675](https://phabricator.services.mozilla.com/D314675)\n- **Web Platform** CSS @supports gained `at-rule()`, which is a real author-facing capability bump for feature detection. [Phab D315884](https://phabricator.services.mozilla.com/D315884)\n- **Web Platform** Speculation Rules work moved forward with tracking of speculatable links and predicate-based speculative loads. [Phab D305691](https://phabricator.services.mozilla.com/D305691) [Phab D307970](https://phabricator.services.mozilla.com/D307970)\n- **Rendering** SVG `getBBox` and Moz2D stroke bounds prefs are riding the trains, pushing newer SVG geometry behavior closer to users. [Phab D316536](https://phabricator.services.mozilla.com/D316536)\n- **Security** WebRTC camera capture now validates PipeWire frame sizes to prevent out-of-bounds reads. [Phab D316000](https://phabricator.services.mozilla.com/D316000)\n- **Media** MediaCapabilities decode and WebRTC encode paths were routed through async codec support, with a new cached support-query path behind a pref. [Phab D304787](https://phabricator.services.mozilla.com/D304787) [Phab D304785](https://phabricator.services.mozilla.com/D304785) [Phab D304784](https://phabricator.services.mozilla.com/D304784)\n- **DevTools** DevTools can now show `::picker` rules in the Rules view and computed matched selectors. [Phab D315258](https://phabricator.services.mozilla.com/D315258) [Phab D315259](https://phabricator.services.mozilla.com/D315259)\n- **V8** The JS engine landed a 10-part generator resume pipeline refactor in Warp and Baseline, setting up cleaner inlining and tracing behavior. [Phab D316193](https://phabricator.services.mozilla.com/D316193) [Phab D316198](https://phabricator.services.mozilla.com/D316198) [Phab D316202](https://phabricator.services.mozilla.com/D316202)\n- **UI** Firefox gained support for reordering containers and added dismissable sync promos in app menu bookmarks and history. [Phab D315903](https://phabricator.services.mozilla.com/D315903) [Phab D315146](https://phabricator.services.mozilla.com/D315146) [Phab D314168](https://phabricator.services.mozilla.com/D314168)\n- **Build** Toolchain churn was heavy: clang 22, rustc 1.95, sccache client-side mode, and Windows build fixes all landed, though not without some same-day backouts. [Phab D310746](https://phabricator.services.mozilla.com/D310746) [Phab D310745](https://phabricator.services.mozilla.com/D310745) [Phab D316437](https://phabricator.services.mozilla.com/D316437) [Phab D316487](https://phabricator.services.mozilla.com/D316487)\n\n## What landed by area\n\n### Firefox UI\n- **UI** Container tabs can now be reordered. [Phab D315903](https://phabricator.services.mozilla.com/D315903)\n- **UI** Urlbar SERP and search-form loads now pin the target browser more reliably. [Phab D315343](https://phabricator.services.mozilla.com/D315343)\n- **UI** Urlbar engine icons are now sent over the actor as data URLs. [Phab D316347](https://phabricator.services.mozilla.com/D316347)\n- **UI** The star/bookmark state now updates correctly across multiple bookmark changes. [Phab D315814](https://phabricator.services.mozilla.com/D315814)\n- **UI** New Tab top sites gained a notification badge and customize toggle. [Phab D308102](https://phabricator.services.mozilla.com/D308102)\n- **UI** New Tab top sites also gained a notifications hover card. [Phab D308103](https://phabricator.services.mozilla.com/D308103)\n- **UI** Web notifications are now captured into a live New Tab slice. [Phab D311747](https://phabricator.services.mozilla.com/D311747)\n- **UI** Notification shown/closed events are now reported to chrome observers. [Phab D311746](https://phabricator.services.mozilla.com/D311746)\n- **UI** The top sites notification work also vendored the double-checkmark icon. [Phab D315132](https://phabricator.services.mozilla.com/D315132)\n- **UI** Bookmarks panel got a dismissable sync promo. [Phab D315146](https://phabricator.services.mozilla.com/D315146)\n- **UI** History panel got a dismissable sync promo. [Phab D314168](https://phabricator.services.mozilla.com/D314168)\n- **UI** Promo buttons gained a dismiss action. [Phab D314167](https://phabricator.services.mozilla.com/D314167)\n- **UI** Smart Window Tasks monitor messaging now includes localized strings and an about:smartwindowtasks link. [Phab D315044](https://phabricator.services.mozilla.com/D315044)\n- **UI** The Smart Window \"Organize Tabs\" button is now gated on minimum RAM. [Phab D314471](https://phabricator.services.mozilla.com/D314471)\n- **UI** Nova-related customization menu tests were fixed up. [Phab D316071](https://phabricator.services.mozilla.com/D316071)\n- **UI** Windows standalone customization test expectations were fixed to stop assuming a resized window. [Phab D316276](https://phabricator.services.mozilla.com/D316276)\n- **UI** Help panel cloning tests now skip `helpSwitchDevice` when Nova is enabled. [Phab D315998](https://phabricator.services.mozilla.com/D315998)\n- **UI** Tab group colors stopped double-applying `light-dark()`. [Phab D315905](https://phabricator.services.mozilla.com/D315905)\n- **UI** View results are no longer reused across pages. [Phab D316244](https://phabricator.services.mozilla.com/D316244)\n- **UI** Browser usage telemetry now properly reports `browser.nova.enabled` and fixed its idle-daily observer path. [Phab D316147](https://phabricator.services.mozilla.com/D316147) [Phab D316146](https://phabricator.services.mozilla.com/D316146)\n- **UI** Search mode telemetry now measures how often users type a query that looks like a URL. [Phab D304558](https://phabricator.services.mozilla.com/D304558)\n- **UI** Crossword telemetry now filters iframe echoes and double interactions. [Phab D316036](https://phabricator.services.mozilla.com/D316036)\n\n### Privacy, Security, and Policies\n- **Privacy** Desktop protections panel and preferences lost cookie banner handling UI. [Phab D314665](https://phabricator.services.mozilla.com/D314665)\n- **Privacy** Messaging surfaces and the private browsing promo for cookie banners were removed. [Phab D314666](https://phabricator.services.mozilla.com/D314666)\n- **Privacy** Fenix cookie banner UI was removed. [Phab D314667](https://phabricator.services.mozilla.com/D314667)\n- **Privacy** Focus lost its cookie banner reducer. [Phab D314668](https://phabricator.services.mozilla.com/D314668)\n- **Privacy** Android Components lost the cookie banner handling API. [Phab D314670](https://phabricator.services.mozilla.com/D314670)\n- **Privacy** GeckoView lost the cookie banner handling API. [Phab D314671](https://phabricator.services.mozilla.com/D314671)\n- **Privacy** Cookie banner clear-data integration was removed. [Phab D314672](https://phabricator.services.mozilla.com/D314672)\n- **Privacy** The underlying cookie banner handling implementation was removed. [Phab D314673](https://phabricator.services.mozilla.com/D314673)\n- **Privacy** Existing profiles now clear stored cookie banner data during migration. [Phab D314675](https://phabricator.services.mozilla.com/D314675)\n- **Privacy** An unused bounce tracking declaration was deleted. [Phab D316438](https://phabricator.services.mozilla.com/D316438)\n- **Privacy** Android IP protection copy was updated to match Figma. [Phab D315647](https://phabricator.services.mozilla.com/D315647)\n- **Security** Firefox added an enterprise site policy for HTTPS-Only Mode. [Phab D316221](https://phabricator.services.mozilla.com/D316221)\n- **Security** Windows InstallTime crash annotations were stabilized. [Phab D314977](https://phabricator.services.mozilla.com/D314977)\n- **Security** PipeWire video capture validates camera frame sizes to avoid OOB reads. [Phab D316000](https://phabricator.services.mozilla.com/D316000)\n- **Security** The sandbox now allows RDD XWayland socket and Xauthority access on Wayland for Vulkan Video. [Phab D315912](https://phabricator.services.mozilla.com/D315912)\n\n### Web Platform, DOM, and Networking\n- **Web Platform** Firefox now",
  "repo": "firefox",
  "repoDisplay": "Firefox",
  "rollGroups": [
    {
      "name": "No",
      "count": 6
    }
  ],
  "since": "2026-08-05",
  "totals": {
    "commits": 211,
    "features": 205,
    "rolls": 6
  },
  "until": "2026-08-05"
}