Firefox/Meeting/04-Apr-2023
Contents
- 1 Highlights
- 2 Friends of the Firefox team
- 3 Project Updates
Highlights
In Firefox >= 113 users can now move the extensions button within the navigation toolbar while in Customize Mode (App Menu > More tools > Customize Toolbar)
Hubert added the ability to override a script from the debugger (bug)
Triggers from right-click on a file in the debugger source tree, it will download the file on the user machine, so it can be edited, and the local file is the script that will be used in the page (a purple icon indicates when a file is overridden)
Nicolas added support for inline-script pretty printing, which was requested 9 years ago (bug)
Alex landed a patch that adds a Javascript tracer in the debugger (bug)
Behind devtools.debugger.features.javascript-tracing, disabled by default
trace logs can be displayed in the console or stdout. Screenshot below show traces when disabling an extension in about:addons
You can test the new migration wizard in Nightly by setting browser.migrate.content-modal.enabled to true. You can open it by visiting about:preferences, and clicking on the โImport Dataโ button in the General section.
We recently updated the screenshots component theme to match the browser theme
Please test it out by flipping `screenshots.browser.component.enabled` to true
Please file any bugs you find here
The screenshots below show the buttons in dark theme
Thanks to lplanch for adding special characters / symbols to generated passwords
niklas landed a patch that adds a new URL bar entrypoint for Picture-in-Picture on Nightly. The PiP icon appears if a PiP-able video is loaded on the page. If you notice any issues with the feature, you can file a bug here.
Friends of the Firefox team
Resolved bugs from March 21st meeting (skipped)
Resolved bugs (excluding employees)
Volunteers that fixed more than one bug
- Abhijeet Chawla [:ff2400t}
- Abhishek
- Alvin
- Bryan Macoy
- CanadaHonk [:canadahonk]
- Ebilite Uchenna
- Itiel
- Ganna
- Lata
- Leila Kaltouma
- Leslie
- ofrazy
- portiawuu
- Noah Osuolale
- Nolan Ishii
- Sauvic Paul Choudhury[:sauvic]
- Shah
- Siya
- steven w
New contributors (๐ = first patch)
๐ ntshangase changed 3 support-links to moz-support-link
Alvin Favicons can now be imported from Safari
Alvin updated Safari permission step in migrator to be a folder picker for the Safari folder under ~/Library
Angel Villalobos don't list resources for import when those resources won't be imported in Chromiun browsers
Ganna converted browser/actors/PointerLock* JSMs to ESMs
Ganna converted SwitchDocumentDirectionChild.jsm and PromptParent.jsm in browser/actors to ESMs
๐ Ganna fixed ordering of toolkit/content/tests/browser/browser.ini
Ganna converted toolkit/components/urlformatter to ES modules
Anwar Sadat Ayub converted toolkit/components/timermanager to ES modules
Brian Pham MigrationWizardParent should filter out any migrators that are not enabled
๐ lplanch added special characters to randomly generated passwords
๐ Blessing Peters prevent localized strings from being truncated in the crash reporter client
Connor Pearson changed devtools screenshot save location
๐ Denis Kisavi (:kisavi) updated how the playPause button is selected for airmozilla wrapper
๐ divyaramaswamy2 standardize button styling in import error dialog
๐ Shah re-ordered PiP tests in pictureinpicture/tests/browser.ini alphabetically
๐ ianiket23 converted consumers of toolkit/crashreporter to import ES modules
Lata added CBC entry to picture_in_picture_overrides.js and sync mute/unmute
๐ Lata converted toolkit/components/mozprotocol to ES modules
Lata converted toolkit/components/remotepagemanager to ES modules
๐ Anand Roy fixed the width of the action box in about:support and about:profiles for smaller screens
๐ Pushpanjali converted toolkit/components/terminator/ to ES modules
Nolan Ishii made variant 2's list of resource types in the <summary> reflect the checked items within the <details>
Nolan Ishii variant 2 selector page details section should default to closed
Ekene Nwobodo converted browser/actors/LinkHandler* JSMs to ESMs
๐ Noah Osuolale removed test_bug930456.js and test_bug930456_child.js
Noah Osuolale changed Search and Address Bar telemetry docs to use titles for the probe names
Noah Osuolale converted toolkit/components/tooltiptext to ES modules
Noah Osuolale converted toolkit/components/translation to ES modules
Noah Osuolale converted toolkit/components/xulstore to ES modules
portiawuu replaced placeholder <select> and <options> in MigrationWizard with a <button> and a <panel-list>
Bryan Macoy favicons can now be imported from Chrome
Bryan Macoy implement Safari / macOS permission wizard page for Bookmarks / History
๐ Saira converted browser/actors/PageStyle* JSMs to ESMs
Sauvic Paul Choudhury[:sauvic] converted toolkit/components/bitsdownload to ES modules
๐ Sauvic Paul Choudhury[:sauvic] converted toolkit/components/taskscheduler to ES modules
๐ Siya alphabetized the toolkit/content/tests/widgets/chrome.ini manifest
Siya converted toolkit/components/crashmonitor/ to ES modules
steven w sorted the migrators in the new migration wizard in MRU order descending
steven w put a message above the resource checkboxes in Variant 1 of the MigrationWizard
Abhishek removed references to PLACES_DATABASE_PAGESIZE_B and code supporting them
Abhishek added Moz_Automation section in Defines. r=chutten, Document how FOG responds to `MOZ_AUTOMATION`
Abhishek added link to deployed Storybook instance in docs
Abhishek moved OpenSearch engine update url handling entirely into OpenSearchEngine
๐ Abhishek converted toolkit/mozapps/handling to ES modules
Abhishek converted browser/actors/Plugin* JSMs to ESMs
Abhishek converted toolkit/components/backgroundhangmonitor/ to ES modules
Abhishek converted toolkit/components/contentprefs/ to ES modules
Abhishek converted toolkit/components/corroborator/ to ES modules
Abhishek converted toolkit/components/featuregates to ES modules
Abhishek converted toolkit/components/forgetaboutsite to ES modules
Abhishek converted toolkit/components/kvstore to ES modules
Abhishek converted toolkit/components/messaging-system to ES modules
Leila Kaltouma fixed mute/unmute being out of sync with original video on ici.radio-canada.ca
๐ Leila Kaltouma converted toolkit/mozapps/update to ES modules
๐ Abhijeet Chawla [:ff2400t} fixed the new performance panel icon in devtools should be highlighted in green when the profiler is running
Abhijeet Chawla [:ff2400t} updated icon of site about:profiling to the Profiler Icon
Alvin implemented Safari / macOS permission wizard page for Passwords
Ganna converted ETP breakage report links to toolbarbuttons in ETP panel
Ganna use moz-support-link for permission-popup-storage-access-permission-learn-more label
Anwar Sadat Ayub converted JSM in browser/components/prompts to ESM
Brian Pham updated MigrationWizardChild move the associated MigrationWizard to the No Browsers error page if no valid migrators are found after requesting them
Denis Kisavi (:kisavi) removed _initCookieBannerHandlingLearnMore() function from privacy.js
Ebilite Uchenna replaced "cookieBannerHandlingLearnMore" xul label with moz-support-link
๐ Ebilite Uchenna changed telemetryDataDeletionLearnMore in about:preferences#privacy with moz-support-link
Ebilite Uchenna implemented Use moz-button-group in the print dialog
Ebilite Uchenna fixed Cookie Banner Reduction learn more link does not point to the correct URL
Shah replaced html:a link in searchResults.inc.xhtml with moz-support-link
Shah converted toolkit/components/processsingleton/ to ES modules
Lata fixed focus style for Library window
Lata removed mShuttingDown from XREMain class
Lata use moz-button-group in the Add new address
Lata aded documention for the destructive button variant in storybook
Lata removed usage of marionette.log.level from Log.sys.mjs
Nolan Ishii disabled the 'Import' button in the selection page of the new Migration Wizard if no resource types are selected
ofrazy [cdp] Use SpecialPowers.spawn instead of ContentTask.spawn in browser chrome tests
ofrazy renamed addSessionData/removeSessionData methods of RootMessageHandler to addSessionDataItem/removeSessionDataItem
Noah Osuolale converted browser/actors/LightweightThemeChild.jsm to ESM
portiawuu updated migration-wizard.css to use content: url(image) rather than background-image for icons
portiawuu send brand images from each browser migrator class down to the Migration Wizard, and set the images in the panel-list / selector button
portiawuu added and fixed branding asset for Brave migrator
Saira added PiP Subtitles Support for EdX
๐ Shreya Shah [:shasha] updated the BrowserTestUtils.overflowTabs function and its usages in tests
Siya updated sad/happy smiley faces to emoji
steven w display an error message when no importable resources can be found for a browser / profile pair
Abhishek renamed and updateed SearchEngine.getResultDomain
Abhishek converted browser/actors/RFPHelper* JSMs to ESMs
๐ Victoria Ajala replaced connect another device label with HTML anchor element
Project Updates
Add-ons / Web Extensions
WebExtensions Framework
- Cathy Lu worked on adapting the GeckoView tabs API implementation to support persisted event listeners (needed to make sure an extension event page wakes up on tabs event triggered on Firefox for Android) - Bug 1815310
- William Durand worked on introducing a new Firefox Remote Debugging Protocol method to uninstall temporarily installed addon and enabled the about:debugging โRemoveโ and โTerminate Backgroundโ extension card actions for remotely connected Firefox instances (which includes both remote Firefox Desktop instances connected over TCP as well as remote Firefox for Android instances connected over ADB) - Bug 1824346, Bug 1823456 and Bug 1823457
- Firefox >= 113 will persist and prime as expected multiple listeners even when they all share the same extra params - Bug 1795801
- Fixed missing custom extension icon in permission popup - Bug 1822306
WebExtension APIs
As part of the ongoing work on the declarativeNetRequest API:
Introduced a startupCache file for the declarativeNetRequest data store, used to load pre-validated DNR rules at browser startup - Bug 1803365
Make sure only same-extension DNR rules are applied to network requests originated by extensions - Bug 1810753
Allow DNR rules to match POST requests of ancestor frames in allowAllRequests DNR rule action - Bug 1821303
Replaced extension.readJSON with fetch for reading static rules JSON files - Bug 1823390
Developer Tools
DevTools
External contributors
Contributions from other teams:
Gijs improved console.log for DOM nodes in stdout (bug)
- console.* are printed to stdout when the following prefs are enabled: devtools.console.stdout.chrome and devtools.console.stdout.content
- Before, logging a node would print: console.log: ({}) ,
- Now: console.log: <div class="webRTC-selectDevice-selector-container">
Thanks to Gijs and Standard8 reports, Alex improved logging of DOMException and Components.Exception , showing a nicely formatted stacktrace (bug)
Hubert moved the Debugger Search UI to a regular side panel, which allows to keep the results list visible while opening scripts in the editor (bug)
- Julian fixed the network monitor performance analysis tools (bug)
linear() is a new animation timing function that landed in 112 (spec) and Nicolas added a widget to modify its arguments (bug)
double clicking on a point will remove it, double clicking anywhere else will add one, points can be moved with drag and drop, holding Shift will snap the point to the grid
- Nicolas made it possible to add column breakpoints to pretty printed source (bug)
- Alex added ChromeUtils.isDevToolsOpened which is a fast way to check if DevTools are opened (bug)
Alex landed many patches to improve the debugger reducers readability and performance (bug, bug, bug , bug , bug)
> 10% improvements on stepping over and project search
- Alex fixed an issue where empty lines from inline scripts would be marked as breakable (bug)
- Alex already improved the performance of the JavaScript Tracer (bug)
- Hubert fixed regex search results highlighting (bug)
- Hubert also added support for glob patterns in the debugger search (bug)
- Julian made the simplified highlighter for prefers-reduced-motion optional (bug)
- Nicolas fixed inconsistencies with highlighter icons in various DevTools (bug)
- Nicolas fixed a recent regression which excluded timestamps from console messages when using Copy All Messages / Save All Messages to File (bug)
WebDriver BiDi
- Sasha implemented WebDriver classic commands to find elements inside Shadow Roots (bug)
- Julian added support for getComputedLabel and getComputedRole to WebDriver classic (bug)
- Henrik released a new version of geckodriver: 0.33.0, which supports the new commands listed above (bug)
- Henrik added a shared cache for Elements and ShadowRoots which can be used both by Marionette and WebDriver BiDi, and allows to use those references transparently between BiDi and Classic (bug)
- Marionette now returns DOMTokenList instances as collections which will make it easier to work with objects such as Element.classList (bug)
- Sasha improved the Print command to support the orientation and background parameters (bug, bug)
- James added support for the input.performActions command to WebDriver BiDi, which allows to simulate various user events (bug)
ESMification status
- A big jump this month. Thank you to all the Outreachy candidates who have been contributing as part of the contribution phase - they have provided a large part of this jump and helped convert a lot of the smaller directories in toolkit/.
- There are now bugs filed to cover the rest of the conversions of toolkit/, but will need some volunteers to take them on.
- Converting modules used in workers is waiting on ES module workers to ship.
ESMified status:
browser: 58.3%
toolkit: 61.8% (up from 39.2%)
Total: 66.4% (up from 55.1%)
- #esmification on Matrix
- Migration Document (with a walkthrough!)
Lint, Docs and Workflow
Enabling of the valid-jsdoc configuration has now been centralised to the top-level .eslintrc.js file. At the same time, we enabled the configuration wherever possible and made it so that it'll be automatically enabled for new directories.
Please consider enabling the configuration for the directory(ies) you normally work in, especially if you intend to enable the Firefox source docs integration.
./mach eslint --fix should now be faster. It was previously running twice when it didn't really need to.
One side effect is that the count of "fixed" reported by ESLint, will be the number of fixed files, not the number of actual fixes.
- The Python linters (pylint, isort, flake8) have been replaced by Ruff.
Work has started to separate running Prettier from ESLint.
Currently, these are run as part of the same process with Prettier integrated into ESLint.
This causes some formatting issues when running with the HTML plugin for ESLint (and formatting is turned on there).
It also is potentially slightly slower to run, and is no longer a recommended configuration.
Running them as separately will make it easier for editing - you can configure your editor to format on save, and not have it show errors about formatting.
./mach eslint (or ./mach lint -l eslint) will automatically run both processes together.
- As part of the separation, please use // prettier-ignore to disable formatting, rather than an ESLint directive (e.g. // eslint-disable prettier/prettier). See firefox-dev post here for more information.
Migration Improvements (CalState LA Project)
- Weโre in the final month! Weโve made some big leaps recently!
- Nolan made it so that the Import button in the new wizard is disabled if no resources are selected for import
- Portia completed the panel-list dropdown in the new migration wizard, and added icons for the other browsers
- Brian added an error message to the new wizard that is displayed if no browsers can be found to import from
- Alvin added a page to the new wizard that instructs users how to import passwords from Safari via CSV export and import
- Steven added an error message to the selection page of the new wizard if no migratable resources exist for the selected browser / profile pair
- Weโre preparing to turn the new migration wizard on by default in Nightly, and the current plan is to have it ship to release in Firefox 114 or 115.
- We plan to enable the new wizard (held to Nightly for now) very soon!
Password Manager
- Thanks to Itiel for improving the focus ring on the login-list
- :serg added support for honoring minlength/maxlength attributes when generating a password
PDFs & Printing
- fchasen switched to using at-page size rule as paper size when printing to PDF
Picture-in-Picture
Full controls have been enabled by default for beta and stable starting 113 (bug)
Thanks so much to the following Outreachy applicants for their contributions to PiP:
helloshahx95 for re-ordering our tests into alphabetical order (so no more ESLint warnings when creating a new test file!)
imlata1111 for adding a brand new CBC wrapper that also fixes issues with the mute/unmute button
yasminekaltouma for adding a brand new Radio Canada wrapper that also fixes issues with the mute/unmute button and play/pause button
deniskisavi for fixing playback issues with airmozilla after closing the PiP window
sairaabdullapa for adding a new EdX wrapper and captions/subtitles support
- niklas resolved Hulu subtitles and seeking problems
- bnasar added a new Yahoo wrapper for Yahoo Finance and AOL to support PiP captions
- bnasar modified the toggle position for reddit videos to reduce overlap with video controls and restored previously removed toggle policy CSS changes
You may have noticed that the regular PiP toggle design changed recently!
kpatenio landed a change that makes the regular toggle squarish to be consistent with the first-time toggle
Before:
After:
Search updates
- Standard8 fixed a bug where search suggestions were sometimes not being fetched because focus was getting stuck to a search field within the page
- Mandy wrote some new high-level in-tree documentation about the Search Service. Check it out here
- Standard8 fixed an intermittent failure in one of the search telemetry tests
- Standard8 reviewed the uses of the search_form field thatโs been part of the search engine interfaces for a long time. (A search_form is the homepage for a search engine, google.com for example) He then landed a patch that removed unnecessary parameters sent to search form URLs
- Abhishek, a community contributor, landed a patch that improves our handling of OpenSearch engine update URLs
- Standard8 did a bit of clean up to the Search Service code by removing some code related to an old experiment
- James added telemetry about how often users see search terms persisted in the URL bar and how often the search term has to be reverted due to a PopupNotification being shown
- James also fixed a bug so that we now hide the persist search term tip when a PopupNotification is visible
- James implemented an impression event for ad carousels as part of our ongoing experiments with Glean in SERP telemetry
Urlbar updates
- Dao landed a patch that adds telemetry to the URL barโs results menu
- Dao also landed a patch so that the URL bar results menu for Firefox Suggest and Sponsored Suggest can be enabled separately
- Daisuke fixed 8 bugs related to the URL bar event telemetry (1817206, 1817208, 1820081, 1820327, 1820453, 1821660, 1822210, 1822319)
- James landed a patch so that now the site permissions, site identity and tracking protection icons are shown when we persist the search term in the URL bar
- Standard8 fixed an issue in the Search Service where we were checking every 6 hours for OpenSearch engine updates. Now a timer is only registered for OpenSearch engines that have updates available, and the timer only checks once per day, not every 6 hours.
- adw added telemetry related to URL bar navigational suggestions
- adw fixed 2 bugs related to users seeing old weather results after their computer had been asleep or offline (1822918, 1823080)
- Daisuke fixed a 13-year-old bug (assigned a whopping 13 points in Bugzilla) where opening a link where the target attribute is set to _blank would show about:blank in the address bar until the page loaded (610357)
- adw fixed an issue with displaying high and low temperatures in the weather results that can appear in the address bar
- Dao fixed an issue where the address bar results menu dismiss option wasnโt working for top picks and Firefox Suggest results
- adw fixed an issue where users on a VPN were seeing weather suggestions for the VPNโs endpoint rather than their physical location. Now we no longer fetch weather suggestions when a VPN is active and re-fetch once the user disconnects from the VPN
- adw also fixed a bug related to address bar engagement event telemetry
- adw landed a patch that removes certain legacy telemetry non sponsored scalars for weather suggestions
Storybook / Reusable components
Thank you to the many Outreachy applicants who contributed:
Siya alphabetized the tests in the toolkit/content/tests/widgets/chrome.ini manifest
Siya updated sad/happy smiley faces to emojis in about:preferences
Abhishek added a link to our Storybook instance in Firefox source docs
Divya landed a patch to use moz-button-group in the about:logins import error dialog
ntshangase replaced "Learn more" link on extension manage page with moz-support-link
Anayo replaced the "linkMoreTroubleshooting" xul anchor with moz-support-link
Lata landed a patch to use moz-button-group in the "Add new address" form autofill dialog in about:preferences
Lata documented the "destructive" button variant in Storybook
Ebilite replaced "cookieBannerHandlingLearnMore" xul label with moz-support-link
Ebilite replaced "telemetryDataDeletionLearnMore" in about:preferences#privacy with moz-support-link
Ebilite fixed the Cookie Banner Reduction learn more link not pointing at the correct URL.
Denis Kisavi removed _initCookieBannerHandlingLearnMore() function from privacy.js
Ganna landed a patch to use moz-support-link for "permission-popup-storage-access-permission-learn-more" label
Ganna updated tabbrowser documentation in Firefox source docs
Ganna converted breakage report links to toolbar buttons in the ETP panel
Shah replaced html:a link in searchResults.inc.xhtml with moz-support-link
Victoria replaced the "connect-another-device XUL label with a HTML anchor element
- Thanks to :shasha for updating the browser_overflowScroll.js test to use the BrowserTestUtils.overflowTabs function
- tgiles replaced "addon-install-blocked-info" link with moz-support-link
- hjones enabled writing component specific markdown documentation in Storybook