Firefox/Meeting/4-Mar-2025
Mar 4, 2025
General Topics / Roundtable
[Luca] The integrated Screenshots component has been enabled by default since Firefox 127 (Bug 1870127). We are now planning to proceed with fully retiring the legacy screenshots system add-on implementation in Firefox 138 (tracked by Bug 1948364).
The Screenshots add-on had an instrumental role in prototyping and validating this Firefox feature. This is a good time to give a big shout-out to everyone involved in developing the Screenshots TestPilot experiment as well as the ones involved in the creation of the Firefox integrated component!!! ♥️🎂
Note: we will keep the extensions.screenshots.disabled pref around for a little longer because this pref is also used to disable the integrated Screenshots component when set to true (fully removing support for the legacy preference is tracked by Bug 1948366).
[tgiles] We now have a "good-next-bug" keyword in Bugzilla, hopefully this will simplify tracking since we have used various whiteboard tags in the past 🎉🎉🎉
[tgiles] I'm planning at some point to migrate the existing "good-second-bug" and other whiteboard tags to use the new keyword instead.
[gijs] moz-src:/// has landed! (https://bugzilla.mozilla.org/show_bug.cgi?id=1945566 ) 🎉
Metabug for conversions of modules from resource:// to moz-src
There’s a mach command to make switching super easy - mach use-moz-src - see How to switch your code over
[mconley] This will (hopefully) make it much easier for us to make your IDE / tooling understand where imported files are coming from.
Friends of the Firefox team
Introductions/Shout-Outs
- [mconley] Another shout-out to Florian - almost 75% of all histograms are mirrored to Glean!
Resolved bugs (excluding employees)
Script to find new contributors from bug list
Volunteers that fixed more than one bug
- Gregory Pappas [:gregp]
New contributors (🌟 = first patch)
- (Will be filled in after the meeting)
General triage
Project Updates
Accessibility
Eitan Isaacson [:eeejay] Introduced Contrast Control Settings: 1898096
Add-ons / Web Extensions
Addon Manager & about:addons
- In about:addons, the recommendations icon and the add-on badges have been refreshed (Bug 1930656, Bug 1930658, Bug 1945769, Bug 1707411)
- InstallTrigger global is not hidden anymore on Nightly and Early Beta builds (instead, it will be visible but set to null as it is on the Release channel), this change has been agreed on with the WebCompat team to reduce the amount of interventions needed due to the hidden InstallTrigger global - Bug 1950440
WebExtensions Framework
- Fixed issue with file picker not working anymore from hidden extension pages (background page and devtools page) and extension options pages embedded in about:addons - Bug 1949587 / Bug 1949092
WebExtension APIs
- As of Firefox 137, the browser.storage.session API will start to enforce quota restrictions on all channels (enforced since Firefox 131 in Nightly, while logging a warning on non-Nightly channels) - Bug 1915688
Added implementation for the webRequest.handlerBehaviorChanged API method in Firefox 138 - Bug 1657575
Thanks to :arai for implementing this webRequest API method! 🎉
DevTools
- krish.patel removed the underline style on hover in DOM panel (#1267242)
- Gintaras Žulys [:gzulys] improved the Inspector search when looking up for attribute name and value pairs (e.g. rel="icon") (#1634662)
Karan Yadav added previous/next buttons to the Inspector search input (#1564329)
- cpplearner fixed Inspector rules view autocomplete fails after "/(" (#1610833)
- Logan Rosen [:Logan] upgraded some Jest-related dependencies (#1947060)
- [:anutrix] repaired broken Links in DevTools documentation (#1727389)
- Phil [:phigl] added context menu in Netmonitor search results (#1701557)
- James Stuckey Weber Show offsetParent of fixed position element if it is not the viewport (#1949953)
- Alexandre Poirot [:ochameau] fixed remote debugging Fenix when no tab is opened on the device (#1931651)
Julian Descottes [:jdescottes] added support for HTTP overrides on any type of requests in Netmonitor (#1849920)
- Alexandre Poirot [:ochameau] improved performance by about 20% by preventing updates in the Debugger when the panel isn't the active one (#1419352)
- Hubert Boma Manilla (:bomsy) improved opening big files in the Debugger by 10% (#1908327)
Nicolas Chevobbe [:nchevobbe] added better representation for Temporal objects (#1840326)
Hubert Boma Manilla (:bomsy) included Early hint header details in the Headers panel (#1932069)
Nicolas Chevobbe [:nchevobbe] added font metadata (Version, Designer, Manufacturer, …) in the Fonts panel (#1943605)
- Nicolas Chevobbe [:nchevobbe] fixed an old an frustrating bug; hitting Enter in search input in Style Editor and Network Response won't hide the input anymore (#1846465)
Nicolas Chevobbe [:nchevobbe] improve JSON Viewer preview (#1950865)
Read-only fixes
Holger Benl fixed an issue in the Debugger where variables couldn't be inspected (#1944408) …
Alexandre Poirot [:ochameau] fixed another issue in the Debugger where Hovering over a function in minified source doesn't let you navigate to the destination (#1932021)
Nicolas Chevobbe [:nchevobbe] Changes in CSS Nesting specifications impacted the Inspector rules view where some declarations could be duplicated; this is now fixed (#1946445). We also fixed an issue where adding declaration in Rules view would put them after any nested declaration (#1946442)
Nicolas Chevobbe [:nchevobbe] The Inspector grid list now includes grid containers whose ancestor has display: contents (#1934619)
Nicolas Chevobbe [:nchevobbe] Fixed an issue in the Inspector rules view where !important declarations from style attribute where marked as being overridden by declaration in layers (#1946199)
Holger Benl fixed updating condition/log of breakpoint in Debugger (#1944500)
Holger Benl also fixed navigation to function definition from the Debugger preview popup (#1947692)
WebDriver BiDi
- Sasha added support for the "userContexts" argument to "sessions.subscribe" command. This new argument will allow clients subscribing to a list of user contexts (also known as Firefox containers).
- Sasha updated the "script.addPreloadScript" command to throw "InvalidArgument" error when both "contexts" and "userContexts" arguments are provided.
- Emilio improved the logic for window resizing and positioning to make those operations more reliable
- Krzysztof Jan Modras [:chrmod] implemented the new WebDriver BiDi commands, "webExtension.install" and "webExtension.uninstall", enabling clients to install and uninstall web extensions in the browser. This marks the beginning of broader support for the WebExtension community, making it easier to test web extensions across browsers.
- Temidayo Azeez [:dan032] moved all the window manipulation methods (like resizing and repositioning) from Marionette to the Window Manager class so that those can be used as well for the upcoming “browsingContext.setWindowClientState” command for WebDriver BiDi.
- Spencer [:speneth1] updated "JavaScriptError" raised by script evaluation to contain line and column number if available.
- Spencer [:speneth1] added "isNonEmptyArray" assertion method, which is helpful since a lot of WebDriver BiDi command arguments require this validation.
- Henrik added support for fractional numbers for x and y positions for mouse and touch pointer actions for both Marionette and WebDriver BiDi.
- Henrik fixed several WebAuthn endpoints, which didn’t work because of the wrong routes.
- Sasha updated "browsingContext.navigate" command to not return when "wait" arguments equals "none" and beforeunload prompt opens.
Lint, Docs and Workflow
- Hanna has set up tests for our stylelint plugin.
- Mark Kennedy has set up eslint-plugin-lit and enabled the lit/quoted-expressions rule.
We have disabled the ESLint rule jsdoc/require-param-description and enabled the jsdoc/require-param-type in the require-jsdoc configuration (bug).
It was felt that requiring the description was sometimes causing unnecessary documentation, e.g. passing a document or event into a function.
On the other hand, we decided that the type should be a required item.
New Tab Page.
- Amy has a patch up to make it possible to save a custom wallpaper into a folder in the profile directory. We’re talking with the DOM team about the right way of getting this to display in the New Tab page (which, like normal content processes, has no direct access to the profile directory).
mconley is getting patches ready to bundle New Tab as a built-in addon
This will be testable with ac_add_options --browser-newtab-as-addon in your mozconfig once those patches land
We aim to make this the default build configuration this cycle (138)
- Reem fixed an issue with font contrast when using a dark wallpaper
- nbarrett added support for showing favicons for publishers when available
Profile Management
- We've added a new engineer to the team! 🎉 Welcome Teddy! 🎉
- State of the world:
- We are currently preffed on in Nightly only
- Upcoming in 138: targeting a rollout to Beta and small experimental rollout (0.5%) to Release
Planning is getting underway for the 100% rollout later this year.
At least the Nimbus, OMC, and DI teams are affected by the move from a single-profile-per-user world to a multiple profiles-per-user world.
If your project might be impacted too, or if you have questions, please reach out (#fx-profile-management on Slack or [#fx-profile-eng] on Matrix)
Catching up with bugs fixed in last 4 weeks:
Jared added profiles section to about:preferences (bug 1921846)
NIklas corrected color values for the default theme (bug 1927193)
Jared added probes to the profile selector dialog (bug 1927605)
Jared added telemetry to the about:deleteprofile page (bug 1927608)
Dave disabled profiles if the BlockAboutProfiles enterprise policy is active (bug 1927808)
Teddy added a missing "+" to the "New profile" option in the menu bar (bug 1932817)
Jared fixed a bug where the profile selector window always showed scrollbars (bug 1933758)
Niklas fixed a bug where dismissing the Edit Profile page closed the window. Now we open newtab if we were closing the last tab in a window (bug 1934942)
Cieara added a Nimbus Variable to enable (but not disable) Profiles (bug 1936632)
Niklas implemented proper radio group behavior for theme and avatar pickers (bug 1936665)
Jared fixed a bug where the edit and delete buttons weren't shown in the profile selector cards at startup (bug 1942384)
Cieara corrected hover styling for the profile card and its interior buttons (bug 1943429)
Dave fixed a bug where external links were not opening in the correct (most-recently app focused) profile on macos (bug 1945207)
Reader Mode
Screenshots
New Additions
Yazan has continued work on the calculator for the address bar, and added scientific notation for large numbers. The calculator has now been enabled on nightly builds and should roll-out in 137.
James incorporated interaction data with an alternative frecency model to conduct a user experiment. This approach boosts the frecency of urls that may not receive many unique visits but are actively used through interactions, such as single-page apps and pinned tabs.
Early Spring Cleaning
Mortiz has moved BrowserSearch out of browser.js. In the process, BrowserSearch has been split up and reworked to put the various functionality in more appropriate places. This also results in one less global in browser.js.
Following a review of search telemetry over the last few months, Stephanie has removed lots of probes that are no longer required.
Drew has been tidying up and refactoring some of the suggest code.
Storybook/Reusable Components
- Thanks to :rking for adding badging support to icon moz-buttons! Bug 1942373 - Add support for badging to moz-button
- :hjones created test helpers for rendering Lit elements, Bug 1947613 - Create helpers for using Lit to render elements in test code
:hjones created the moz-box-base class, Bug 1946596 - Create a MozBoxBase class with common properties, templates, and styles
Planning on making layout components that use this
Working on various new reusable components:
Moz-input-search
Moz-input-password
Moz-input-folder
moz-box-item
Moz-box-link
moz-visual-picker
This week I learned
[mconley] A new way to initialize components!
Example for how to initialize some modules / components before the UI becomes available. This used to be done inside of BrowserGlue._beforeUIStartup, but please don’t add more there. We’re trying to shrink BrowserGlue a bit.