- 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 Fluent
- 3.4 ESMification status
- 3.5 Lint, Docs and Workflow
- 3.6 Picture-in-Picture
- 3.7 Performance Tools (aka Firefox Profiler)
- 3.8 Search and Navigation
- 3.9 Storybook / Reusable components
- 4 This week I learned
- 5 Headlines link
General Topics / Roundtable
- [mconley] We have a brand new batch of students from CalState LA working with us on improving the Migrator component as part of a Capstone course! They’re just getting ramped up, so stay tuned to hear more from them.
Friends of the Firefox team
Volunteers that fixed more than one bug
- Jonas Jenwald [:Snuffleupagus]
New contributors (🌟 = first patch)
- Jonas Jenwald
- Johannes Bechberger worked on Firefox Profiler bugs. Thanks!
- Dão, Marco, Prathiksha are this month’s triagers!
Add-ons / Web Extensions
- Fixed a regression related to the extension sidebar panel becoming blank when users changes the browser language while the sidebar panel is open - Bug 1786262 (regressed in Firefox 100 by Bug 1755181)
- Fixed a recent browserAction popup regressions on action popups opened while the widget got automatically moved into the overflow menu - Bug 1786587 (regressed recently in the current Nightly 106 by Bug 1783972)
- John Bieling moved LanguageDetector.jsm at toolkit level to fix i18n.detectLanguage API in non Firefox Desktop builds, included Firefox for Android (where LanguageDetector.jsm was not available) - Bug 1764698 / Bug 1712214
Addon Manager & about:addons
- Nicolas Chevobbe migrated GMPProvider.jsm to system ESM modules - Bug 1787724
- Itiel contributed a fix to about:addons styling to improve contrast on the “Available Updates” badge in dark mode - Bug 1787621
- The action API (browserAction/pageAction) setPopup url to accept only same-extension extension urls to be set as popup urls, restriction enforced on manifest_version 3 extensions and extended to manifest_version 2 extensions on Firefox for Android (and in general GeckoView builds) - Bug 1760608
As part of the ongoing ManifestVersion 3 (MV3) work:
DeclarativeNetRequest: Added initial support for the subset of the API used to manage the session rules - Bug 1745762
Follow ups related to content scripts registered as persistAcrossSession using the new scripting API
Enforced a stricter append-only behavior on manifest_version 3 extensions changing the ContentSecurityPolicy headers from a WebRequest blocking listener - Bug 1785821
- Similar restrictions are expected to be applied also to other security headers as part of a separate followup - Bug 1786919
- These changes are introducing a stricter behavior for manifest_version 3, we expect more followup to be needed to open up again use cases that would not be allowed to extensions running under this stricter behavior.
After adding similar feature for Header objects, Colin Cazabet added preview for FormData instances in the console and debugger (bug)
Alex added the “reload” button to WebExtension toolboxes (bug)
Unfortunately this introduced a regression which was swiftly fixed by Rob Wu (bug)
Finally Alex started ESMifying DevTools codebase, starting with Launcher.jsm (bug)
He will then proceed with the whole devtools/client folder
- We made opening the debugger ~6 to 9% faster (perfherder), changing how we’re handling syntax highlighting (bug)
This impacts websites like Gmail, but also probably opening the StyleEditor in BrowserToolbox
- Julian also fixed sorting cookies in the Storage inspector (bug)
- We fixed a long standing issue where errors and console.log messages would not be displayed in the right order in the console when they were emitted during the same millisecond (bug)
- Hubert fix a debugger crash when using “Close all tabs” on a minified file displaying an Error (bug)
By popular demand, Hubert reintroduced the simple “Resend” context menu entry in the Netmonitor (bug)
- We now show condition text for @supports rules in the Inspector (bug)…
…as well as for @container rules (bug) (container queries are still behind layout.css.container-queries.enabled)
Julian worked around object references
He added resultOwnership support for script.evaluate and script.callFunction so you can get a reference (handle id) of a given object from the page, that you can then pass to other commands (bug, bug)
And he implemented the script.disown command, which let the user release the reference so the object can be GCed (bug)
- Note that those references are also cleared on navigation
- Henrik fixed an issue in Marionette where the client didn’t mark the session as deleted when in_app shutdown was requested (bug)
- [mconley] netError.dtd’s are about to bite the dust, and after that, we can drop the brand DTDs!
- We now have fewer than 150 DTDs left in the tree!
ESMification is underway! We have 125 .sys.mjs files and 1278 jsm files, ~9.7%
There are more patches in flight.
- Don't forget to add [esmification-timeline] to the whiteboard so it shows up on the status page.
- When adding new system module files, please use the new system rather than old jsm files.
Don't forget to do both parts - 1) changing the modules and 2) updating imports in other files.
- There’s an #esmification Matrix room for questions and coordination
- [mconley] A number of ESMification bugs have been filed for our CalState students to get their feet wet on. If you see an open ESMification bug blocking this meta, please don’t take it.
Lint, Docs and Workflow
- HTTPS is now the default for tests - please use HTTPS rather than HTTP when writing new tests.
Layout is still pending, but will be looked at later in an effort for enabling many rules there.
- Thank you to nchevobbe who has been working on enabling some disabled ESLint rules on devtools.
- Thank you to samronning for fixing a no-unused-vars issue in intl/uconv/tests/unit/test_bug340714.js
- Janvi01 added new seek button controls to move forward or backward 5 seconds (available behind the pref `media.videocontrols.picture-in-picture.improved-video-controls.enabled`)
Performance Tools (aka Firefox Profiler)
- Added an [X] button on track names in the timeline to quickly hide tracks. (PR #4170)
- Added self time category breakdown to our bottom panel sidebar. Thanks to our contributor parttimenerd for adding this feature! Example profile (PR #4195)
- Added the sum of the power usage in power track's tooltips while selecting a time range. Example profile (PR #4172)
- Landed a big backend refactoring that allows us to not crash on an error during profiling/capturing like OOM. (Bug 1612799)
- Raptor browsertime tests now should output Firefox Profiler profiles for all the treeherder runs by default. You can directly open them in the Firefox Profiler view with a single click. (Bug 1786400)
- Daisuke made a change so that searches from the address bar now get a smaller frecency boost. This should reduce the amount of search result pages shown in address bar searches.
- Daisuke fixed an issue where text selection in the address bar could be lost when switching tabs.
- Stephanie improved suggestions when typing about: into the address bar.
Daisuke has fixed various issues with inspector and print QuickActions showing in incorrect states, updated the "refresh", "clear" and "update" to take the appropriate action and lots of other bug fixes and visual updates.
Dale has split out the "add-ons" action into separate "extensions", "themes" etc actions and prepared QuickActions for upcoming experimentation.
Storybook / Reusable components
[mconley] mstriemer has a patch up to add storybook command helpers to mach
./mach storybook --install
This week I learned
- [mcheang] Last week [hjones] and I both ran into the same bug! Running `./mach run` will break in this scenario – If you’re a macOS user and you’ve upgraded your homebrew by running `brew upgrade` then it will update your Python behind the scenes and break `./mach run`. What you’ll need to do is use a python version manager such as `pyenv` to switch to Python3.10.5. There’s a bug filed for this and steps for a workaround here: https://bugzilla.mozilla.org/show_bug.cgi?id=1784861
[pbz] I used `brew unlink python`, which allowed me to fallback to the system Python, which got things working again.
- [mcheang] You might also need to add a few lines in your .zshrc or .bashrc file (see bug for more details).
- [nchevobbe] ChromeUtils.dateNow() (ChromeUtils.cpp#1724) gives you a fractional timestamp, in milliseconds but with microsecond precision, which is compatible with Date constructor