Firefox/Meeting/3-Dec-2019
Today’s meeting leader is: RyanVM
Contents
- 1 General Topics / Roundtable
- 2 Friends of the Firefox team
- 3 Project Updates
- 3.1 Accessibility (read only)
- 3.2 Add-ons / Web Extensions
- 3.3 Applications
- 3.4 Firefox Accounts
- 3.5 Sync and Storage
- 3.6 Push
- 3.7 Browser Architecture (read only)
- 3.8 Developer Tools
- 3.9 Remote Debugging (Chromium Protocol)
- 3.10 Fission
- 3.11 Lint
- 3.12 New Tab Page
- 3.13 NodeJS
- 3.14 Password Manager
- 3.15 Performance
- 3.16 Performance Tools
- 3.17 Picture-in-Picture
- 3.18 Privacy/Security
- 3.19 Search and Navigation
- 3.20 User Journey
- 4 This week I learned
General Topics / Roundtable
- [RyanVM] Firefox 71 shipped today
- [Axel] DTDs are deprecated
Friends of the Firefox team
Introductions/Shout-Outs
Resolved bugs (excluding employees)
Fixed more than one bug
- Bryan Kok [:transfusion]
- Itiel
- Jacob Stenson
- jaril
- Ruturaj Vartak
- Tim Nguyen :ntim
New contributors (🌟 = first patch)
- abowler2 fixed a bug where the Network Monitor loading indicator would sometimes be hidden
- Alex J Garcia made it so that the Debugger variable preview text is not selectable
- 🌟 Duncan Dean fixed a bug where a search in the Network Monitor would run indefinitely if a page reload occurred before the search completed
- 🌟 Hayden Huang made it so that the WebSocket Messages panel for the Network Monitor shows the downloaded and uploaded amount, as well as the total transferred amount.
- 🌟 Krish De Souza made it so that Firefox Snap packages respect the SNAP Theme-ing API
- 🌟 Kyle Kim fixed a typo in some of the code for the about:neterror page
- 🌟 Raymond Liu made it so that the context menu for links in the Web Console allow you to open them in new tabs
- 🌟 Taylor Southorn removed some dead code from the Firefox installer for Windows
- Tyler, one of our MSU Capstone students, ported the UITour code so that it works with Fission enabled
Jacob Stenson:
Removed the unnecessarily returned frameId property from the Page.loadEventFired event
- Jean fixed an alignment issue for the “whitespace” indicator in the Inspector tool
- 🌟 Tony Wang fixed an issue where sometimes the grid-gap rule would be erroneously marked as inactive in the Inspector
Project Updates
Accessibility (read only)
Many accessibility bugs were squashed
Mzehe fixed make HTML5 <mark> accessible
Mstriemer fixed Accessibility problems on the Recommendations page
Jteh fixed Reader View available screen reader announcement is too verbose which turned off the announcement (for now)
Jteh fixed An html:input or html:textarea which is pointed to by a xul:label's control attribute does not receive the label text as accessible name which broke the Bookmarks Manager’s accessibility
Add-ons / Web Extensions
Adapting WebExtensions Framework to Fission:
Tomislav landed the first part of the changes needed to port the WebExtensions internals to Fission-compatible IPC (Bug 1577498)
Let us know if you notice any regression that may be related to this (in particular errors related to the new internals introduced by this change, e.g. ConduitsParent.jsm / ConduitsChild.jsm). If you file a bug related to this, link it to Bug 1577498 as a blocker
HTML about:addons:
Itiel fixed an RTL-related issue on the card’s theme preview (Bug 1599511)
Jacob Stenson removed some code related to XUL about:addons from tests (Bug 1594082)
Mark Striemer worked on improvements and fixes related to the HTML about:addons views (Bug 1594196, Bug 1594417, Bug 1594014, Bug 1591501, Bug 1593358, Bug 1598901, Bug 1593649). In Bug 1570792, Bug 1575905 the UI control to enable/disable themes and extension has been moved from the “more options” popup menu to the card:
514x552px |
Enabling / disabling themes (Bug 1575905) and extensions (Bug 1570792)
Link to screenshot: https://bug1570792.bmoattachments.org/attachment.cgi?id=9111881 |
APIs and features for builtin and/or line extensions:
Built in extensions (like screenshot) can load localized strings for some of their manifest properties (e.g. name and description) from Fluent files (Bug 1457865), Thanks to Andrew Swan for working on this!
Drew Willcoxon added new browser.telemetry API methods to allow privileged extensions to record keyed scalars (Bug 1596661)
Andrea worked on moving a number of features implemented in secure-proxy using an embedded experimental APIs into in-tree WebExtensions APIs (Bug 1593651, Bug 1593635)
APIs and fixes related to browser settings:
Shane investigated and fixed some settings-related issues (Bug 1599205, Bug 1578513, Bug 1599708, Bug 1548700) and it has introduced browserSetting.onChange API event (Bug 1410412)
Myeongjun Go contributed a fix to the chrome_settings_overrides API schema to allow an extension to specify a custom icon packaged with the extension as part of the extension manifest.json file (Bug 1571110)
Extension Storages and browsingData APIs
Rob fixed a regression that prevented content scripts from being able to access storage.managed data (Bug 1575162)
A regression related to the browsingData API when LSNG is enabled has been fixed in Firefox 72 (Bug 1575891, Bug 1596542)
Bianca enabled the DevTools storage panel to change the data stored by an extension using the storage.local API (Bug 1573201)
Matthew contributed a fix to the browsingData API to prevent extensions for mistakenly disconnecting sync when clearing website credentials (Bug 1595656)
Theme API:
James Jahns ported LightweightThemeChild to JSWindowActors (Bug 1595143)
Dao fixed a theme bug which was making the megabar results to be rendered on a transparent background (Bug 1586054 and Bug 1590759 as a follow up)
Integrated Abuse Report and mozAddonManager.reportAbuse API:
Luca applied some follow up fixes and then enabled by default the abuse report API exposed to AMO as part of the mozAddonManager API (Bug 1596137, Bug 1596133, Bug 1595091, 1597265, Bug 1598062)
Andreas Wagner contributed a small cleanup of the strings used by the integrated abuse report panel (Bug 1593386)
Other / General:
Haik added a disclaim option to Subprocess which leverages the undocumented posix_spawn attribute to prevent Native messaging applications (started by Firefox for the WebExtensions) from inheriting Firefox entitlement on MacOS Catalina (Bug 1576733)
Mélanie Chauvel contributed a fix for tabs.duplicate called on pinned tabs (Bug 1563380)
Mossop landed one more fix for an AsyncShutdownTimeout which was being investigated for awhile (Bug 1513855), the last fix landed on both 72 and 71 and a sensible drops on crashes with this signature has been noticed
Perry fixed a bug in webRequest StreamFilter which was corrupting data received from a service worker running in the parent intercept mode (Bug 1587960)
Tom Schuster (:evilpie) made sure that .mjs file are recognized as javascript modules, which makes extensions able to use them as ES6 modules (Bug 1589895)
Applications
Firefox Accounts
- No updates this week.
Sync and Storage
- No updates this week.
Push
- No updates this week.
Browser Architecture (read only)
Developer Tools
DevTools & Fission
M1: Omniscient Browser Toolbox (OBT)
- First step towards DevTools Fission compatibility
Development is currently happening behind a pref
We are planning to enable OBT in Nightly
Testing in progress, help welcome!
- Create a new profile
- Flip devtools.browsertoolbox.fission
- Open: Tools > Web Developer > Browser Toolbox
- The title should say: 💥 Omniscient Browser Toolbox 💥
- What's New in DevTools Panel in Firefox 71 (bug 1594885)
- Network Panel: Search across all HTTP Requests (bug), Manual Resource Blocking (bug) and WebSocket Inspector (bug) features enabled on all channels and riding the trains.
- Console Panel: New Open URL in New Tab context menu entry on links in the console output (bug 1214556) - by Raymond
- console.table() can be used with Typed arrays (bug 1595594)
- console.table(new Int8Array([1, 2, 3, 4]))
- Inspector Panel: You can now do much more with nodes located under a shadow-root now (bug 1598944 and bug 1600084). Contributed by :emilio
Remote Debugging (Chromium Protocol)
Introduction: The Web Predictability team (#interop) is implementing a subset of CDP in Firefox; we’ve had a working prototype for some time, and our next milestone is to provide initial cross-browser support in Google's Puppeteer (a popular Node.js library for headless browser automation).
- We started shipping the CDP-based remote debugging server on the Firefox Nightly release channel (see --remote-debugger flag)
- Maja added Firefox support to Puppeteer’s launcher API; users will be able to run Puppeteer with Firefox in addition to Chrome as of the next Puppeteer release.
- Andreas added a new section for Remote Debugging in about:support to expose the status if Firefox is under remote control and a visual cue in the Firefox UI when the browser is remotely controlled
We’re steadily implementing more CDP methods on track toward our MVP
Andreas made it possible to use Page.reload ignoring the browser’s cache
Thomas Kosmas removed the unnecessarily returned timeout property from various page navigation events
Henrik added support for Target.activateTarget, which switches to the specified target (tab) in any of the open browser windows. That also fixed a bug in Page.bringToFront, which caused the command to not wait for the window’s “activate” and “focus” events.
Henrik made it possible for Page.captureScreenshot to save the captured screenshots in different formats and quality
Andreas added support for Security.setIgnoreCertificateErrors to allow bypassing security exceptions when loading documents with invalid or otherwise bad TLS certificates
Henrik added support for Emulation.setUserAgentOverride which allows clients to replace the user agent with a custom value.
Fission
- 55 tests remain disabled in fission
You can test Fission by setting fission.autostart to true in about:config
This will also expose new menu items for opening “New Fission Windows” and “New Non-Fission Windows”.
- fission-dogfooding bug
- Browser tests should start to use SpecialPowers.spawn() instead of ContentTask.spawn(). The latter only supports top-level pages, whereas the SpecialPowers version can use the browsing context from any descendant frame. Note the slight difference in the way arguments are passed. Existing tests are being converted.
- Work on M5 began. This milestone focuses on getting the minimum functionality needed to allow developers to use a fission-enabled browser for their use. Other work has been pushed to M6 (fission enabled in nightly builds) or later.
- Heads up - willDestroy on JSWindowActor’s aren’t called in all situations… we’re working this out with the DOM team.
Work completed in the last few weeks:
Network and certificate error pages (Neil)
Modified click handler (Neil)
Lightweight Themes (James Jahns)
Blocked sites (James Jahns)
UI Tour (staatsty)
Page thumbnails (Carson Greene)
Work ongoing:
Auto form fillin (Neil)
WebRTC (Neil)
Autoscroll (asurkov)
Popup blocking UI (Alex Vamvounis)
Lint
- No updates this week.
New Tab Page
- Discovery Stream shipping in Germany in 72, this has 1x3 pocket stories, same as the old new tab page, so it shouldn’t look different to the user, just changing how it’s being rendered. Once we have enough content for German stories we can turn on 7x3. Responsive design work incoming.
NodeJS
- NodeJS draft policies available for comment before they land in m-c. Currently focussed on vendoring and build usage.
- NodeJS usage, tools & style module created after mozilla.governance discussion
- Would like to upgrade m-c NodeJS from 8.11.* to 10.* soon. Interested parties encouraged to add themselves to the bug and/or join #nodejs in Slack.
Password Manager
Fixed
In Progress
Performance
- Doug updated the tabswitch test to be relevant for Fission and is now working on the tresize test.
- Doug experimented with removing the early dll readaheads, and this seems to have a positive impact on Windows 10 on time to blank window shown, for all but the 95th percentile, which shows a sharp increase.
- Doug landed a patch to record hangs preceding forced shutdown (which were previously unable to be sent due to, e.g. a user forcibly terminating the browser during a hang.)
- Emma worked on a patch that makes Telemetry gather CPU info off main thread.
- Emma also has a patch in progress to make launching sandboxed content processes cheaper
- Gijs started working on reducing the startup cost of our external helper app / protocol handling service.
- Gijs fixed some pref usage in plugins (where I also fixed some unnecessary IPC) and dom.ipc code.
- Gijs pushed RemoteSettings blocklist through the finish line, and it is shipping to beta in 72!
- We now have Talos runs on mozilla-central with profiling! Look for T-prof jobs.
Did you know you can cause Talos to run with profiling without re-pushing?
Creates a -p job - example, “o-p” to run “Talos other”, with profiling
- OKR planning is underway - we’re likely going to be looking at both startup and shutdown in 2020 Q1
- mconley is doing a deep-dive into about:home’s code to ultimately produce a set of recommendations on how to optimize it for first paint and responsiveness
Performance Tools
- There is a new retained memory view for native allocations. It shows you the allocated but not deallocated memory. Example profile
- Markers are now grouped by their categories in Marker Chart. Also all markers are in a sorted order now(previously they were randomly listed)415x358px
- It’s now possible to see which JS frame belongs to which web page.
- Profiler recording panel now has dark theme support. Thanks to Michael, our long term contributor, for implementing this feature!
Picture-in-Picture
- 602x253px
- Picture-in-Picture is now enabled by default for Windows users on the release channel in Firefox 71!
- We’ve enabled Picture-in-Picture on macOS and Linux for Firefox 72, hopefully riding out to release in that version.
Fixed:
The Picture-in-Picture player was too small and incorrectly positioned on Mac OS retina display
Twitch fixed the issue where clicking “play” in the Picture-in-Picture player window on a paused video wouldn’t work
Fixed a crash where tabs would crash if a Picture-in-Picture player window was opened for a video that was changing sources
Gave the player window a minimum size on Linux GTK builds
Privacy/Security
- No updates this week.
Search:
Notable changes:
The search bar popup width is now properly limited, it could grow unconstrained
Search engines don’t corrupt anymore when the distribution directory is not readable
Pressing AltGr-Enter in the search bar opens a page in a new tab
One-off buttons open the right engine with empty searches
Search configuration modernization (Firefox 73)
Work continues to make it ready for a larger testing audience
Address Bar:
Notable changes:
Replaced drag&drop indicators, when dragging urls or bookmarks on the tabs or the bookmarks toolbars, with a more modern and visible version
Both the urlbar and search bar show the name of the search engine when a one-off button is selected, for those cases where the same engine is installed in multiple languages
Visual redesign (Firefox 73)
Plan to re-enable the new design asap (handling a few test failures)
Badged favicons coalesce tab/star indicators with the favicon
Urls wrapping to a second line when the urlbar is too small
More visible highlight of matching parts
Retained results on tab switch
Lots of polish (alignments, padding, animations, …)
Search Interventions experiment (Firefox 72)
Experimental add-on is being worked on.
Search Tips experiment (Firefox 72)
Almost ready to go.
User Journey
- What’s New content for 72: promoting PiP, preview in QA docs; not live yet
- New Onboarding cards experience: content is no longer fixed, it dynamically adjusts to user profile: bug, PRD doc
WIP for a CFR - ML solution (targets 73) meant to optimize how often we show recommendations to users
This week I learned
- [mconley] Pernosco is awesome and works with Try pushes!