Firefox Headlines (July 28th, 2022)

23 views
Skip to first unread message

Mike Conley

unread,
Jul 28, 2022, 7:59:11 PM7/28/22
to Firefox Dev
Hello firefox-dev,

The Firefox Desktop team met earlier this week to pool notes and share information on the latest happenings in the codebase! There's lots to tell, and we've done our best to transform the meeting notes into something a bit more digestible.

Thanks to Jared Hirsch, Katherine Patenio and Niklas Baumgardner who put these notes together with me.

Highlights

Friends of the Firefox team

Resolved bugs (excluding employees)

Volunteers that fixed more than one bug

  • Janvi Bajoria [:janvi01]

  • sayuree

  • Shane Hughes [:aminomancer]

New contributors (🌟 = first patch)

Project Updates


Add-ons / Web Extensions

WebExtensions Framework
  • As part of the ongoing ManifestVersion 3 (MV3) work:

    • New unified extensions toolbar button: William Durand has started to work on the new unified extensions UI - Bug 1777481 / Bug 1778722 / Bug 1780782 

      • The new unified toolbar button is meant to replace the browserAction toolbar buttons but it does not cover all the features that are currently provided by the browserActions toolbar buttons yet. The new toolbar button is currently only enabled when the “extensions.unifiedExtensions.enabled” preference is explicitly set to true in about:config.

      • A huge shout out to both Itiel and James Teh for the great support they provided in the reviews for the unified extensions button!

    • Event Pages (non persistent background pages): In Firefox >= 104, the event page will not be terminated if there is an active connection to a native app through the native messaging APIs (browser.runtime.connectNative and browser.runtime.sendNativeMessage) - Bug 1770696

    • New web_accessible_resources manifest field syntax: In Firefox >= 104, in the “matches” properties of the web_accessible_resources entries in the manifest_version 3 format supports the “<all_urls>” host permission string - Bug 1776841 

WebExtension APIs
  • In Firefox >=  104, restricted schemes (eg. “resources” or “chrome” schemes) are allowed in scripting.registerContentScripts API when called from a (MV2) privileged extension - Bug 1756758

  • Fixed a bug with browser.extension.getViews and preloaded browserAction popup pages - Bug 1780008 

  • Starting from Firefox 104, the history WebExtensions API will use internal PlacesUtils.history async API

    • Some extensions (e.g. DownThemAll! add-on) were calling the history API during startup and so this fix will also result in a startup performance improvement for Firefox users that have extensions using this API and blocking web requests triggered during the Firefox startup.

    • Huge shout out to Emilio for investigating and fixing this issue!

Developer Tools   

Toolbox
  • Many thanks to arai for helping us with instant evaluation issues (bug & bug). 

    • Those patches will prevent the following expression to be instantly evaluated as the user is typing

      • [1, 2, 3].map(alert)

      • Function.prototype.call.bind(Function.prototype.call)(alert);

  • We fixed a bug for log points in the Browser Toolbox where the logs would only appear if the “Show Content Messages” setting was checked (bug)

  • Julian fixed an issue with debugging addons + reloading (easily triggered when using webext to write your extension) (bug)

    • Uplifted to ESR

  • Bomsy worked on a couple things in the Netmonitor we should improve memory usage and performance

    • Network monitoring is now disabled in the Browser Toolbox until the user selects the  Netmonitor (bug)

    • We now properly clear data when the request list is cleared (bug

  • Ochameau is still making progress on Debugger source tree stability and performance (bugbugbug and bug, showing decent performance improvements to the Browser Toolbox: DAMP results)

WebDriver BiDi

ESMification status

  • [Screenshot]

    • A line graph is shown. The X axis is the date, and the Y axis is for the number of files. Two lines are shown: One for ESM files, and one for JSM files. The ESM line is growing slowly, and at the latest point is at 73 files, while the JSM line shows 1287 files.

  • ESMification is underway! We have 73 .sys.mjs files and 1287 jsm files, ~5.6%

  • Assuming you don't have anything complex, Standard8 recommends no more than an hour to do both the .jsm -> .sys.mjs conversion and to convert imports to use .sys.mjs directly using scripts.

    • Recommend pushing to the try server to check for issues as well.

    • There are example bugs that have already landed shown on areweesmifiedyet.

    • If you're working on a bug, add [esmification-timeline] to the whiteboard so that it gets added and everyone can see.

  • Known issues you might hit:

  • There’s an #esmification Matrix room for questions and coordination

  • Check out this walkthrough to see how to do one of these conversions.

    • Most of the grunt-work is automated with `./mach esmify`!

  • Resources links:

  • [mconley] Once you’ve done a few of these and gotten used to it, this is a great opportunity to file good-first-bugs and walk new contributors through the process!

    • Put [lang=js] in the whiteboard, and your Bugzilla email address in the Mentors field, and then be ready to pounce if anybody asks a question in the bug.

Lint, Docs and Workflow

Picture-in-Picture

Performance

  • hiro and florian closed out this bug which can cause the compositor to run at 60hz at all times even when nothing is animating on Windows!

  • emilio made chrome windows support document.visibilityState, which means the refresh driver is now throttled in fully occluded background windows.

Performance Tools (aka Firefox Profiler)

  • Removed the timeline graph type radio buttons (#4147)

    • [Screenshot]

      • Caption: The "before" state of the Profiler UI is shown, with a section showing the radio buttons for changing the graph type between "Categories with CPU", "Categories" and "Stack height".

    • [Screenshot]

      • Caption: The "after" state of the Profiler UI is shown. The section showing the graph type radio buttons is gone.

    • If you are a power user and would like to use another timeline graph type, you can call window.toggleTimelineType from the devtools console with various types. See the console message in profiler.firefox.com for more details.

  • Profiler no longer crashes when the profile data is too big, instead we discard only the profile of the child process that was too big, and we log error messages in the JSON file. It’s visible in profile.profileGatheringLog from the console. (Bug 1779685, Bug 1758643, Bug 1779367)

  • Added a power profiling setting to the profiler popup (Power usage data in Watt is available only on Windows 11 with Intel CPUs and Apple Silicon, but the preset can still be used elsewhere for a low overhead profiling of what’s causing thread wake-ups) (Bug 1778282) You can change the profiler setting either via profiler popup or about:profiling.

    • [Screenshot]

      • Caption: The Profiler settings UI showing a list of radio buttons. Each radio button sets the Profiler into a preset configuration. A new configuration is highlighted for profiling Power Usage.

  • Added profiler sub-category for Wasm frames (Bug 1780383)

  • Added doc for local profiling on android with screenshots. Here’s the link to the doc. (#4145)

  • Hid the user interface components showing stacks for tracks that don't have stack samples (#4133)

Search and Navigation

Below the fold

  • Drew Willcoxon, Rob Helmer, Sam Foster, Stephanie Cunnane are this month’s triagers!

  • [mconley] Pro-tip: If you have an element with a data-l10n-id, and then you set the textContent on it to override the translation, remember to remove the data-l10n-id.

  • [florian] Using EventUtils.synthesizeNativeMouseEvent can cause unexpected test failures in the next tests due to leaving the mouse in an unexpected location. Even in other test folders! (that’s being fixed) 🎊


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 I'm really just synthesizing and humanizing 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

Reply all
Reply to author
Forward
0 new messages