Firefox/Meeting/04-May-2021
Today’s meeting leader is: mconley
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 Fission
- 3.4 Form Autofill
- 3.5 Installer & Updater
- 3.6 Lint and Docs
- 3.7 macOS Spotlight
- 3.8 Messaging System
- 3.9 New Tab Page
- 3.10 Nimbus
- 3.11 NodeJS
- 3.12 Password Manager
- 3.13 PDFs & Printing
- 3.14 Performance
- 3.15 Performance Tools
- 3.16 Picture-in-Picture
- 3.17 Privacy/Security
- 3.18 Proton/MR1
- 3.19 Search and Navigation
- 3.20 Screenshots
- 4 This week I learned
General Topics / Roundtable
Friends of the Firefox team
For contributions from April 20 2021 to May 4 2021, inclusive.
Introductions/Shout-Outs
- None
Resolved bugs (excluding employees)
Fixed more than one bug
- Falguni Islam
- Itiel
- kaira [:anshukaira]
- Kajal Sah
- Luz De La Rosa
- Richa Sharma
- Sebastian Zartner [:sebo]
- Vaidehi
New contributors (🌟 = first patch)
- kaira [:anshukaira] added some CSS polish to an about:logins import error dialog, and removed some unused assets from the Screenshots code
- 🌟 Ava Katushka made Firefox more consistent in how it chooses default filenames for saved images
🌟 Vaidehi
- suppressed a spurious focus ring from appearing upon loading about:downloads
- fixed the appearance of an image in RDM when using Dark Theme
- Claudia Batista [:claubatista] landed a patch to make it possible to fallback to some built-in support pages when access to SUMO is not available
Kajal Sah
- enabled ESLint support for our Screenshots code
- removed some unused code from Screenshots now that saved screenshots are no longer hosted on a server
- 🌟 Lebar improved some of our internal Places database access code
- Luz De La Rosa fixed some visual glitches in our panels as part of the retheme effort
- 🌟 Richa Sharma added initial support for isolating WebExtension access to particular containers. See the “WebExtensions Framework” update for more details.
- ryedu.09 fixed a visual glitch in about:preferences
- 🌟 Samuel Grasse-Haroldsen made it so that we render an appropriate message in about:addons when there are no add-ons to manage, rather than an empty list.
- Dawit got rid of some unused Screenshots code
Project Updates
Add-ons / Web Extensions
Addon Manager & about:addons
- Starting from Firefox 90, when no extensions are installed our about:addons page will show to the users a nicer message to explicitly direct them to addons.mozilla.org instead of an empty list of installed extensions (Bug 1561538) - Thanks to Samuel Grasse-Haroldsen for fixing this polishing issue.
- As part of the ongoing work to get rid of OS.File usage, Barret unveiled and fixed some races in AddonManager and XPIDatabase jsm (Bug 1702116)
- Fixed a macOS specific issue in the “Manager Extension Shortcuts” about:addons view, which was preventing this view from detecting some of the conflicting shortcuts (Bug 1565854)
WebExtensions Framework
Starting from Firefox 90, we now avoid ChromeUtils.idleDispatch on urgent blocking webRequest events, which made both us and perfherder quite happy \o/ (Bug 1587058)
- We expect this to be also a user perceived improvement (e.g. this was an known issue with high refresh monitors, e.g. see Bug 1560090)
As part of the past round of Outreachy projects, our contributor Richa Sharma worked on a project aiming to allow Firefox users to restrict which extensions are allowed or not allowed to run in certain Firefox containers. The initial set of changes needed to adapt our internals have been landed in Firefox 90 (but we aware that the feature is still locked behind prefs, the effort to complete adapting all the webextensions features and APIs is still ongoing and there isn’t yet any Firefox UI to manage these restrictions):
- Meta bug: Bug 1683056 - [META Users control over add-ons in Container tabs]
- Set of bugs landed in Firefox 90: Bug 1683058 (tabs API), Bug 1690736 (webNavigation API), Bug 1692813 (proxy API), Bug 1697764 (webRequest API)
- Experimental prefs:
- extensions.userContextIsolation.enabled (boolean),
- extensions.userContextIsolation.defaults.restricted (JSON stringify array of userContext Ids)
- extensions.userContextIsolation.EXTID.restricted (JSON stringify array of userContext Ids)
As part of our ongoing work on introducing in Firefox support for extensions using the new “manifest_version 3”, we have introduced support for some new annotations to our JSONSchema parser (and started to use these new properties to introduce the differences between the API and manifest properties available based on the extensions manifest_version):
- Fixed a use-after-free issue on shutdown in MatchPattern::Init identified through grizzly fuzzy testing (Bug 1699298)
- Fixed a bug in DataTransferList, which was preventing web pages to access a drag and dropped file list if an extension content script was able to access it first (Bug 1707214)
WebExtension APIs
- Nicolas Chevobbe applied the needed changes to ensure that the devtools.inspectedWindow.reload method is Fission compatible also when an extension does pass to it the userAgent option (Bug 1706098)
Developer Tools
Fission
Neil has been working on reviving the tab unloader for when users are hitting memory limits
- It’s smarter this time though, and should hopefully make better choices on which tabs to unload.
- Currently disabled by default, but Nightly users can test it by setting `browser.tabs.unloadOnLowMemory` to `true`
Form Autofill
Installer & Updater
Lint and Docs
- No updates this week
macOS Spotlight
Messaging System
- New users now get initial focus on about:welcome instead of the address bar based on experiment results. This was uplifted to Beta 89 and Release 88.
- Import screen on about:welcome opens up migration wizard based on the browser used to download Firefox as well as showing the other browser’s name on the button.
- Remotely deployed an infobar to remind new users two times to set Firefox as the default browser after 5 weeks and 10 weeks.
- Removed theme screens for both new user about:welcome and upgrade onboarding.
New Tab Page
Nimbus
NodeJS
Password Manager
PDFs & Printing
- No update
Performance
- dthayer updated the skeleton UI to match proton styles, turned it off for non-default densities, and ensured we show the skeleton UI when restarting firefox
- The skeleton UI is set to ride the trains to release!
- Barret remove OS.File usage from XPIDatabase.jsm
- Florian fixed a bug where the notificationbar stack lazy getter was called every time a tab closed
- Florian added Worker.postMessage, “Image load”, and “Image paint” profiler markers
- Florian wrote a patch to update the about:processes table in a more efficient way
Florian ensured mochitest profiling works for accessibility tests and tests triggering customizationchange events.
- Try mach test <path to mochitest> --profiler
- Mconley dug into a few performance regressions related to proton
Performance Tools
- Stacks now include the category color of each stack frame (in tooltips, marker table, sidebar)
601x214px
https://i.imgur.com/ePqZoSA.png
- Fixed a bug where the dot markers appear in the wrong places.
601x331px
https://i.imgur.com/wsTBXoR.png
Picture-in-Picture
Privacy/Security
Proton/MR1
- 156x156pxWow, much changes! Big reveal!
Restyled notification bars to appear as part of the browser toolbox
- Now adapt to the theme too (dark and light mode of notification bars)
- Modal dialogs now use the Firefox design language, much prettier!
Context menus on Windows have updated styling and macOS uses native context menus
- Both will now respect system dark mode settings! 🌞🌚
Tabs have a new look and feel
- Easier to see what tab is selected 👀
- Second line of text displayed to describe audio/picture-in-picture state
- More text is displayed when audio is playing, now that the audio button replaces the favicon when the tab is hovered
- Icons have been updated to have lighter strokes, and a new downloads animation too!
- Menus have been reorganized, removing less used options and renaming items to make them easier to find
- Lots of polish fixes to Proton address bar (and search bar)
- The Search Mode chiclet can now be closed also when the address bar is unfocused - Bug 1701901
- Address bar results action text (for example “Switch to tab”, or “Search with Engine”) won’t be pushed out of the visible area by long titles anymore - Bug 1707839
- Double dots in domain-looking strings will now be corrected - Bug 1580881
- Nightly en-US only (experimental): browser.urlbar.unitConversion.enabled and browser.urlbar.suggest.calculator
Screenshots
- Kajal, Falguni, Dawit, and Kaira have been working on removing server side code from screenshots
This week I learned
- [gijs] CSS `ch` units depend on the device pixel rendering of the `0` character in the font, font-size and DPI scaling. So the CSS `px` outcome of something like `50ch` can easily vary by 30px between DPI scaling (with identical font size + font), if the font forces glyphs to be rendered in line with device pixels. Unless you’re dealing with monospace text, it’s probably better to use `em` for font-size-related sizing.
[gijs] CSS selectors: `:root:-moz-lwtheme` works but `:host:-moz-lwtheme` does not, you want `:host(:-moz-lwtheme)`.
- There should now be warnings in the CSS console for the broken version, which will fail browser_parsable_css.js on infra.
[gijs] As of October 2020, you can split `skip-if` and `fail-if` annotations in test manifests (browser.ini, mochitest.ini, etc.) across lines! This is equivalent to separating with `||` but makes it easier to read multiple conditions. E.g.:
skip-if = os == “win” || os == “linux
Is equivalent to:
skip-if =
os == “win” # fails because X
os == “linux” # fails because Y- There's now also a linter to enforce multiline conditions - only shows as warnings, reviewbot should soon be showing warnings in phabricator.