- 1 General Topics / Roundtable
- 2 Project Updates
- 2.1 Add-ons / Web Extensions
- 2.2 Applications
- 2.3 Browser Architecture
- 2.4 Developer Tools
- 2.5 Fission
- 2.6 Lint
- 2.7 New Tab Page
- 2.8 Password Manager
- 2.9 Performance
- 2.10 Performance tools
- 2.11 Picture-in-Picture
- 2.12 Policy Engine
- 2.13 Privacy/Security
- 2.14 Search and Navigation
- 2.15 User Journey
- 3 This week I learned
General Topics / Roundtable
[mconley] ContentDOMReference vs CPOWs
Did this get covered last meeting?
- [read-only] Nightly 69 soft freeze is now!
Friends of the Firefox team
Resolved bugs (excluding employees) Fixed more than one bug
- Bryan Kok [:transfusion]
- Chujun Lu
- Florens Verschelde :fvsch
- Heng Yeow (:tanhengyeow)
- Karan Sapolia
- Masatoshi Kimura [:emk]
- Michael Krasnov
- Tim Nguyen :ntim
New contributors (🌟 = first patch)
- 🌟 Armando Ferreira cleaned up some of our DevTools folders
- Miriam made it so that we use proper plural forms in the Debugger, and improved the contrast of the selected text in the Debugger when hitting a breakpoint or inspecting collections!
- 🌟 Bren Louis Surio helped us get rid of an obsolete Telemetry probe
- 🌟 Bryan Kok [:transfusion] made it so that the nascent “editor mode” for the DevTools Web Console causes commands to execute when pressing Ctrl/Cmd-Enter, and also made sure that we show the line number gutter in that mode.
- 🌟 Christoph Walcher made it so that we show download progress on macOS in the Finder!
- Chujun Lu made it so that conditional breakpoints in the DevTools debugger don’t automatically break on exceptions, made it that Logpoint errors actually get logged as errors instead of strings, and avoided a collision with one of our keyboard shortcuts in the debugger (Goto line is now Ctrl-G)
- 🌟 danielvictoriadbugzilla added some handy inline documentation to some of our Telemetry code
- 🌟 danner.simon made it so that the “Clear Downloads” button can be tabbed to in the Downloads Library viewer on non-macOS platforms
- 🌟 Dickson Tan fixed a focus glitch in the DevTools Web Console when using the NVDA screenreader tool
- 🌟 Francis Houle improved some of the built-in documentation for about:debugging
- Gautham Velchuru fixed a visibility problem in the Tracker Blocking panel when using High Contrast mode
- Herpiko Dwi Aguno fixed an issue where focus wouldn’t be given to the DevTools sometimes
- 🌟 hgallagher inserted some MPL2 license headers where they were missing in our Telemetry code
- 🌟 janelledement made it possible to save scripts from the Debugger source list context menu (that’s a 6 year old bug!), and fixed a glitch where the find highlighter in the Debugger would break-up token highlighting in strange ways
- joseph.a.jalbert fixed some interoperability problems with our WebExtension manifest.json parser
- 🌟 kelly.bell made it so that the Web Console filter buttons appear inline if the window is wide enough
- 🌟 Martin Matous added support for byExtensionId and byExtensionName to the Downloads WebExtension API
- Michael Krasnov modernized some of our tests to use a shared TestUtils.waitForCondition function, and similarly updated some of our WebExtension tests to use more modern testing idioms
- mihir17166 made it so that it’s possible to both copy and move a bookmark in the Bookmark Library after a search (that’s a 10 year old bug!)
- Myeongjun Go made it so that running an alert() inside of a WebExtension background script will no longer hang that add-on
- 🌟 premk fixed a misspelling in a preference, cleaned up some of our Search tests, added Firefox Sync information to about:support, and made it so that the Sponsored Stories preference is properly sync’d between devices
- 🌟 saijatin28 fixed a spacing issue in our DevTools UI when using an RTL build
- Thomas added more distinctive colours to our DevTools Layout Inspector tools, and added flexbox container and item information to the Inspector Picker
- Mohd Umar Alam [:umaralam48] cleaned up some of our browser CSS by referring to :root rather than the ID of the root node
- 🌟 J got rid of some dead CSS in our DevTools Inspector code
- 🌟 Ali Abdoli cleaned up some of our panel UI CSS by referring to :root rather than the ID of the root node
- 🌟 Yifei He fixed some padding in the new about:addons page
Add-ons / Web Extensions
Sync and Storage
- Console responsive toolbar redesign Screenshot link
- Warning Groups - part of our “unclutter the Console panel” effort (compare the amount of content in the following screenshots) Screenshot link
- Export Console content to file (available through Console panel context menu) Screenshot link
- Displaying extension name in the Sources panel (bug) Screenshot link
- Original Rust variables are shown (thanks to Yury Delendik work on compiling dwarf metadata in sourcemaps and our existing map scopes functionality) Screenshot link
- Event Breakpoints enabled on Nightly. Event BPs allow to break on specific event type (e.g. mouse click). Screenshot link
- The node infobar (displayed at the top of the highlighted area) will now display whether the highlighted element is a flex or grid container or item (bug). Screenshot link
- Bug 1464440 - [meta] subgrid support in grid inspector Screenshot link
- Blocked resources are displayed in the Network panel (rendered in red and using new status label) (platform bug, DevTools meta) Screenshot link
- DevTools documentation for 68 updated.
Been pretty heads-down over the past few weeks, but now we’ve crossed M3! Nika was able to demo Fission at the All-Hands, which was the goal.
For the brave, you can test it yourself by creating a boolean preference fission.autostart and setting it to true
Recent things that have been ported to be Fission-compatible:
- When Fission is enabled, PIDs for processes within a tab are now listed in the tab tooltip
Similarly, you can get a subframe PID by opening the This Frame submenu on the iframe (it’s at the bottom)
Heads up - nsIPrincipal’s are not automatically serialized between JS Window Actors. Filed this bug to get that fixed.
In the meantime, best to use E10SUtils.(de)serializePrincipal
Upcoming work for this quarter:
Add some in-tree documentation for JS Window Actors and guides on how to port
Port the following things:
- Command updating
- Audio and Video controls
- Find Bar
- Network error pages (stretch)
- WebNavigation (stretch)
- Prettier is landing soon
- The HTML plugin for ESLint is now enabled in the configuration by default. Sublime users may need to change settings.
ESLint is now enabled to some level for almost all of mozilla-central
There's just three dom/ directories left (all WIP).
For the directories we recently enabled ESLint, we enabled it but disabled the rules that were failing.
We'll have more mentored bugs to enable those rules once prettier has landed.
- ESLint 6 is likely to land soon after prettier. There's better support for configurations which will help with auto-fixing across the entire tree, as well as a few new rules.
New Tab Page
- Consolidated multiple Bugzilla components to just “New Tab Page”
- Switched to 7 rows of Pocket articles and turning on by default for US in 69
- Restored Highlights under Pocket section for new layout
Migrated new tab page content to fluent!
Also migrating Home preferences and (old/control) about:welcome
- AVG blocked our access to logins.json. We released an add-on, heartbeat message, and a SUMO article to help users recover from the data loss. Thanks to everyone who helped with this effort.
- `origin` and `formActionOrigin` properties are now appropriately named in nsILoginInfo. Their old names are still supported for backwards compatibility.
- eTLD+1 matches for the same subdomain should appear before other subdomains
Provide a way to show password generation UI outside of `autocomplete="new-password"` fields
Add a checkbox in prefs to enable/disable password generation
- Still need `signon.generation.available` set to true first
New Management UI (about:logins)
Finishing up work to enable on Nightly channel
- FIXED: Improved the performance of getting all logins at once by adding a new `Services.logins.getAllLoginsAsync()` method that decrypts all logins in one batch.
- IN REVIEW: Working on fixing accessibility issues and keyboard navigation
- IN PROGRESS: Addressing feedback from the UX team
IN REVIEW: Using the new `document.l10n.connectRoot` functionality to support shadow roots. This will allow custom elements to use the host page’s localization resources.
- Open questions here on precise timing. We’ll keep you posted on when to use this.
Breach notifications are being worked on now by Luke Crouch and Lesley Norton
- Mandy removed a bunch of needless main-thread IO that we do on start-up when trying to access the profile directory by caching the nsIFile the first time we access it, and skipping needless Exists checks
Gijs made it so that we collect HDD / SSD information via nsISystemInfo off of the main thread, which helps reduce the impact during start-up
This gives us a nice platform with which to make nsISystemInfo much cheaper during start-up!
- Gijs noticed we weren’t doing PGO recording with e10s enabled, and not gathering information from the content processes. This has been fixed.
- Mandy has a patch up to reduce how much IO the crash reporter code does during start-up
- dthayer has a bunch of patches up for review to move omni.ja to lz4 compression which should be better both for disk and CPU
- Do you need to run some code before the first content process is created? There’s a new observer notification for that: ipc:first-content-process-created. This is much preferable to running any earlier, which might block first paint
- mconley working with plawless, Bas and dpalmiero to get frame recording tests infrastructure set up in a lab somewhere
- Implemented the new publishing flow.
New publishing flow, instead of opening a new tab
- Added a context menu to the network panel.
321x141px New context menu in network panel
- Firefox Profiler now accepts gzipped profiles from Firefox. That will allow us to send larger profile data from addon (it was a problem because of the IPC data limit)
- Sub category information in the sidebar
New sub category information in the sidebar
- More markers have backtraces in the tooltip now.
283x292px New NotifyObservers tooltip that has a backtrace
- We’re all set to ride out (and hold) to Firefox 69 Beta and Developer Edition to get user feedback. Expect a Hacks blog post near the release!
- Fixed a bug where the toggle would periodically display for a split second while the video metadata was still being gathered, even if PiP was disabled
- Also fixed an issue where the indicator icon in the originating tab for a PiP video would make the tab too wide if pinned
- Fixed an issue where the toggle would appear on audio-only media
- The player window now defaults its initial position to the left bottom of the screen in RTL builds
(Mike, how many things are you working on?! ⚙️🎉🦊)
[mconley] I bought a Time Turner. Super useful.
- No updates
- Refined the new search engines configuration model, see the new in-tree documentation, implementation ongoing
- Further improved search engines configuration reliability
- Work is ongoing on allowing a different search engine in private browsing mode
- On track to be released with Firefox 68, fixed a few regressions in these weeks
- Working on many experiments: at least 2 of them targeted to 69, 3 targeted at 70, more incoming
- Started working on a partial address bar UI refresh for Firefox 70 (internally known as the Mega Bar)
- Started working on legacy address bar code removal
- Old bookmark annotation data and a few related APIs have been removed in Firefox 69 (1 year after the version that removed descriptions with a release note)
- Created new “Messaging System” bugzilla component currently covering What’s New panel, Contextual Feature Recommendations, Onboarding / First Run, Snippets
- Adding Feature Callouts to toolbar and menu items as well as What’s New to highlight Firefox features and updates
- Turned on Trailhead “Join Firefox” about:welcome messaging with “Privacy” cards for all locales in 68+
This week I learned
[mconley] Finalization Witnesses!
This is a handy way of hearing about when things get GC’d, which is handy if you’ve got a WeakMap or WeakSet that needs to do some extra cleanup after the weak reference goes away. This goes over the nsIObserverService though without batching, so mind you don’t use it for many many things that might get GC’d to avoid spamming.
ContentDOMReference uses this to clear out leftover nsIWeakReference’s once the thing they’re pointing at goes away.
- [Mardak] Slightly embarrassing: windows “opt” artifact builds are now automatically “shippable,” so when using perfherder, make sure to compare the correct reference “shippable” numbers not the “opt” numbers (which the UI will use for comparisons)