Firefox/Meeting/15-Nov-2022
Today’s meeting leader is: kpatenio
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 ESMification status
- 3.6 Lint, Docs and Workflow
- 3.7 Migration Improvements (CalState LA Project)
- 3.8 Picture-in-Picture
- 3.9 Performance
- 3.10 Performance Tools (aka Firefox Profiler)
- 3.11 Search and Navigation
- 3.12 Screenshots
- 4 This week I learned
General Topics / Roundtable
[mconley] Tips for growing new reviewers!
Step 1: Find someone you’d like to grow into a reviewer and let them know your intent
Step 2: For something you’ve been assigned a review for, mark the person from Step 1 as a blocking reviewer along with yourself
Step 3: Do an initial review of the patch(es) and note down in a review what you think the person from Step 1 should look at / watch out for
Step 4: Person from Step 1 does a review
Step 5: Then you do a full review of the patch(es). Bonus points if you set up a meeting and review the patch(es) in a Zoom meeting live in front of the person from Step 1 so that they can see what you’re doing.
Friends of the Firefox team
Resolved bugs (excluding employees)
Script to find new contributors from bug list
Volunteers that fixed more than one bug
- Thanks Johannes Bechberger for your continued work on the Firefox Profiler.
New contributors (🌟 = first patch)
- Thanks Kitsu and Simmo Saan for your first patches in the Firefox Profiler.
General triage
- Drew, Molly, Sam and DJ are this month’s triagers!
Project Updates
Add-ons / Web Extensions
WebExtensions Framework
As part of the work related to “Origin Controls “ and “Unified Extensions UI”:
browserAction widgets have been integrated into the “Unified Extensions” panel (and browserAction widgets pinned on the toolbar to be auto-overflowed into the “Unified Extensions” panel): Bug 1784947, Bug 1797155, Bug 1798324, Bug 1797548, Bug 1799842
Added origin controls attention indicator to the “Unified Extensions” button: Bug 1793629
Others related follow-ups: Bug 1799203, Bug 1799143, Bug 1798968, Bug 1796559, Bug 1799497, Bug 1798777, Bug 1796987, Bug 1794427
Thanks a lot to mconley, dao and Itiel for their help on the work needed on the Firefox Desktop frontend side of this project
“applications” manifest key is fully deprecated (and not supported anymore) in Manifest Version 3 extensions, superseded by the existing “browser_specific_settings” manifest.json property - Bug 1797050
Please do not use the “applications” key in manifest.json files anymore
Bug 1797777 - Tracking meta for updating all non-test extensions in tree to use “browser_specific_settings” in their manifest
In Firefox >= 108, a simplified extension version string format is now recommended (warnings only but AMO/addons-linter will enforce this new format for Manifest Version 3 extensions) - Bug 1793925
Updated manifest.json version format documentation: https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/version#version_format
- Fixed a regression on calling “confirm” from extension action popups (regression originally introduced in Firefox 107 from Bug 1791972, fix landed Firefox 108 and uplifted to 107) - Bug 1796972
Investigated and identified underlying issues of the regression reported on LastPass in Firefox Nightly 108 Bug 1791415 - LastPass extension not working
Turned out that the regression was triggered by the addition of the implementation for the JS Array grouping proposal (Bug 1739648)
Regression currently fixed by disabling the Array grouping proposal by default in Nightly (Bug 1799619)
WebExtension APIs
Lifting user activation requirement on the action.openPopup API method (to align it with Chromium and Safari per agreement between browser vendors part of the W3C WebExtensions Community Group) - Bug 1755763
Currently limited on Nightly builds (locked behind the “extensions.openPopupWithoutUserGesture.enabled" about:config pref)
Bug 1799344 is tracking removing the pref and enabling the new behavior on all channels.
- Fixed an issue with browser.runtime.onStartup not being fired on event pages after the event page got suspended once - Bug 1796586
- As part of the ongoing work on the declarativeNetRequest API, Bug 1745758 has introduced an initial version of the declarativeNetRequest rule evaluation logic (Bug 1745761 is tracking hooking up the rule evaluation logic to the network)
Developer Tools
DevTools
Thank you
Thanks to :luke.swiderski, DOM mutation breakpoints are correctly synchronized between Inspector and Debugger panels (bug).
Thanks to :zacnomore who fixed a JSON Viewer bug, which now correctly checks key modifiers before handling a keyboard shortcut (bug).
:zacnomore updated the toolbar height of the JSON Viewer to be consistent with the rest of our Toolbox UI (bug).
Thanks a lot to Emilio, who fixed several UI issues around flexbox in DevTools as soon as they were reported (bug 1, bug 2, bug 3)
Container queries
Nicolas (:nchevobbe) improved Container Queries support in the Inspector's Rule View:
- Hover on the container's information to get more details in a tooltip (bug).
https://snipboard.io/2WDfTB.jpg - Click on the icon next to the name to select it in the inspector (bug).
- Hover on the container's information to get more details in a tooltip (bug).
Nicolas also updated the Style Editor's "Media Queries" sidebar to show all "At-rules": @container, @media and @support (bug).
https://snipboard.io/xSo2IN.jpg
Improvements
Hubert (:bomsy) improved the Debugger's Pretty Print availability. The feature should now be more consistently available, and in the few cases where it really can't be provided, the icon is still visible but disabled with an explanatory tooltip (bug).
https://snipboard.io/0FQnwv.jpgIn the Network Monitor, Hubert added a feature to copy requests in a new format: "Copy as PowerShell" (bug)
https://snipboard.io/kRM8Na.jpg
Maintenance
Alex (:ochameau) removed the devtools-source-map bundle (bug, bug), which was manually built and checked-in by our team, and used the occasion to add performance tests for our sourcemap usage (bug, bug)
Hubert also fixed a memory leak in our sourcemap implementation (bug).
Alex fixed a regression where DevTools would no longer close when Firefox was closed (bug).
Julian (:jdescottes) fixed a bug where the Inspector's RuleView was blank when trying to render very long base64 URLs (bug).
Julian fixed the Add New Rule feature of the Inspector, which no longer worked on websites with CSPs (bug).
WebDriver BiDi
- Sasha (:sasha) implemented a new event browsingContext.domContentLoaded, which is emitted when the document becomes interactive (bug).
- Henrik (:whimboo) changed WebDriver BiDi to write the connection information to a JSON file called "WebDriverBiDiServer.json", which provides more details than the previous "WebDriverBiDiActivePort" (bug).
- Henrik contributed many new web platform tests for "no such element" errors (bug)
- Henrik fixed WebDriver:NewWindow to open new tabs on about:blank instead of about:newtab (bug)
- Henrik updated the serialization of Document objects to follow the current WebDriver Classic specification and stop serializing them as WebElements (bug).
ESMification status
ESMified status:
browser: 39.1%
toolkit: 29.1%
Total: 38.4% (up from 31.1%)
- #esmification on Matrix
- Migration Document (with a walkthrough!)
Lint, Docs and Workflow
storybook and devtools now use mjs file extensions for module files
Simpler for ESLint and allows to enable more rules
- Fixed an issue when having storybook's node_modules installed, ./mach eslint would run forever.
- Running the eslint-plugin-mozilla tests now gives better output for failures.
- Python imports are now required to be sorted.
Migration Improvements (CalState LA Project)
- Thanks to Nolan Ishii for adding new migrators for Opera and for Vivaldi! Currently disabled behind `browser.migrate.opera.enabled` and `browser.migrate.vivaldi.enabled` until QA runs some tests.
- Zach Harris made it so that when we import bookmarks from Internet Explorer, we import the favicons as well!
- Angel Villalobos made it so that “Other Bookmarks” imported from Chrome go into the “Other Bookmarks” folder in Firefox, rather than the “Bookmarks Menu” folder
- Brian Pham cleaned up an old pref for a rollout that we did years ago
Work underway:
Picture-in-Picture
- Niklas fixed the HBO Max script for PiP and added PiP captions support
- Kpatenio fixed the TubiTV script for PiP captions support
- Florian fixed an issue where the PiP window wasn't set to inactive
- Emilio resolved an issue where scrollbars appeared on the PiP window
Performance
- Florian made it so that the GPU process is always at the same priority level as the parent process on Windows
- Florian also made it so that background tab processes get put into Efficiency Mode on Windows
Performance Tools (aka Firefox Profiler)
- A blogpost that summarizes what happened in Q3.
added 2 new transforms: collapse indirect recursion, and focus category
Reminder: transforms are available from the right-click menu in the call tree, flame graph or stack chart. They transform the call tree to make it simpler to read.
(#4232) Collapse indirect recursion: this removes the nodes if they end up calling the same function. For example: From A -> B -> C -> A -> D, this keeps only A -> D. Thanks Simmo Saan!
(#4212) Focus category: this will keep only the nodes that belong to the same category as the currently right clicked node. Thanks Johannes Bechberger!
- (#4286) add an item to show all local tracks for a process, and make that double clicking on the global track in the menu also shows all its local tracks.
- (#4292) show the CPU model in the profile info panel
- (#4295) sort the extensions list in the profile info panel
- (#4296) fix a bug in the linux perf converter where single-letter executables wouldn't be parsed. From our contributor Kitsu.
- (#4305) display a blue border for selected tracks
- (#4193) display categories in the flame graph's tooltip -- only available for converters, not available for gecko profiles yet. The style for the graphs in the tooltip changed for everybody though. From our contributor Johannes Bechberger.
- (#4261) The sourceview is now focusable, which makes it possible to copy paste text out of it.
- (#4199) When moving between panels, the sidebar categories stays open (previously the state was forgotten). Thanks Johannes Bechberger!
- (Bug 1788647) When we profile browsertime runs in our CI, the names in the generated zip were previously pretty bad. Now they should be much clearer.
- Then your usual crash fixes and dependency updates, and some other minor or invisible changes.
- Volunteer[1]mkohler removed specific keyed scalars and[2]standard8 removed telemetry recorded in SEARCH_COUNTS since both were covered by newer keyed scalars.
mcheang finished a substantial rework on how search engines are references in SearchService whereby they are now referenced by a unique id rather than by name.
Moving forward when trying to get an engine outside SearchService prefer[3]getEngineById(engineId) over[4]getEngineByName(engineName).
- jteow added a handful of patches related to an experiment to[5]persist the search term in the urlbar while viewing a default search engine results page.
- dharvey added the ability for Quick Suggest to handle whether or not a suggestion from Merino is a top pick.
adw did refactors in Quick Suggest in preparation for upcoming future work:
Moved unrelated/loosely related code from UrlbarProviderQuickSuggest and UrlbarQuickSuggest into QuickSuggest (The core quick suggest module that is the external initialization point), QuickSuggestRemoteSettingsClient (manages Quick Suggest remote settings data such as configuration and suggestions), and UrlbarProviderQuickSuggest (a urlbar provider which records related engagement telemetry when a result is picked).
Create a new BaseFeature class to make it easier to toggle various Quick Suggest features on/off depending on Nimbus variables and preferences.
- mak moved some of the tracked details in SearchSuggestionController into a single context object that tracks each query and functions use that object to minimize the chance of a race condition.
- dao improved UrlbarView, including[6]converting the methods to use actual private properties and methods and[7]making removeStaleRowsTimeout a static property
Screenshots
- We’re starting to identify and burn down the list of blocking issues to ship the new component implementation and replace the extension implementation
- Check it out by flipping the `screenshots.browser.component.enabled` pref.
- We’re starting to assemble and line up ideas for next steps for Screenshots. If you are a heavy screenshots-taker - or think you would be if only Screenshots did x - please tell us about x. We’re in #fx-screenshots in matrix, or you can post to connect.mozilla.org or file a bug in bugzilla.
This week I learned
[standard8] Cu.reportError does not support multiple arguments like console.error does. The second argument to Cu.reportError is for a stack.
Generally prefer console.error unless you know you have a specific case for reportError (if so, please let Standard8 know).
reportError doesn't report stdout unlike console.error (if devtools.console.stdout.* preference is set)
There is a bug about replacing Cu.reportError with console.error, that Standard8 is likely to get progressed via ESLint roll-out.
- [mconley] moz-phab submit -m “Applying fixes”