Firefox/Meeting/30-Jan-2018
From MozillaWiki
Today’s meeting leader is: felipe
General Topics / Roundtable
- From masayuki: Please stop using keypress event for handling non-printable keys
- [jaws] Google Summer of Code:
- Nihanth/Johann is mentoring the “Download Spam Protection for Firefox” project
- Jared is mentoring the “Multi-tab select in Firefox”
Friends of the Firefox team
(Give a shoutout/thanks to people for helping fix and test bugs. Introductions)
Resolved bugs (excluding employees): https://mzl.la/2DHraEr
More than one bug fixed:
- :prathiksha
- Alejandro Rodriguez Salamanca [:alejandro]
- Ian Moody [:Kwan] (UTC+0)
- Oriol Brufau [:Oriol]
- Tim Nguyen :ntim
- Vikas Prasad Mahato [:vikas_mahato]
- jbonnafo
New contributors (🌟 = First Patch!)
- 🌟 17039 made Sqlite.jsm’s getSchemaVersion() return an integer instead of a string
- 🌟 Nathan updated the WebPayments code to use the recommended ESLint rules for Mozilla projects
- Arjun Krishna Babu switched our Preferences tests to use BrowserTestUtils.waitForEvent instead of its own custom waitForEvent function
- 🌟 dylan.turner updated a string in our Form Autofill code
- 🌟 Vedant updated one of our graphical assets to be consistent with the new Photon tab style
- 🌟 samreadingthompsondevelopment added the trailing commas requirement ESLint rule for the Migration component
- 🌟 Ashish Daulatabad removed some ancient and unneeded Netscape 4-era code from nsOSHelperAppService.cpp!
- Swapnil P (:DarthSwap) restricted BROWSER_*_DEFAULT probes to the parent-process only
- Vinícius Costa replaced do_check_array_eq with Assert.deepEqual in the sync code
- 🌟 william.loughton removed another unneeded XBL binding (menu-vertical)! Another one bites the dust!
- 🌟 zacknoyes2 made it so that we set a “status” property on the Error raised when Sqlite.jsm’s openAsyncDatabase or asyncClone fails
- 🌟 pubkeypin made it so that Preferences would open if MOZ_DATA_REPORTING wasn’t included in the build
Project Updates
Add-ons
- The tabs API now supports a captureTab method which can be passed a tabId to capture the visible area of the specified tab.
- The pageAction and sidebarAction APIs were updated to be consistent with changes to the browserAction API which allow for nulls to be passed to unset a property.
- The browserAction, pageAction and sidebarAction APIs all now support querying whether they are currently enabled/shown/open, respectively.
- The devtools.network API now supports a getHAR method which returns a HAR log for the devtools window.
- The tabs API now supports a hide and a show method, to hide and show individual tabs. This is currently preffed off, awaiting UX changes.
- Special handling was added to support popups which will contain remote browsers.
- The tabs.saveAsPDF API was enhanced with a print progress listener and the addition of four more edge properties to the pageSettings object.
- The menus and contextMenus APIs have been enhanced to support onShown and onHidden events.
- A proxyConfig setting method has been added to the browserSettings API to allow an extension to control proxy prefs.
Activity Stream
Priorities for Fx60 (what we are currently working on):
- Prefs: migrating newtab sidebar preferences to about:preferences
- Porting existing sections checkboxes from React to XUL
- Adding new customizations: section rows, reorganize “Home” section
- Highlights: adding new data types starting with Pocketed items
- Message Center: generalizing messages and notifications
- Start with Onboarding Tour and Snippets
- Eventually for centralized notifications even for non-UI features
- Perceived Performance: developing process to produce weekly Activity Stream timing videos for analysing perf
- Drag and drop fixes landed improving the overall experience
Browser Architecture
- XUL flexbox emulation into CSS flexbox can be enabled with the layout.css.emulate-moz-box-with-flex pref. Next: get it running in automation to track performance compared with XUL flex (metabug)
- XUL overlay removal breakdown (metabug)
- There’s a new components.css UA sheet for migrating XBL <resource> sheets into (bug)
Firefox Core Engineering
- Policy engine has landed (behind a pref), as well as several policies:
- Bug 1421707 - Blocking of selected about: pages
- Bug 1428922 - Per-origin allow/block permissions for cookies, popups, flash and addons
- Bug 1429120 - Show bookmarks and menu bar by default
- Bug 1428141 - Don’t check for default browser on startup
- Several others being worked on, as well as GPO support
- Plenty of opportunities to help with our list of desired policies on MVP
- Crash pings have come to Fennec, courtesy of Gabriele Svelto
Form Autofill
- There are no dedicated engineers remaining on the project so progress is paused for now.
Lint
- Sylvestre is working on integrating codespell as a lint option.
- Initially limited to tools/lint and python/mozlint
Performance
Tab warming:
- Fixed a perma-spinner bug with tab warming
- Currently documenting the async tab switch to increase bus factor
- One last bug to fix, and then I plan on enabling tab warming by default on Nightly
- FormHistory database initialization and migration have been moved off of the main thread!
- Quantum Flow is still a thing! Have you been assigned a qf:p1? Please work on it, or hand it off to someone else who can.
- promiseLayoutFlushed may not resolve the Promise in some circumstances
Preferences
- There are no dedicated engineers remaining on the project so progress is paused for now.
Privacy/Security
- We ran a user study on how different privacy protections break (or fix) the web. Here’s the blog post.
- Luke made Firefox trim HTTP Referer headers in private browsing mode.
- The crypto team wrote a blog post about the new WebAuthn API.
- We now have more detailed telemetry on permission prompts. You can find out about the origin scheme of the triggering page, whether the prompt was triggered from a user input event and whether it came from a third-party iframe.
Address Bar & Search
- Fixed a bug where copying a search suggestion ended up pasting a url
- Work continues on the new Address Bar autofill algorithm, close to be reviewable
Places
- incremental_vacuum has been enabled for favicons.sqlite
- Removed the Move Bookmarks dialog from the Library
- Fixed a bug allowing to rename a bookmark tag to an empty string
- Removed the legacy synchronous places transactions.
- Removing synchronous transactions allowed us to start removing synchronous bookmarks APIs, the following have already been removed (more will follow): GetPageTitle, GetBookmarksForURI and GetMostRecentBookmarksForURI, GetItemType, ChangeBookmarkURI, GetBookmarkIdsForURI
- Hemant has replaced calls to isURIVisited and promiseIsURIVisited with the more appropriate PlacesUtils.history.hasVisits
More
- Contributed fixes to Sqlite.jsm:
Sync / Firefox Accounts
- New and improved bookmark merging has landed! \o/
- This is a significant under-the-hood change to how we apply synced bookmarks, and should fix long-standing issues with Sync scrambling bookmarks, smushing folders, and undoing changes.
- Special thanks to :mak, :markh, :rnewman, and :tcsc for their reviews and guidance!
- There’s an explainer doc with an overview.
- We’ll begin dogfooding within the Sync team, and send out a post to firefox-dev@ once we’re ready to have more folks try. Bug 1433177 tracks enabling it by default.
- If you’re feeling adventurous, you can back up your places.sqlite, flip the services.sync.engine.bookmarks.buffer pref, and restart Firefox.
- Edouard is almost done removing event loop spinning from Sync, which significantly cleans up the code and should make for cleaner perf profiles.
- Thom is improving bookmark deletion to avoid resurrecting deleted items. There’s a sync-dev@ thread with some discussion.
- Various performance improvements.
Test Pilot
- Tab Split and ThemesRFun experiment development is now underway.
- The Test Pilot team is learning about WebExtension API Experiments and Embedded Experiments for use implementing future Test Pilot experiments.
- Snooze Tabs is gearing up to graduate.
- MinVid is preparing to move into a Shield study.
- The Test Pilot website has new “Featured Experiment” UI which will be turned on in the next sprint.
Screenshots:
- 50 million shots! (since late 56 cycle)
- Toolbar button vs Page Action menu: yes, we’re seeing less usage, but our usage has been remarkably steady:
- 602x205px
- screenshots is becoming a module. Ianb owner, 6a68 peer.
- we've updated our dev process to land early in the cycle and avoid uplifts
- Ian is participating in the github-bugzilla discussions, more to come
Web Payments
- Improved breakdown completed. Talking with stakeholders
- Line-item list view and toggle implemented
- Improving the shipping address picker
- Connecting the shipping address picker to the PaymentResponse
- Credit card picker is coming soon.
This week I learned
- [MattN] Add the following to your ~/.mozbuild/machrc file to fix colored output of mochitests until bug 1132044 is fixed:
[test] format=mach
- NB: I have since learned that this breaks `--verify` on test commands (bug 1432683)
- [MattN] SimpleTest.registerCleanupFunction doesn’t currently work in browser-chrome tests, use the bare `registerCleanupFunction` function instead.
- [kit] `Cu.now()` exists, if you need a high-res monotonic clock to measure performance.
- [felipe] Cu.readUTF8File(..)
- Memorizes file access and reads it ahead on the next startup
- [gijs] Heads-up - Cu.import and XPCOMUtils.defineLazyModuleGetter are moving to ChromeUtils soon . This will land while updating existing callers, and with an eslint rule to prevent using the “old” method of getting modules.
- [gijs] likewise, Cu/Cr/Ci/Cc will soon exist on every global without adding heaps of boilerplate. Yay!