{
  "commits": {
    "4acec8accc70": {
      "author": "rperta",
      "avatar": "https://www.gravatar.com/avatar/95787d55656c719bd5b0c6754f5449a3?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "This reverts commit 8cfa6c3f739f69038908491cc43cdb059d85e5ad.\n\nRevert \"Bug 2054848 - Part 5: Stop mozJSModuleLoader.h from including ModuleLoaderBase.h. r=arai\"\n\nThis reverts commit dcbef1e53f13c1915bbc42ed4e6a52e9e057cdde.\n\nRevert \"Bug 2054848 - Part 4: Stop SandboxPrivate.h and SystemGlobal.h from including ModuleLoaderBase.h. r=mccr8\"\n\nThis reverts commit ecb9d9cc2e2b5fc771450f9c1753a04a3d5b57d0.\n\nRevert \"Bug 2054848 - Part 3: Stop dom/script and dom/workers ScriptLoader.h from including ModuleLoaderBase.h. r=dom-worker-reviewers,dom-core-reviewers,jjaschke,edenchuang\"\n\nThis reverts commit f2f9097132b488d0bd7915da235de4eca63d1c50.\n\nRevert \"Bug 2054848 - Part 2: Stop WorkerPrivate.h and WorkerScope.h from including ModuleLoaderBase.h. r=dom-worker-reviewers,media-playback-reviewers,bvandersloot,edenchuang,padenot\"\n\nThis reverts commit c46250149aaaf2a25566d8cbb325c8819d00b165.\n\nRevert \"Bug 2054848 - Part 1: Extract ScriptLoaderInterface into its own header. r=jonco\"\n\nThis reverts commit d2ac2d0b5981cd881b68fd930953aa722dfbfb88.",
      "email": "rperta@mozilla.com",
      "hash": "4acec8accc70cc1c95fd97bc7fa613245a4820ec",
      "subject": "Revert \"Bug 2054848 - Part 6: Add a lint forbidding new header #includes of ModuleLoaderBase.h. r=linter-reviewers,ahal\" for causing build bustages at DocAccessibleWrap.cpp"
    },
    "5592282568e9": {
      "author": "rperta",
      "avatar": "https://www.gravatar.com/avatar/95787d55656c719bd5b0c6754f5449a3?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "",
      "email": "rperta@mozilla.com",
      "hash": "5592282568e92a122282d12b6f1e023fa92c77cc",
      "subject": "Bug 2052162 - metadata update"
    },
    "D311445": {
      "author": "Randell Jesup",
      "avatar": "https://www.gravatar.com/avatar/707a3249883bc1c42dbd54339c8daf44?d=identicon\u0026s=64",
      "cl": "D311445",
      "clUrl": "https://phabricator.services.mozilla.com/D311445",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D311445",
      "email": "rjesup@mozilla.com",
      "hash": "f78cd1fbae9251499975dc2b3811099da21baaf7",
      "subject": "Bug 2053976: Add WPT for gamepad to perform HTML user activation r=dom-core-reviewers,smaug"
    },
    "D312006": {
      "author": "Yoshi Cheng-Hao Huang",
      "avatar": "https://www.gravatar.com/avatar/0363e83e6e847e7090abbbafb08716ee?d=identicon\u0026s=64",
      "cl": "D312006",
      "clUrl": "https://phabricator.services.mozilla.com/D312006",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D312006",
      "email": "allstars.chh@gmail.com",
      "hash": "d2ac2d0b5981cd881b68fd930953aa722dfbfb88",
      "subject": "Bug 2054848 - Part 1: Extract ScriptLoaderInterface into its own header. r=jonco"
    },
    "D312007": {
      "author": "Yoshi Cheng-Hao Huang",
      "avatar": "https://www.gravatar.com/avatar/0363e83e6e847e7090abbbafb08716ee?d=identicon\u0026s=64",
      "cl": "D312007",
      "clUrl": "https://phabricator.services.mozilla.com/D312007",
      "description": "ModuleLoaderBase.h is heavyweight and was pulled in transitively by ~50 headers\nthrough WorkerPrivate.h, so editing it triggered a near-full rebuild.\n\n- WorkerPrivate.h: drop the unused #include \"ScriptLoader.h\".\n- WorkerScope.h: forward-declare JS::loader::ModuleLoaderBase and out-line\n  InitModuleLoader into WorkerScope.cpp.\n- Add direct includes to files that were relying on the removed transitive\n  include (some only exposed by non-unified builds).\n\nTranslation Unit Recompiled\n$ rg -l --no-ignore --hidden --glob '*.o.pp' 'ModuleLoaderBase\\.h' obj-x86_64-pc-linux-gnu | wc -l\n\n  Before this patch : 163\n  After this patch  : 49\n\nDifferential Revision: https://phabricator.services.mozilla.com/D312007",
      "email": "allstars.chh@gmail.com",
      "hash": "c46250149aaaf2a25566d8cbb325c8819d00b165",
      "subject": "Bug 2054848 - Part 2: Stop WorkerPrivate.h and WorkerScope.h from including ModuleLoaderBase.h. r=dom-worker-reviewers,media-playback-reviewers,bvandersloot,edenchuang,padenot"
    },
    "D312008": {
      "author": "Yoshi Cheng-Hao Huang",
      "avatar": "https://www.gravatar.com/avatar/0363e83e6e847e7090abbbafb08716ee?d=identicon\u0026s=64",
      "cl": "D312008",
      "clUrl": "https://phabricator.services.mozilla.com/D312008",
      "description": "Both ScriptLoader.h hubs only need ScriptLoaderInterface, but pulled in the\nheavy ModuleLoaderBase.h (directly, and via the concrete ModuleLoader /\nWorkerModuleLoader headers).\n\n- Include js/loader/ScriptLoaderInterface.h instead of ModuleLoaderBase.h.\n- Forward-declare the concrete ModuleLoader / WorkerModuleLoader instead of\n  including them.\n- Add direct includes to files that were relying on the removed transitive\n  includes.\n\nTranslation Units recompiled:\n$ rg -l --no-ignore --hidden --glob '*.o.pp' 'ModuleLoaderBase\\.h' obj-x86_64-pc-linux-gnu | wc -l\n  Before this patch: 49\n  After this patch : 40\n\nDifferential Revision: https://phabricator.services.mozilla.com/D312008",
      "email": "allstars.chh@gmail.com",
      "hash": "f2f9097132b488d0bd7915da235de4eca63d1c50",
      "subject": "Bug 2054848 - Part 3: Stop dom/script and dom/workers ScriptLoader.h from including ModuleLoaderBase.h. r=dom-worker-reviewers,dom-core-reviewers,jjaschke,edenchuang"
    },
    "D312139": {
      "author": "Yoshi Cheng-Hao Huang",
      "avatar": "https://www.gravatar.com/avatar/0363e83e6e847e7090abbbafb08716ee?d=identicon\u0026s=64",
      "cl": "D312139",
      "clUrl": "https://phabricator.services.mozilla.com/D312139",
      "description": "Forward-declare JS::loader::ModuleLoaderBase in both headers and move the\nspecial members that touch the RefPtr\u003cModuleLoaderBase\u003e member (constructor,\ndestructor, and SystemGlobal::InitModuleLoader) out of line. This severs the\nxpcprivate.h include path, so the many dom/base, dom/bindings and build-glue\ntranslation units that only reached ModuleLoaderBase.h transitively no longer\npull it in.\n\nWorklet.cpp used ResolveError/ResolveErrorInfo transitively through the removed\ninclude, so include js/loader/ResolveResult.h directly there.\n\nTranslation Units recompiled:\n$ rg -l --no-ignore --hidden --glob '*.o.pp' 'ModuleLoaderBase\\.h' obj-x86_64-pc-linux-gnu | wc -l\n  Before this patch:  40\n  After this patch :  20\n\nDifferential Revision: https://phabricator.services.mozilla.com/D312139",
      "email": "allstars.chh@gmail.com",
      "hash": "ecb9d9cc2e2b5fc771450f9c1753a04a3d5b57d0",
      "subject": "Bug 2054848 - Part 4: Stop SandboxPrivate.h and SystemGlobal.h from including ModuleLoaderBase.h. r=mccr8"
    },
    "D312140": {
      "author": "Yoshi Cheng-Hao Huang",
      "avatar": "https://www.gravatar.com/avatar/0363e83e6e847e7090abbbafb08716ee?d=identicon\u0026s=64",
      "cl": "D312140",
      "clUrl": "https://phabricator.services.mozilla.com/D312140",
      "description": "Move NonSharedGlobalSyncModuleLoaderScope into its own header. It is the only\nclass in mozJSModuleLoader.h that genuinely needs the full ModuleLoaderBase.h\n(it holds a Maybe\u003cJS::loader::AutoOverrideModuleLoader\u003e by value), and it is only\nused by ChromeUtils.cpp and mozJSModuleLoader.cpp. With it gone, mozJSModuleLoader.h\ncan forward-declare mozilla::loader::SyncModuleLoader instead of including\nSyncModuleLoader.h, so the component-registration translation units that only need\nmozJSModuleLoader (nsAppRunner, XPCOMInit, StaticComponents, JSActorManager) no\nlonger pull in ModuleLoaderBase.h.\n\nInclude nsTHashMap.h directly in mozJSModuleLoader.h, which it uses for\nmImportStacks but was previously getting transitively through the removed include.\n\nTranslation Units recompiled:\n$ rg -l --no-ignore --hidden --glob '*.o.pp' 'ModuleLoaderBase\\.h' obj-x86_64-pc-linux-gnu | wc -l\n  Before this patch: 20\n  After this patch : 15\n\nDifferential Revision: https://phabricator.services.mozilla.com/D312140",
      "email": "allstars.chh@gmail.com",
      "hash": "dcbef1e53f13c1915bbc42ed4e6a52e9e057cdde",
      "subject": "Bug 2054848 - Part 5: Stop mozJSModuleLoader.h from including ModuleLoaderBase.h. r=arai"
    },
    "D312254": {
      "author": "Yoshi Cheng-Hao Huang",
      "avatar": "https://www.gravatar.com/avatar/0363e83e6e847e7090abbbafb08716ee?d=identicon\u0026s=64",
      "cl": "D312254",
      "clUrl": "https://phabricator.services.mozilla.com/D312254",
      "description": "ModuleLoaderBase.h has a large build-wide include fan-out. Now that it is\ndown to a small set of header includers, add a rejected-words stanza (the\nrust-based mozcheck linter) that forbids new #includes of it from headers\n(.cpp includes are fine, as they do not fan out transitively), with the\ncurrent header includers allowlisted.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D312254",
      "email": "allstars.chh@gmail.com",
      "hash": "8cfa6c3f739f69038908491cc43cdb059d85e5ad",
      "subject": "Bug 2054848 - Part 6: Add a lint forbidding new header #includes of ModuleLoaderBase.h. r=linter-reviewers,ahal"
    },
    "D312444": {
      "author": "Karl Tomlinson",
      "avatar": "https://www.gravatar.com/avatar/3646e8b4ac97898b1b389b12bda9d6ed?d=identicon\u0026s=64",
      "cl": "D312444",
      "clUrl": "https://phabricator.services.mozilla.com/D312444",
      "description": "The method is used for durations as well as absolute times and effective even\nfor negative durations.  (GraphTime should always be non-negative.)\n\nDifferential Revision: https://phabricator.services.mozilla.com/D312444",
      "email": "karlt+@karlt.net",
      "hash": "b92e0225aae02f18bf442d54f789a6c443f759d1",
      "subject": "Bug 2053262 Change from GraphTime to MediaTime for RoundUpToEndOfAudioBlock() r=padenot"
    },
    "D312623": {
      "author": "Bryan Olsson",
      "avatar": "https://www.gravatar.com/avatar/34df29d70aca0d9b18a6a8fbb65acd5b?d=identicon\u0026s=64",
      "cl": "D312623",
      "clUrl": "https://phabricator.services.mozilla.com/D312623",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D312623",
      "email": "bolsson@mozilla.com",
      "hash": "9a8a80db6ce10ffc2fc91a1e25685eed59ce3501",
      "subject": "Bug 2055720 - Provide localization comments to Content Classifier strings, r=bvandersloot,fluent-reviewers,flod"
    },
    "D312852": {
      "author": "Josh Aas",
      "avatar": "https://www.gravatar.com/avatar/a8fc05fdb6f74856d2cfbeef69fcda2a?d=identicon\u0026s=64",
      "cl": "D312852",
      "clUrl": "https://phabricator.services.mozilla.com/D312852",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D312852",
      "email": "jaas@kflag.net",
      "hash": "f023cd3f92150df5a2d532618609b8a7322bf71d",
      "subject": "Bug 2055997 - Fix Obj-C object leaks in NS_InitXPCOM due to no autorelease pool. r=xpcom-reviewers,emilio"
    },
    "D312872": {
      "author": "David Rubino",
      "avatar": "https://www.gravatar.com/avatar/523c56c2e68a1a3207ced9963a5534e7?d=identicon\u0026s=64",
      "cl": "D312872",
      "clUrl": "https://phabricator.services.mozilla.com/D312872",
      "description": "Finalize the string set for the \"Firefox launch options\" spotlight experiment in asrouter.ftl.\n\n- Remove the launch-on-login-spotlight-* strings added for Firefox 153 in bug 2047001. They are superseded and unreferenced in-tree.\n- Rename the app-exit-spotlight-* strings (bug 2053571) to launch-options-spotlight-* and expand the set: separate titles for the launch-on-login and session-restore variants; launch-on-login,  pin-to-taskbar, and session-restore checkboxes (distinct \"current\" vs \"previous\" wording for the browser-close vs browser-launch surfaces); and separate \"Save and close\" and \"Save and continue\" primary buttons.\n\nThe preferences string windows-launch-on-login-open-new-tab (also from bug 2047001) is intentionally kept because it is referenced by browser/components/preferences/main.js.\n\nStrings only; not wired in-tree (referenced by string_id from a Nimbus rollout). Landing ahead of the Firefox 154 string freeze so localizers can translate for the 154 global rollout.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D312872",
      "email": "drubino@mozilla.com",
      "hash": "cee4258b8784d76c2dc981f71351fff23fe6b36d",
      "subject": "Bug 2056041 - Consolidate launch options spotlight strings and remove superseded Firefox 153 spotlight strings. r=omc-reviewers,fluent-reviewers,bolsson,dmose"
    },
    "D312887": {
      "author": "Kershaw Chang",
      "avatar": "https://www.gravatar.com/avatar/608e04ebca94be52b05c003d51d43e07?d=identicon\u0026s=64",
      "cl": "D312887",
      "clUrl": "https://phabricator.services.mozilla.com/D312887",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D312887",
      "email": "kershaw@mozilla.com",
      "hash": "d951c4a19a6958816b35a228ff38fc6ae2c34f13",
      "subject": "Bug 2052632 - Fall back to native when a TRR lookup fails due to a DoH connection error, r=necko-reviewers,valentin"
    }
  },
  "date": "2026-07-19",
  "days": 1,
  "generatedAt": "2026-07-19T22:05:36Z",
  "markdown": "## Highlights\n- **Networking** Firefox now falls back to native DNS when TRR fails because the DoH connection itself is broken, which should reduce hard lookup failures during resolver outages. [bug 2052632](https://bugzilla.mozilla.org/show_bug.cgi?id=2052632) [Phab D312887](https://phabricator.services.mozilla.com/D312887)\n- **Perf** Audio block rounding now uses MediaTime instead of GraphTime, tightening time calculations in media processing. [bug 2053262](https://bugzilla.mozilla.org/show_bug.cgi?id=2053262) [Phab D312444](https://phabricator.services.mozilla.com/D312444)\n- **Web Platform** Firefox added a WPT covering gamepad-triggered HTML user activation, helping lock in spec behavior for input-driven activation flows. [bug 2053976](https://bugzilla.mozilla.org/show_bug.cgi?id=2053976) [Phab D311445](https://phabricator.services.mozilla.com/D311445)\n- **Refactor** Script loading code started a broad header cleanup by extracting ScriptLoaderInterface out of ModuleLoaderBase dependencies. [bug 2054848](https://bugzilla.mozilla.org/show_bug.cgi?id=2054848) [Phab D312006](https://phabricator.services.mozilla.com/D312006)\n- **Refactor** Worker internals were decoupled from ModuleLoaderBase includes, shrinking dependency reach across worker code. [bug 2054848](https://bugzilla.mozilla.org/show_bug.cgi?id=2054848) [Phab D312007](https://phabricator.services.mozilla.com/D312007)\n- **Refactor** DOM script and worker script loader headers were untangled from ModuleLoaderBase, continuing a useful compile-time dependency reduction. [bug 2054848](https://bugzilla.mozilla.org/show_bug.cgi?id=2054848) [Phab D312008](https://phabricator.services.mozilla.com/D312008)\n- **Refactor** Firefox removed more ModuleLoaderBase header coupling from sandbox and system-global code, pushing the same cleanup into platform internals. [bug 2054848](https://bugzilla.mozilla.org/show_bug.cgi?id=2054848) [Phab D312139](https://phabricator.services.mozilla.com/D312139)\n- **Refactor** mozJSModuleLoader.h also dropped its direct ModuleLoaderBase dependency, extending the cleanup into JS module loading. [bug 2054848](https://bugzilla.mozilla.org/show_bug.cgi?id=2054848) [Phab D312140](https://phabricator.services.mozilla.com/D312140)\n- **Build** A new lint now forbids fresh ModuleLoaderBase.h includes, turning this refactor into an enforced codebase rule after relanding. [bug 2054848](https://bugzilla.mozilla.org/show_bug.cgi?id=2054848) [Phab D312254](https://phabricator.services.mozilla.com/D312254)\n- **Perf** NS_InitXPCOM now avoids Objective-C autorelease leaks, fixing a startup-time memory management issue on Apple platforms. [bug 2055997](https://bugzilla.mozilla.org/show_bug.cgi?id=2055997) [Phab D312852](https://phabricator.services.mozilla.com/D312852)\n\n## What landed by area\n\n### Module loading and header cleanup\n- **Refactor** Extracted ScriptLoaderInterface into its own header to break apart a long-standing include dependency. [bug 2054848](https://bugzilla.mozilla.org/show_bug.cgi?id=2054848) [Phab D312006](https://phabricator.services.mozilla.com/D312006)\n- **Refactor** WorkerPrivate.h no longer pulls in ModuleLoaderBase.h, reducing dependency spread in worker plumbing. [bug 2054848](https://bugzilla.mozilla.org/show_bug.cgi?id=2054848) [Phab D312007](https://phabricator.services.mozilla.com/D312007)\n- **Refactor** WorkerScope.h was also detached from ModuleLoaderBase.h as part of the same worker cleanup. [bug 2054848](https://bugzilla.mozilla.org/show_bug.cgi?id=2054848) [Phab D312007](https://phabricator.services.mozilla.com/D312007)\n- **Refactor** dom/script ScriptLoader.h dropped its ModuleLoaderBase.h include, trimming DOM-side layering. [bug 2054848](https://bugzilla.mozilla.org/show_bug.cgi?id=2054848) [Phab D312008](https://phabricator.services.mozilla.com/D312008)\n- **Refactor** dom/workers ScriptLoader.h dropped the same include, keeping worker-side script loading aligned. [bug 2054848](https://bugzilla.mozilla.org/show_bug.cgi?id=2054848) [Phab D312008](https://phabricator.services.mozilla.com/D312008)\n- **Refactor** SandboxPrivate.h no longer includes ModuleLoaderBase.h, continuing the dependency diet into privileged code. [bug 2054848](https://bugzilla.mozilla.org/show_bug.cgi?id=2054848) [Phab D312139](https://phabricator.services.mozilla.com/D312139)\n- **Refactor** SystemGlobal.h also shed its ModuleLoaderBase.h include, further tightening layering. [bug 2054848](https://bugzilla.mozilla.org/show_bug.cgi?id=2054848) [Phab D312139](https://phabricator.services.mozilla.com/D312139)\n- **Refactor** mozJSModuleLoader.h stopped including ModuleLoaderBase.h, reducing coupling in JS module infrastructure. [bug 2054848](https://bugzilla.mozilla.org/show_bug.cgi?id=2054848) [Phab D312140](https://phabricator.services.mozilla.com/D312140)\n- **Build** The relanded lint now blocks new ModuleLoaderBase.h includes so this cleanup does not regress. [bug 2054848](https://bugzilla.mozilla.org/show_bug.cgi?id=2054848) [Phab D312254](https://phabricator.services.mozilla.com/D312254)\n\n### Networking and privacy surfaces\n- **Networking** TRR now falls back to the native resolver when a DoH connection error makes the secure path unavailable, improving resilience instead of failing closed. [bug 2052632](https://bugzilla.mozilla.org/show_bug.cgi?id=2052632) [Phab D312887](https://phabricator.services.mozilla.com/D312887)\n- **Privacy** Content Classifier strings gained localization comments, which should make security and privacy-facing messaging safer to translate correctly. [bug 2055720](https://bugzilla.mozilla.org/show_bug.cgi?id=2055720) [Phab D312623](https://phabricator.services.mozilla.com/D312623)\n\n### Media and timing\n- **Perf** RoundUpToEndOfAudioBlock() now uses MediaTime instead of GraphTime, a targeted cleanup in media timing semantics. [bug 2053262](https://bugzilla.mozilla.org/show_bug.cgi?id=2053262) [Phab D312444](https://phabricator.services.mozilla.com/D312444)\n\n### Web Platform and standards\n- **Web Platform** Added a WPT to verify that gamepad interaction can perform HTML user activation, strengthening interop around activation-gated behavior. [bug 2053976](https://bugzilla.mozilla.org/show_bug.cgi?id=2053976) [Phab D311445](https://phabricator.services.mozilla.com/D311445)\n\n### XPCOM and platform memory management\n- **Perf** NS_InitXPCOM now creates the needed autorelease pool context to avoid leaking Objective-C objects during initialization. [bug 2055997](https://bugzilla.mozilla.org/show_bug.cgi?id=2055997) [Phab D312852](https://phabricator.services.mozilla.com/D312852)\n\n### UI and localization\n- **UI** Launch options spotlight strings were consolidated and obsolete Firefox 153 spotlight strings were removed, which should simplify future messaging updates. [bug 2056041](https://bugzilla.mozilla.org/show_bug.cgi?id=2056041) [Phab D312872](https://phabricator.services.mozilla.com/D312872)\n\n### Metadata and maintenance\n- **Refactor** A metadata update landed under bug 2052162. The title is generic, but it is part of the day's non-roll maintenance churn. [bug 2052162](https://bugzilla.mozilla.org/show_bug.cgi?id=2052162)\n\n## Reverts \u0026 Reapplies\n- **Build** The new ModuleLoaderBase include lint was reverted after it caused build bustage in DocAccessibleWrap.cpp, then relanded separately. [bug 2054848](https://bugzilla.mozilla.org/show_bug.cgi?id=2054848) [Phab D312254](https://phabricator.services.mozilla.com/D312254)",
  "repo": "firefox",
  "repoDisplay": "Firefox",
  "rollGroups": [
    {
      "name": "No",
      "count": 3
    }
  ],
  "since": "2026-07-19",
  "totals": {
    "commits": 23,
    "features": 20,
    "rolls": 3
  },
  "until": "2026-07-19"
}