Gif of the extensions button being moved within the Firefox navigation bar via mouse drag and drop, which was never possible before until now
Categories: News

Jam-packed with Updates – These Weeks in Firefox: Issue 135

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)Gif of the extensions button being moved within the Firefox navigation bar via mouse drag and drop, which was never possible before until now
  • 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)Image of a context menu within the Firefox debugger showing four different menu options, one of which is selected and called "Add script override"
  • Nicolas added support for inline-script pretty printing, which was requested 9 years ago (bug)An image comparing a JavaScript file's formating before pretty-printing and after pretty-printing within the Firefox debugger.
  • 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:addonsImage of the JavaScript tracer toggle in the Firefox debugger
  • 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.Image of the new migration wizard used for migrating data from another browser into Firefox, with the picture showing in particular how a user would select and import Safari bookmarks.
  • 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 themeImage of Firefox's screenshot component - which displays a close button, a copy button, and a download button - with updated themes that correspond with a dark theme loaded by the browser.Screenshot of the special Firefox page "about:config" taken with the screenshot component.
  • Thanks to lplanch for adding special characters / symbols to generated passwordsImage of Firefox's generate password prompt showcasing support for special characters, thus improving security
  • 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.Screenshot of Firefox's URL bar containing several icons, including a brand new icon for the Picture-in-Picture feature which now allows users to watch videos in a new window from the URL bar

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)

 

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
    • Thanks to Connor Pearson, screenshots are now placed in the images folder on OSX (bug)
    • Thanks to :zacnomore for improving the display of our pseudo class toggle UI (bug)Image comparing the Firefox devtools pseudo class toggle UI before and after changes that save space and display pseudo class toggles in a row
  • 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)Image of Firefox devtools showing easier to read log outputs of DOMException and Components.Exception as formatted stack traces

 

  • 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)Image of Firefox's debugger Search UI located in a regular side panel, which allows the results list to remain visible while opening scripts in the editor
  • 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 Image of a line graph that is displayed in Firefox devtools and can be interacted with for modifying the linear timing function for animations
  • 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)
  • 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.
  • ./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)

Password Manager

PDFs & Printing

Picture-in-Picture

  • Full controls have been enabled by default for beta and stable starting 113 (bug)Screenshot of video controls displayed for the Picture-in-Picture feature, including a video scrubber, seek forward and backward buttons, and a fullscreen toggle
  • Thanks so much to the following Outreachy applicants for their contributions to PiP:
  • 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!

Search and Navigation

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

 

No comments yet

Post a comment

Leave a Reply

Your email address will not be published. Required fields are marked *