Firefox/Meeting/7-Apr-2020
Today’s meeting leader is: mikedeboer
Contents
- 1 General Topics / Roundtable
- 2 Friends of the Firefox team
- 3 Project Updates
- 3.1 Accessibility
- 3.2 Add-ons / Web Extensions
- 3.3 Applications
- 3.4 Firefox Accounts
- 3.5 Sync and Storage
- 3.6 Push
- 3.7 Developer Tools
- 3.8 Fission
- 3.9 Installer & Updater
- 3.10 Lint
- 3.11 New Tab Page
- 3.12 NodeJS
- 3.13 Password Manager
- 3.14 Performance
- 3.15 Performance Tools
- 3.16 Picture-in-Picture
- 3.17 Privacy/Security
- 3.18 Remote Protocol (Chrome DevTools Protocol subset)
- 3.19 Search and Navigation
- 3.20 User Journey
- 4 This week I learned
General Topics / Roundtable
- [florian] It’s now easy to add profiler markers in JS code with the new ChromeUtils.addProfilerMarker API.
let startTime = performance.now();
/* do stuff */
ChromeUtils.addProfilerMarker("markerName", startTime, "marker text");
Second and third parameters are optional.
Firefox-dev post with more details.
Friends of the Firefox team
Introductions/Shout-Outs
- [MattN] Welcome Severin Rudie to the desktop password manager team. Severin joins us from the Android team.
Resolved bugs (excluding employees)
Fixed more than one bug
- aarushivij
Artem
One of our excellent MSU Capstone students!
- Itiel
- Jayati Shrivastava
- Kriyszig
- Tim Nguyen :ntim
New contributors (🌟 = first patch)
- Will be filled out after the meeting
Project Updates
Accessibility
Add-ons / Web Extensions
WebExtensions Framework
- A new profiler marker includes information about the webRequest blocking handlers registered by extensions (Bug 1625006), Thanks to Andrew Swan for contributing this new useful information to the Firefox profiler!!!
562x178px |
Extension Suspend profiler marker (link to the image) |
WebExtension APIs
- Fixed a bug that was preventing extensions to be able to intercept (and eventually block) web requests related to subresources loaded by file:// pages (Bug 1621935)
Contributions:
theme API bug (Bug 1585290). Thanks to myeongjun.ko for contributing this fix.
Addon Manager & about:addons
- The about:addons HTML rewrite is almost completed, the about:addons categories sidebar was the last UI component still provided by about:addons XUL page (Bug 1525178 and follow-ups fixes Bug 1626378 and Bug 1559392)
- Mark also fixed an issue when about:addons is in dark mode (Bug 1626426 - [about:addons Page is white while loading in dark mode]) and a fluent-related regression (Bug 1626937 - Check for Updates in Add-ons doesn't show status messages, regressed in Bug 1617669)
Contributions:
Bug 1596858 - Different spacing above "Enabled" and "Disabled" headers when there is no enabled add-on (fixed by aarushivij, Thanks a lot to our new contributor!)
Bug 1624585 - Fix blurry extension icons (fixed by ntim, regressed by Bug 1421039)
Bug 1592324 - Always show a button to go to AMO in extension/theme list views (contributor by Jayati Shrivastava)
Applications
Firefox Accounts
Sync and Storage
Push
Developer Tools
- Console panel groups sameSite cookies warnings (bug)
- Network panel indicating lazy loaded resources (bug)
- Updating DevTools documentation (link)
- WebSocket Inspector allows hiding control frames (bug)
- DevTools Fission Refactoring
RDM Fission refactoring done (one QA reported bug WIP)
- Re-building the RDM user interface so it doesn't rely on
<iframe mozbrowser>
HTML element highlighter refactoring
- New architecture that works across processes
TargetList API
- Support for navigation between different domains/processes
- Connecting to all targets (top level document + embedded iframes) early
Resource API
- Unified format for all data fetched from debugged pages
JS Execution Context Selector
- Unified UI for implicit/explicit context switching in Console and Debugger.
Fission
Coming soonish - JSContentActors. These are to process scripts as JSWindowActors were to frame scripts
One caveat: I believe a JSContentActorChild can’t be created for the parent process
- Even more process switching logic moving out of SessionStore
- Neil fixed an issue with the master password when Fission is enabled
Installer & Updater
- No updates today, we're continuing to work on a few big projects
Lint
- Nothing to report
New Tab Page
- Nothing new on my radar, but I’ve also been out a lot the last bit.
NodeJS
Password Manager
- Password generation: New model (v2) landed with a much better conversion rate (comparable to without Fathom) while showing ~5x more often! Main focus now is on improving performance and accuracy (especially in certain locales/countries). Let us know if you see false-positives in 76+. The password manager now treats former type=password fields as password fields in order to handle sites that implement their own password reveal toggles.
- Dismissed login capture doorhanger: Fixed the 2 remaining blockers before the merge. Two follow-ups to uplift shortly.
- Old Password Management UI: Severin has a patch to remove this from Firefox now that about:logins has shipped since 70.
- Vulnerable passwords: Enabled by default in 76 after many bug fixes and UI tweaks!
- OS re-auth for about:logins: Discussing with MSFT about a Win10 usability issue that the OS password is sometimes required and Windows Hello options aren’t offered. We will watch feedback on beta to see how the feature is received overall.
Performance
- bigiri is making inroads into splitting the Snippets code from ASRouter so that it runs entirely in the child process
- dthayer has built a ProcMon report visualization tool to help us get a different view of what Firefox does during startup on Windows (example firefox startup recording)
- dthayer is looking at ways we can reuse more of the startupcache across different threads to reduce IO
- emalysz fixed a regression that would cause crashed pinned tabs to lose all of their session history
- emalysz is also working to get rid of some needless disk reads during startup
Gijs got the blocklist enabled in Talos! This makes our Talos startup tests more realistic.
This was pretty tricky due to a bug in how RemoteSettings shuts down
- Gijs is looking to move the startupcache write to a background thread
- Gijs has been consulting on the recent rewrite of nsDefaultURIFixup in JS
mconley is continuing work on the about:home startup cache
Patches up to enable the privileged about content process on all channels
Landed moz-page-thumb:// support for the privileged about content process
Posted a patch to make Pocket story images use declarative responsive image techniques, rather than using layout flushing stuff that can’t be used when generating the cache
Posted a patch to less aggressively ask the parent for the initial Redux state if the about:newtab / about:home page is not visible
Landed a patch that gets rid of an unload event handler for about:home / about:newtab when using the privileged about content process
mconley also fixed a bug where an audio-wakelock wasn’t getting created for WebAudio contexts
This meant that background tabs with WebAudio on Windows could have their process priority downgraded, resulting in degraded audio
Performance Tools
- Added a symbolication button inside the metadata popup.
349x160px
“Symbolicate profile” button inside the metadata popup
- Panel sidebar is shown by default now.
- Started to show the full backtrace of a marker in the sidebar.
- Added a context menu for the markers in the timeline.
233x127px
Right click a marker in the timeline to see the context menu
Picture-in-Picture
Fixed
Bug 1622919 - Picture-in-Picture toggle should re-evaluate visibility on video duration change
- This makes the toggle appear more reliably on streaming news sites
Bug 1624702 - Write a Picture-in-Picture toggle behaviour test for the durationchange event
Recently landed
Privacy/Security
Remote Protocol (Chrome DevTools Protocol subset)
[read-only]
- Maja added Firefox Nightly support to Google Puppeteer’s browser-fetching feature. This means that as of v3, Puppeteer users will have an equally convenient install+launch+connect flow for both Firefox and Chrome.
- We can now run Wordpress Gutenberg end-to-end tests against Firefox Nightly and we pass 52% of all the tests out of the box. To reach that status a fair amount of work has been done over the last couple of months.
- Henrik landed several fixes and enhancements for both the Runtime.evaluate and Runtime.callFunctionOn API’s.
- Henrik added basic implementations for DOM.describeNode and DOM.resolveNode.
Search:
- Continuing to work towards shipping modern search engine configuration.
- Work is starting on improving our region detection code and centralising the code that is used by various consumers of the region.
Address Bar:
Visual redesign (update 1)
Released in 75! Monitoring feedback
Minor tweaks landed for high contrast mode and dark theme
Minor fixes for tips and interventions
Make Address Bar modules more easily reusable by other projects
Work continues, nothing major to report
Address Bar results composition improvements
Busy with code refactorings and planning for a new frecency algorithm
User Journey
This week I learned
[MattN] document.userHasInteracted is a ChromeOnly API to know if the user has interacted with that document yet.
It could possibly be used as a perf. optimization to ignore acting on documents that the user didn’t interact with (if that makes sense for your component, though don’t forget to handle extension changes).
- [mconley] If you, like me, have trouble periodically running the Browser Toolbox because it shows “connection refused” errors upon launching, I _think_ I’ve found a workaround that doesn’t require an OS restart 🎉