Firefox/Meeting/16-Jan-2018
From MozillaWiki
Today’s meeting leader is: RyanVM
Contents
- 1 General Topics / Roundtable
- 2 Friends of the Firefox team
- 3 Project Updates
- 4 This week I learned
General Topics / Roundtable
- Student project ideas:
- Nightly 59 code freeze in effect. Please avoid landing large new patches until the Gecko version number on trunk is bumped to 60 next week.
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/2D8ML8q
- More than one bug fixed:
- :prathiksha
- Aditya Bharti [:adbugger]
- Jeremy Lempereur
- Steve Pfister
- Tim Nguyen :ntim
- New contributors (🌟 = First Patch!)
- 86ecce74 got rid of some XBL bindings we don’t need anymore. XBL graphs continue to trend in the right direction!
- Archit Jugran got rid of some superfluous CSS from the Synced Tabs sidebar search input.
- Ashish Verma [:ashish1500616] got rid of some superfluous CSS from the translation info bar.
- 🌟 Ashwin Patil modified BHR to check Telemetry::CanRecordPrereleaseData() rather than the toolkit.telemetry.enabled preference.
- 🌟 Rohan Rajpal added an assertion to prevent Telemetry’s registerEvent from being used in the content process.
- 🌟 Steve Pfister fixed a bug where the SafeBrowsing warning notification bar wouldn’t go away after a page navigation, and made sure that the tab title was properly set in about:url-classifier.
- More than one bug fixed:
Project Updates
Add-ons
- PageActions can now be shown and/or hidden automatically for specific pages via pattern matching.
- The webRequest API now merges multiple headers with the same name rather than using only the last one.
- We landed some detailed documentation about how to implement WebExtensions APIs.
- We now redirect the current tab to the restored New Tab after disabling a New Tab extension in the doorhanger.
- Added a couple of mechanisms to the webRequest API to allow for requests to be upgraded from HTTP to HTTPS.
- The cookies API now supports FPI mode and FPI cookies.
- Several protocols were added to the whitelist of allowed protocols for custom protocol handlers.
- browserAction set* methods can now accept a null value which removes the property.
- More detail has been added to sandbox names to aid in debugging.
- A memory reporter was added to show basic information about active WebExtensions.
- Two major changes landed for WebExtension experiments:
- Experiments can now be bundled with an extension.
- Experiments can now include content-side APIs.
- Exceptions raised from a webRequest blocking listener now report the original error message and filename.
- about:preferences has been updated to show when an extension is managing Tracking Protection.
- Extensions can now control cookie behaviour, specifically the prefs for network.cookie.cookieBehavior and network.cookie.lifetimePolicy.
Activity Stream
- Drag and Drop landing for Top Sites in 59.
- Tippy Top icons V2 with SVG icons for Top Sites.
Browser Architecture
- XUL Template feature has been removed (thanks Gijs).
- Metabug filed for removing XUL overlays.
- XBL replacement has continued to make good progress. Expect a newsletter update soon.
- Bindings removed since last meeting:
tabbrowser-close-tab-button, toolbarbutton-image, datetimepicker-base, timepicker, datepicker, datepicker-grid, datepicker-popup, timed-textbox, addengine-icon, expander, preferences, preference, prefwindow, prefpane, panebutton, dialogheader, optionsDialog, stringbundleset
- Thanks to Dão, Ian Moody, ntim, Paolo, 86ecce74, and Myk!
- Bindings removed since last meeting:
Firefox Core Engineering
- Crash machinery:
- The last piece of crash ping support (bringing the crash ping to Fennec) will be done within the month. Follow along here.
- Note: if you are sad about the loss of signatures from crash-stats purge, know that we do have crash info and stacks back through 55 which could be symbolicated and signaturized for analysis/trend if desired. (Not as deep as crash-stats, but… there)
- Migration performance improvements:
- Doug Thayer has landed several performance improvements to migration in 59 (as he did in 58). Too many to list, so check them out.
- Update Agent:
- Will allow for checking for and downloading of updates async from Firefox.
- Was originally slated for incremental release, but has been changed to release as a complete feature, targeted for 62.
- Tracking meta bug is 1343669.
- Installer:
- Rename of Windows shortcut (first attempted for 57) from “Mozilla Firefox” to just “Firefox” landed in beta 58 (bringing Windows in line with Mac and Linux).
- Enterprise Policies Engine:
- Targeted for Firefox 60 (for the next ESR).
- Win/Mac/Linux support through .json, + Windows Group Policies
- Main bug: 1419102.
- Ownership of policies: each policy is owned by the team who owns that feature.
- Bug tree for policies to be implemented for first version: https://bugzilla.mozilla.org/showdependencytree.cgi?id=policies-mvp&maxdepth=1&hide_resolved=1.
- Spreadsheet with policies and ownership: https://docs.google.com/spreadsheets/d/1vDrJ7lAbbJDa31MopQ7NBGBaRPwuDzeEzeP905JuC_E/edit#gid=0.
Form Autofill
- V2 features were complete and got Pre-Beta sign off (yellow).
- The edit dialog of Address Autofill in Preferences now is able to change the layout according to the selected country.
- Implemented a summary in the update doorhanger to let users know which profile will be updated.
- Slightly refactored the core modules for better supporting sections.
- Fixed some issues of Clear Form button caused by the cache mechanism in the autocomplete module.
- Fixed a few RTL issues
- Fixed a lot of website compatible issues
Lint
- Lint’s dependencies (python & node) should now be installed when running
./mach bootstrap
(on Mac/Linux, Windows has them already installed for mozilla-build). - Next up:
- Probably starting Thursday, mozlint will be executed and results displayed at review phase. Mozreview to start with, phabricator later.
- Future:
- Add installation of hooks during
./mach bootstrap
. - Combining devtools’ ESLint configuration to be mainly based off of the main mozilla-central config.
- Add installation of hooks during
Performance
- Tab warming fixes landed on Nightly! Still not enabled by default on nightly pending more fixes, follow this bug to keep track of that.
- mconley wrote a blog post if you’re curious about what tab warming is.
- There’s a known bug where in some cases, with warming enabled, opening a new tab results in a permanent spinner.
- Thanks to Dão for the patch that warms tabs when using the Ctrl-Tab previews feature.
- Patch to warm up the next tab when hovering close icon is waiting for review.
- Patches to move FormHistory initialization off of the main thread are reviewed, and waiting until after the merge to land.
- Looking at replacing Cu.import with a WebIDL-implemented alternative.
- This will likely land on a weekend, have an eslint rule, and rewrite existing callsites.
- Over on the platform side, bholley is reducing libxul size significantly by avoiding the use of Debug symbols for release-compiled Rust (e.g. those implicated by use of “{:?}” in format strings for panic! calls). If you write Rust, please read the relevant dev.platform posts.
Preferences
- myk has stripped out most (if not all) of the XBL bindings from about:preferences!
Platform Audibles
- Heads up: xidorn has made it possible to detect / condition on bool prefs inside chrome stylesheets!
- Example:
@supports -moz-bool-pref("this.is.some.bool.pref") { /* CSS */ }
- [MattN] Note that the pref value is static, not live.
- [Gijs] My understanding is that we’d probably want to use a pref cache anyway (for performance), which would partially solve this (other part would be pref changes triggering style “dirty” marking so it gets re-checked in the next style flush).
- Example:
-
<script type="module">
has been enabled in Nightly builds.- [Gijs] Quick question: do we know if we should hold off on using this in chrome code?
- [mconley] Yes, I think we should hold off until this rides the trains. And maybe until this ships to release.
- [Gijs] Quick question: do we know if we should hold off on using this in chrome code?
Privacy/Security
- Prathiksha added the ability to deny permission prompts by default in about:preferences (with great reception).
- This is the meta bug for our new project that deals with some UX and privacy issues around storage/site data/cookies (we’re also doing a user study).
- :cfu improved integrating the canvas permission (against canvas fingerprinting in anti-fingerprinting mode) into our permission system.
- We’re going to force [SecureContext] onto new platform features.
Address Bar & Search
- Users with a unified Address Bar will now receive Search Suggestions first, the behavior is easily changeable through a checkbox in the Search Preferences pane.
- window.external.addSearchEngine has been removed.
- Fixed a bug causing search engines set by add-ons updated to WebExtension with the Quantum update to be wrongly reset.
- Fixed a bug where the one-off buttons in the urlbar were not properly hidden or were keyboard selectable when hidden.
Places
- Doug Thayer landed a patch replacing the single onVisit notification with a new grouped onVisits notification, that helps batch insertion of visits avoiding too many crossings of the XPConnect boundary.
- Some progress on reliability:
- Places will try to clone a corrupt database into valid one on startup, allowing in most cases to keep history intact. In case of failure it fallbacks to the old method (new database with restored bookmarks).
- Fixed a UI bug allowing to create empty-named bookmark tags.
- Some progress on bookmarks full syncability:
- Places’ tree selectItem() now takes guids as well as database ids.
- PlacesUtils.isRootItem() also will take guids as well as database ids.
Sync / Firefox Accounts
- Thom is investigating ways to move Sync state out of preferences into a different store. Suggestions welcome!
Test Pilot
- No updates this week.
Web Payments
- Landed our multiline rich-select custom element that will be used for the address selector as well as the basic-card selector.
- Initial bug breakdown completed. Another pass will be done upon a pending UX spec update.
- In the process of hooking up the selectors to the form autofill data.
- In the process of displaying the line items.
This week I learned
- [Standard8] Mach can give you bugzilla component info:
$ ./mach file-info bugzilla-component browser/config/version.txt Core :: Build Config browser/config/version.txt
- [jaws] The :scope pseudo class allows you to reference the element that is being queried from element.querySelector*, for example:
<box id="foo"> <box class="bar"></box> // ← A <box class="baz"> <box class="bar"></box> // ← B </box> </box> ```js let foo = document.getElementById("foo"); let bar = foo.querySelectorAll(":scope > .bar"); // selects A above but not B ```