Lots of great Firefox DevTools updates!
Alex tweaked our server to client communication which should bring significant performance improvement across the whole toolbox
Nicolas improved performance of the Inspector Rules view by 50% when displaying deeply nested rules
Nicolas fixed a 10 year old bug by displaying the CSS Specificity of selectors when hovering them in the Rules view
Caption: The CSS rules pane in the Firefox DevTools Inspector is shown showing a CSS selector with two rules. One of the rules is being hovered, and a tooltip is shown for it saying "Specificity: (0,1,3)"
Bomsy made great progress on migrating the Debugger to CodeMirror 6 (#1878647, #1884651,#1886419, #1889281, #1889284, #1890269, #1891336, #1894725, #1897922)
we should be at parity with the previous version, so if you could enable devtools.debugger.features.codemirror-next and report any issue you see, that would be great!
By the way, we want to enable devtools.debugger.features.windowless-service-workers by default, so you can debug Service Workers directly in the debugger (without going to about:debugging). We're still looking for feedback, so if you're working with Service Workers, please foxfood this pref and report any issue you encountered :)
Henrik published a blog post about the upcoming CDP (Chrome DevTools Protocol) deprecation in Firefox, which you can read here. The plan is to start disabling CDP by default in Firefox 129 and fully remove CDP support by the end of the year
Dale landed a patch to enable Google trending suggestions and recent searches on the release channel for Firefox 128!
Pier Angelo Vendrame
Sebastian Zartner [:sebo]
Sukhmeet[:sukh]
Jonas Jenwald [:Snuffleupagus] fixed XRef errors from to prevent breaking font loading in PDF.js
Sukhmeet[:sukh] removed browser.firefox-view.search.enabled preference and removed unused code snippets in FormAutoFill
As part of the cross-browser compatibility improvements for Manifest Version 3 extensions landed in Firefox 128:
Content scripts can now be executed in the webpage global using the execution world MAIN (which is now supported by the scripting API and content scripts declared in the manifest.json file) and not be blocked by a strict webpage CSP (Bug 1736575)
NOTE: content scripts executed in the MAIN world do not have access to any WebExtensions API.
Added support for domainType (“firstParty”, “thirdParty”) DNR rule conditions (Bug 1797408)
Performance related improvement on evaluating DNR rules using requestDomains and initiatorDomains conditions (Bug 1853569)
Event pages will not be suspended if API calls that require user actions (e.g. permissions.request API calls) are still pending (Bug 1844044 / Bug 1874406)
Event pages persisted listeners removed through the removeListener method will stay persisted and can respawn the event page after it has been suspended (Bug 1869125)
NOTE: API events persisted listeners will instead be completely removed (not persisted anymore and not respawning the event page anymore) if the extension event page scripts do not add the listeners again (by not calling addListener) when the event page is started again.
Sebastian Zartner [:sebo] added warning when properties only applying to replaced elements are used on non-replaced elements (#1583903), and when column-span is used on elements outside of multi-column containers (#1848705)
Thanks to Valentin Gosu [:valentin] for fixing an issue that failing service worker requests when Responsive Design Mode was enabled (#1885308)
Thanks James Teh [:Jamie] for fixing an accessibility issue in the DevTools accessibility tree (#1898661)
Alex fixed an issue that could prevent DevTools to open (#1898490)
Julian fixed an issue that was preventing DevTools to consume sourcemaps files when they required credentials (#1899389)
Nicolas tweaked the filters button colors in Console and Netmonitor so their states should be more explicit (#1590432)
Caption: The filter bar of the Firefox DevTools Network Monitor in the light theme. Various resource types are filtered for (HTML, CSS, JS, XHR and Images). Fonts, Media, WS and Other are not being filtered for. Images is keyboard selected.
Caption: The filter bar of the Firefox DevTools Network Monitor in the dark theme. Various resource types are filtered for (HTML, CSS, JS, XHR and Images). Fonts, Media, WS and Other are not being filtered for. Images is keyboard selected.
Nicolas added @property rules (MDN) information in the var() tooltip (#1899489)
Caption: The CSS rules pane in the Firefox DevTools Inspector is shown showing a CSS selector with 6 rules. One of the rules sets a background colour using a CSS variable. That rule is being hovered, and a tooltip is shown for it describing the value of the variable (it's "gold").
And we now indicate when custom property declaration are invalid when their value does not match registered custom property definition (#1866712)
Caption: The CSS rules pane in the Firefox DevTools Inspector is shown showing a CSS selector with 2 rules. One of the rules is using a custom property. An error icon is shown, and a tooltip saying 'Property value does not match expected "<color>" syntax'.
Nicolas added support for @starting-style rules (MDN) in the Rules view (#1892192)
Caption: The CSS rules pane in the Firefox DevTools Inspector is shown showing a CSS selector for an h1 element with a @starting-style. The rule states that the background-color is transparent. A second rule below it makes it so that the background-color transitions to gold as soon as the h1 is rendered.
Thanks a lot to Boris Chiou [:boris] for working on the platform patch that made this possible (#1893409)
Nicolas added support for @scope rules (MDN) in the Rules view (#1893593)
Caption: The CSS rules pane in the Firefox DevTools Inspector is shown showing some CSS selector using the @scope at-rule to set the colours of a li::marker and li element differently in different scopes.
External:
Thanks to James Hendry who removed the deprecated desiredCapabilities and requiredCapabilities from geckodriver (#1823907)
Related to that, Henrik updated the default value of the remote.active-protocols preference to "1", which means that CDP is now disabled by default (#1882089)
Henrik implemented support for the http and bidi flags on the WebDriver Session, which allows to know if a specific session is using classic, bidi or both. (#1884090 and #1898719)
Julian added support for several arguments of the network.continueRequest command. Clients can now update headers, cookies, method and post body of an intercepted request. This also fixes a bug where intercepted requests in the beforeRequestSent phase could still be sent to the server (#1850680)
Sasha fixed the order in which we emit network events in case of redirects. Our behavior now correctly matches the specifications (#1879580)
Sasha implemented the userContext argument for the permissions.setPermission command which allows to update a permission only for a specific user context (#1894217)
Henrik improved the way we handle error pages in the navigation helpers used by WebDriver BiDi (#1878690)
Sasha updated the exception thrown when the input.setFiles command is used with a file which doesn't exist. (#1887644)
Sasha updated our vendored version of puppeteer to v22.9.0. As usual we try to keep up to date with Puppeteer releases to benefit from their latest test changes and improvements in BiDi support. (#1897183)
Some more files (in toolkit/) have been transitioned to use the .worker.(m)js file name system to automatically pick up the worker environment for ESLint.
Nick fixed an issue where mach lint might not run lints on Windows due to case differences in the drive name.
There are patches up for review that allow for exporting backups to a single-file archive, add the mechanism for encrypting backups and adds support for recovering from a single-file archive
fchasen has a patch up for review for the dialog for restoring from a backup
kpatenio has patches up for the dialog for disabling backups and for disabling backup encryption
You can follow along with the root metabug here
We’re almost at the point where we have end-to-end backup and recovery in a testable spot! As a reminder, this is not yet production ready, and might change dramatically before it’s ready to be used.
mconley has patches up to make the Windows Jump List do off-main-thread favicon caching, and to remove the legacy main-thread backend altogether.
Initial work on the toolkit profile service and profile database is in review. Engineering work is pausing for two weeks to free up engineers for some Review Checker work.
HTTPS trimming in the address bar
Marco fixed a bug related to displaying the scheme for RTL (right-to-left) domains (1862404)
Google account signed-in status
Stephanie landed patches enabling telemetry indicating whether the client was signed in to a Google account at the time of a SERP load (1877494, 1892332)
Search Config v2
Mark & Mandy have been hard at work on the new search config over the past several months, and it is now permanently enabled (1900638)
Standard8 resolved an incident where one of our Glean pings wasn’t being sent due to the new search config (1901057, 1901208)
Bug fixes, clean up and intermittents
We completed a significant number of one-off bug fixes, intermittent test failure fixes and code clean up. Special shout out to patches from Yazan, our team’s new co-op student and to Moritz, our team’s new student worker.
1610530,1626741, 1841769, 1860753, 1890761, 1893228, 1894910, 1898437, 1898711, 1900321, 1900575, 1900601,1901069
Thanks to pierov for fixing an issue where placeholders on the datetime widget ignore spoof English
Thanks to Irene Ni for cleaning up some CSS tokens in moz-card
We have two new components in development: moz-radio/moz-radio-group and moz-checkbox.
We now only do synchronous imports after the DOMContentLoaded event in order to fix a regression in about:preferences (Bug 1896837)
Planning on fixing an issue in MozLitElement where Fluent wasn't getting the data-l10n-attrs set quickly enough. See the following for more details: Bug 1901336 - Support setting fluent attrs in MozLitElement property definitions
General triage
[mconley] Less a “this week I learned”, and more of a tip - I have scripts here to help you divide bugs for triage between a team of triagers
This information, including all of the previous updates, are fully available in this doc: https://docs.google.com/a/mozilla.com/document/d/1u9YH3ULNRYg6G-fN-Udkvfkcvg0alJfzi_zIAfFNkL8/edit?usp=sharing
Also note that we’re really just synthesising and humanising the stuff that's on the Wiki, which is freely available from here: https://wiki.mozilla.org/Firefox/Meeting, so check that out if you want the source material. It'll also be posted (minus the Below the Fold stuff) to the Nightly blog.
Finally, if there's a Firefox-ish team that you feel isn't being represented here, please let them know about the above meeting so we can get their updates.
Keep on rockin' the free web,
-Mike