Firefox/Meeting/06-Sept-2022
Contents
- 1 General Topics / Roundtable
- 2 Friends of the Firefox team
- 3 Project Updates
- 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
Resolved bugs (excluding employees)
Script to find new contributors from bug list
Volunteers that fixed more than one bug
- Itiel
- Jonas Jenwald [:Snuffleupagus]
New contributors (đ = first patch)
- Jonas Jenwald
- Johannes Bechberger worked on Firefox Profiler bugs. Thanks!
General triage
- DĂŁo, Marco, Prathiksha are this monthâs triagers!
Project Updates
Add-ons / Web Extensions
WebExtensions Framework
- 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
WebExtensions APIs
- 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
Event Pages:
- Support for Event Pages (background pages with the persistent flag set to false) in manifest_version 2 on all channels - Bug 1788108
- Extend Event Pages lifetime if there are API listener calls still pending - Bug 1785294
Follow ups related to content scripts registered as persistAcrossSession using the new scripting API
- Clear persisted content script on addon updates Bug 1787145
- Avoid to wait for the scripting API rkv store initialization on addon startup if the extension doesnât have any persisted content scripts - Bug 1785898
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.
Developer Tools
DevTools
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)
Alex also added the ability to automatically open DevTools from the webext CLI, adding a âdevtools flag (bugzilla bug , webext Github PR)
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)
And much more impressive, Julian made opening the StyleEditor 90% faster (perfherder) on pages with minified stylesheets (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)
WebDriver BiDi
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)
Fluent
- [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 status
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.
Check out this walkthrough to see how to do one of these conversions.
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.
ESLint rule prefer-boolean-length-check has now been turned on almost everywhere, previously it was only browser & toolkit.
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
Picture-in-Picture
- 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)
X button will be shown when user hovers a track to quickly hide it
- Added self time category breakdown to our bottom panel sidebar. Thanks to our contributor parttimenerd for adding this feature! Example profile (PR #4195)
There is now self time category breakdown below the running time category breakdown
- Added the sum of the power usage in power track's tooltips while selecting a time range. Example profile (PR #4172)
âEnergy used in the current selectionâ shows the power usage of that range only
- 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.
QuickActions:
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
Examples:
./mach storybook --install
./mach storybook
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
https://bugzilla.mozilla.org/show_bug.cgi?id=1766497
[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