Firefox/Meeting/16-Apr-2024
Contents
- 1 General Topics / Roundtable
- 2 Friends of the Firefox team
- 3 Project Updates
- 3.1 Add-ons / Web Extensions
- 3.2 Developer Tools
- 3.3 DevTools
- 3.4 WebDriver BiDi
- 3.5 Lint, Docs and Workflow
- 3.6 Migration Improvements
- 3.7 New Tab Page
- 3.8 Picture-in-Picture
- 3.9 Performance
- 3.10 Screenshots (enabled by default in Nightly)
- 3.11 Search and Navigation
- 3.12 Storybook/Reusable Components
- 4 This week I learned
General Topics / Roundtable
Todayâs release (Firefox 125) might be delayed due to an upgrade bug discovered for macOS users
The regressor was identified and backed out. New release candidates were spun out and has been signed off by QA. That release might still roll out today.
Friends of the Firefox team
Introductions/Shout-Outs
- [gijs] Thanks to Yi Xiong Wong for submitting 16 patches to refactor a bunch of browser.js code into a separate file (bug)
Resolved bugs (excluding employees)
Script to find new contributors from bug list
Volunteers that fixed more than one bug
- Camille
- Magnus Melin [:mkmelin]
- Meera Murthy
New contributors (đ = first patch)
- đ Camille added `text-align: start` to moz-message-bar so it doesn't inherit alignment from parent and updated moz-toggle to only show active state when hovering
- gravyant improved error message when sending session.new without capabilities
- đ Harshit replaced `validateURL` with `URL.parse()`
General triage
- mconley, mkaply, Emily McMinn, Katherine Patenio are leading this monthâs general triage
Project Updates
Add-ons / Web Extensions
(read-only due to conflict)
WebExtension APIs
As part of the ongoing work related to improving cross-browser compatibility for Manifest Version 3 extensions:
the options_page manifest property is supported as an alias of options_page.ui - Bug 1816960
A new webRequestAuthProvider permission allows extensions to register webRequest.onAuthRequired blocking listeners (in addition to the webRequestBlocking permission, which is deprecated on Chrome but still supported by Firefox) - Bug 1820569
commands.onCommand listeners now receive details of the currently active tab - Bug 1843866
WebExtensions with a granted active tab permission can now call tabs.captureVisibleTab API method without any additional host permissions - Bug 1784920
MessageSender details received by runtime.onMessage/runtime.onConnect listeners include a new origin property - Bug 1787379
Developer Tools
DevTools
- Artem Manushenkov added a setting to disable the split console (#1731635)
- Yury added support for Wasm exception handling proposal in the Debugger (#1885589)
- Emilio fixed a rendering issue that could happen after exiting Responsive Design Mode (#1888242)
- Alex migrated the last DevTools JSMs to ESMs (#1789981, #1827382, #1888171)
- Nicolas fixed a performance issue in the Rules view when there was a lot of rules with pseudo elements (#1886818, #1886947). For example, with 1500 pseudo elements, what was taking 3 seconds on my machine now only takes ~30ms
- Nicolas improved performance of the Inspector when modifying a single rule, in a stylesheet with a lot of rules (#1888079, #1888081)
Nicolas improved the Rules view by showing the color picker button on color functions using CSS variables in their definition (#1718894)
- Bomsy fixed a crash in the netmonitor (#1884571)
- Julian reverted the location of DevTools screenshots on OSX to match where Firefox screenshots are saved (#1845037)
Nicolas added @property rules (enabled on Nightly by default) in the Style Editor sidebar (#1886392)
WebDriver BiDi
- New contributor: :gravyant improved the error message when the session.new command is used without a proper capabilities parameter (#1838152)
- Julian Descottes added support for the contexts argument of the network.addIntercept command which allows to restrict a network intercept to a set of top-level browsing contexts (#1882260)
- Sasha Borovova updated the storage.getCookies command to return third party cookies selectively, based on the value of the network.cookie.cookieBehavior and network.cookie.cookieBehavior.optInPartitioning preferences (#1879503)
- Sasha Borovova removed the ownership and sandbox parameters for the browsingContext.locateNodes command to align with a recent specification update (#1884935)
- Sasha Borovova updated the session.subscribe and session.unsubscribe commands to throw an error when the events or contexts parameters are empty arrays (#1887871)
- The team completed the Milestone 10 of the project (bug list), where we implemented 50% of the commands needed to completely support Puppeteer, with 75% of the Puppeteer unit-tests passing with WebDriver BiDi. For Milestone 11 (bug list), our focus remains to implement the remaining commands and features required to fully support Puppeteer (doc).
Lint, Docs and Workflow
Enabling ESLint rules for requiring JSDocs just got easier.
The rules are now enabled by default.
Places where there are currently failures are explicitly disabled in the top-level .eslintrc.js file.
Please consider enabling these (and the valid-jsdoc ones) on your area, especially if you are using (or will be using) JSDoc document generation for source docs.
eslint-plugin-mozilla now supports ESLint v9 APIs.
We still have some work to complete to fully support the new flat configuration.
- We're now rejecting the JSM based ChromeUtils.import across the tree via ESLint.
Migration Improvements
- Negin fixed an issue where the migration wizard title wasnât appearing when embedded in about:welcome
- Negin is working on fixing an issue on about:welcome where clicking on the browser/profile selector when the panel is already open doesnât close the panel.
For the backup project, weâve made some pretty big strides!
We closed out the measurement metabug, and have the measurements being collected by default starting in Firefox 126.
Weâre now staging backups for various resources
We added a very simple debug tool in Nightly at chrome://browser/content/backup/debug.html. You can test staging a backup at runtime with what we have so far using this tool. It may take several minutes depending on how big your databases are, and how intensely youâre using the browser while the backup is underway.
New Tab Page
[mconley] The team is in the early stages of adding wallpaper support! This is still very preliminary, but you can test what theyâve currently landed on Nightly:
Set browser.newtabpage.activity-stream.newtabWallpapers.enabled to true in about:config
Click on the âgearâ icon in the top-right of the new tab page
Choose a wallpaper! Note that you get different options depending on whether or not youâre using a light or dark theme.
Picture-in-Picture
- Thanks to :joe.scott.webster for submitting a patch that fixes PiP captions issues with several Yahoo sites (bug) and filing a follow-up ticket for AOL (bug). Also thanks to Niklas Baumgardner (:niklas) for lending a hand!
Performance
- jesup moved brotli decompression fully off of the main thread. This has shown major wins in the wild - weâre seeing a 10% improvement for FirstContentfulPaint pretty much across the board, and a 10% improvement on LargestContentfulPaint at the 50% percentile, 20% at the 75% percentile and 95%(!) at the 95% percentile. Nice! This improvement is rolling out in Firefox 126.
- mconley got rid of some nsTerminator telemetry that was causing us to block shutting down the browser if a quit was requested very soon after a startup.
Screenshots (enabled by default in Nightly)
Niklas made the save full page the primary action button
Thanks reusable components for moz-button-group!
Niklas added keyboard shortcuts for copying and downloading a screenshot
The keyboard shortcuts work in the overlay and in the preview window
- ctrl + c to copy the screenshot
- ctrl + s to download/save the screenshot
- Niklas fixed an issue where dragging the scrollbar could drag a region
- Niklas fixed an issue where the window would sometimes scroll when focusing the download or copy button
Firefox Suggest experience
Daisuke renamed the âLearn More about Firefox Suggest" menuitem to a more direct âManage Firefox Suggestâ. Bug 1889820
Drew added new telemetry to measure in experiments the potential exposure of simulated results, depending on the typed search string. Bug 1881875
SERP categorization telemetry
James, Stephanie and Karandeep have landed many fixes to the storage, logging and measurements.
Search Config v2
Enabling new config in Nightly lowered the number of initialization errors for the Search Service
Mark fixed character-set handling. Bug 1890698
Mark added a new property covering the device type. Bug 1889910
Mandy sorted collections by engine identifier and property names, to make the config more easily navigable and diffs nicer and easier to maintain. Bug 1889247
Mandy updated the documentation. Bug 1889037
Other fixes
Marco fixed a bug causing engagement on certain results to be registered both as engagement and abandonment. Bug 1888627
Dao has fixed alignment of âswitch to tabâ and âvisitâ chiclets. Bug 1886761
Storybook/Reusable Components
Thanks to Camille Davis for fixing these two bugs!
- Thanks to :nordzilla for fixing a race condition in menulist
- Thanks to :kcochrane for adding documentation to moz-page-nav and adding support for external and support links in moz-page-nav
- :hjones fixed the interactive storybook component examples on Windows
- :tgiles fixed the ./mach addstory command
Work is underway to remove the window.ensureCustomElements function now that we can lazy load ES modules. See Bug 1803678 - Enable on-demand/lazy loading for ESModule based reusable components for more details
big thanks to :arai for the work to make this possible! Bug 1803810 - Support synchronously loading ESMs into given global, in the same way as Services.scriptloader.loadSubScript
This week I learned
[Mossop] As well as registerCleanupFunction (runs after all tasks in a test) we also have registerTaskCleanupFunction (runs after every task), registerCurrentTaskCleanupFunction (runs after the current task) and registerTimeoutFunction (runs if the test times out) in mochitest harnesses.
[mconley] Iâm gobsmacked - how did I never know this?!
- [Nicolas] Firefox 125 ships the Popover API