Firefox/Meeting/24-Jan-2023
Contents
- 1 Friends of the Firefox team
- 2 Project Updates
- 2.1 Add-ons / Web Extensions
- 2.2 Developer Tools
- 2.3 Credential Management
- 2.4 ESMification status
- 2.5 Lint, Docs and Workflow
- 2.6 Migration Improvements (CalState LA Project)
- 2.7 Picture-in-Picture
- 2.8 Performance Tools (aka Firefox Profiler)
- 2.9 Search and Navigation
- 2.10 Storybook / Reusable components
- 3 This week I learned
Friends of the Firefox team
Introductions/Shout-Outs
- [mconley] Introducing Jonathan Epstein (jepstein)
Resolved bugs (excluding employees)
Volunteers that fixed more than one bug
- CanadaHonk [:CanadaHonk]
- Gregory Pappas [:gregp]
- Jonas Jenwald [:Snuffleupagus]
- kernp25
- Oriol Brufau [:Oriol]
New contributors (đ = first patch)
- đ eprendergast changed learnMore labels on non mozilla support links in Privacy settings to html:a elements
- đ Qijia Liu fixed promise constructor anti-pattern in ExtensionControlledPopup.jsm
General triage
- This monthâs Firefox / Toolkit :: General triagers are mstriemer, hjones, niklas and sclements
- Weâre looking for people to slot their names into the blank months - donât wait! Jump on in! This is a great way to learn about a wide variety of components in Firefox.
Project Updates
Add-ons / Web Extensions
WebExtension APIs
- Oriol Brufau contributed a fix to the âtabs.moveâ API method when used to move multiple tabs into a different browser window - Bug 1809364
- Gregory Pappas contributed a new âmatchDiacriticsâ option to the (Firefox-specific) find API - Bug 1680606
- All manifest_version 3 extensions that want to use the âwebRequest.filterResponseDataâ API method will have to request the new âwebRequestFilterResponseâ permission (in addition to the âwebRequestâ and âwebRequestBlockingâ permissions that were already needed to get access to this API in manifest_version 2 extensions) - Bug 1809235
declarativeNetRequest API:
Constants representing the values, used internally to enforce limits to the DNR rules that each extension is allowed to define and enable, are now exposed as declarativeNetRequest API namespace properties - Bug 1809721
Update JSONSchema and tests to explicitly cover the expected default value set for the DNR rule condition property âisUrlFilterCaseSensitiveâ, which should be false per consensus reached in the WECG (WebExtensions Community Group) - Bug 1811498
- As part of tweaks that aim to reduce the number of changes needed to port a Chromeâs manifest_version 3 extension to Firefox, In Firefox >= 110 the optional âextension_idsâ property part of the manifest_version 3 âweb_accessible_resourcesâ manifest property can be set to an empty array - Bug 1809431
WebExtensions Framework
Extensions button and panel:
Cleanups for the remaining bits of the legacy implementation (which also covered the removal of the pref) - Bug 1799009, Bug 1801540
Introduction of a new âOrigin Controlsâ string to be shown to the users in the extensions panel when an extension has access to the currently active tab but limited to the current visit (which will only be valid while the tab is not navigated) - Bug 1805523
Developer Tools
DevTools
Thanks to Tom for grouping CSP warnings in the console (bug)
- Thanks to rpl for fixing dynamic updates of the extension storage in the Storage panel (bug)
- Alex fixed a recent regression for the Browser Toolbox in parent process mode, where several panels would start breaking when doing a navigation in the Browser (bug)
- Alex also fixed several issues in the Debugger for sources created using `new Function` (eg bug)
- Nicolas fixed several bugs for the autocomplete in the Browser Toolbox / Console, which could happen when changing context in the context selector (bug and bug)
We updated our main highlighters to use a less aggressive styling when prefers-reduced-motion is enabled (bug)
WebDriver BiDi
- Thanks to :CanadaHonk for fixing bugs or adding missing features in our CDP implementation (bug, bug, bug, bug, bug)
- Henrik updated events of the browsingContext module (eg `domContentLoaded`, `load`, âŚ) to provide a timestamp, which can be useful to collect page performance data (bug)
- Sasha updated our vendored Puppeteer to version 18.0.0, which now includes a shared test expectation file, which means less maintenance for us and a better test coverage for Firefox on puppeteer side (bug and bug).
- We implemented the network.responseCompleted event (bug) and updated our example web-client for webdriver BiDi to provide a simplified version of a network monitor (https://github.com/firefox-devtools/bidi-webconsole-prototype)
Credential Management
[Text only] Issam and Micah updated about:logins with new UI improvements!
Issam made it so search input is aligned with the logins list
Micah added a new timeline component for visualizing when a login has been created, updated, and last used.
Before:
After:
ESMification status
-
browser: 46.1%
- Dropped a little bit because we removed a large number of sys.mjs files we didn't need any more.
toolkit: 38.3%
- Bilal has been working on migrating various actors.
Total: 46.54% (up from 46.0%)
- #esmification on Matrix
- Migration Document (with a walkthrough!)
Lint, Docs and Workflow
- Mossop has posted a topic on mozilla.governance about a new module for JavaScript usage, tools and style
The no-cu-reportError rule now handles promise callbacks and a few other cases.
The ESLint rule no-shadow has been enabled for .mjs files.
The intent is to soon enable the builtInGlobals option, and then later roll it out to .sys.mjs files as well.
- ./mach doc should no longer lose the document tree when a change is made to a doc.
Migration Improvements (CalState LA Project)
- After a solid winter break, the CalState LA students are starting up again this week!
- mconley closed out some infrastructure bugs on the new migration wizard in preparation for the students taking over primary development
- Thanks to mak for fixing an annoying frequent intermittent orange!
Picture-in-Picture
Niklas fixed various wrappers:
Prime Video when seeking forward or backward
Netflix when seeking forward or backward
- Niklas increased the seek bar slider clickable area, making it easier to select the scrubber with the mouse
Janvi and Niklas updated tooltip behaviour so that tooltips no longer disappear after selecting a button on the PiP window
- Bilal updated PiP extension manifest to use `browser_specific_settings` for manifest V3
Kpatenio resolved issues where PiP touch events changed playback while toggling PiP:
- Kpatenio updated Dailymotion wrapper, so captions should appear again on PiP window
- Molly made a change where PiP video duration is hidden when visible duration is NaN or infinite
Performance Tools (aka Firefox Profiler)
- Add context menu option for opening source view. Thanks to our contributor Krishna Ravishankar!
New context menu item for showing the source code
- Support zip files on windows. Thanks to our contributor Krishna Ravishankar!
- Scroll item horizontally in the virtuallist, taking into account the fixed size.
- Remove the "optimizations" field from the frame table. This should reduce our profile data size.
- Allow pinning source code view files to specific git tags.
- Enable screenshots on talos profiling jobs on treeherder.
- Remove some Timestamp::Now calls when the profiler is not running.
- Fix Firefox version inside the profile data.
Mandy and Drew making progress on weather suggestions (from accuweather via merino):
- Daisuke has refactored urlbar engagement telemetry tests
- James has enabled persisting search terms in the address bar in early beta, looking for more user feedback
- mak: Bug 1750317 - location bar search intermittently fails to reach search engine input
- gregp: Bug 1779400 - Omnibox API: onInputChanged runs in private windows but suggestions do not appear
- Nanj: Bug 1771380 - Firefox Suggest should not recommend "Vietnam War" when user searches for "Vietnam"
standard8:
Dao working on address bar result menu:
Bug 1790024 - Add urlbar result menu for top pick and sponsored Firefox Suggest items
Bug 1809705 - Implement "Learn more about Firefox Suggest" menu item in the urlbar result menu
Bug 1801298 - Fix down/up arrow behavior with multiple selectable elements per row
Bug 1801297 - Better align urlbar result menu button styling with the UX spec
Bug 1810647 - Prepare for enabling the urlbar result menu in Nightly
Storybook / Reusable components
- Public storybook updated as of this morning with new about:logins timeline component
- Bug 1799699 - Storybook Docs tab now lists component attributes from JSDoc
Bug 1798335 - The moz-toggle is now used on about:addons
- Bug 1809457 - Our common stylesheet no longer conflicts with Storybook styles
- Bug 1801927 - The âLearn moreâ links in the about:preferences#general tab have been updated to use `moz-support-link`
- Bug 1803155 (Heading to autoland) - ./mach storybook install is going away in favor of automatically installing dependencies when ./mach storybook is run
This week I learned
[gijs] OK, Iâm cheating, this should probably have been in the general section but I thought of it too late - BrowserTestUtils.loadURI is being renamed to BrowserTestUtils.loadURIString. I renamed all ~1000 in-tree consumers by using jscodeshift, so you donât need to do anything about that - but donât add new callsites because they wonât work! (and also because openNewForegroundTab and/or withNewTab are better APIs).
But why!?
[gijs] We have a bunch of things called loadURI that take strings instead of URI object references. This means we convert between strings and URIs a lot, which has both CPU and memory costs (also because we actually try to deal with arbitrary string input, not just actual URIs!). Weâre trying to fix some of that in bug 1810141. The test-only change made it easier to find all the JS callsites of âproductionâ code that is (also) called loadURI, and is more precise.
[mconley] Tip: keep your mochitest / xpcshell test manifests in alphabetical order, because thatâs actually the order they run in. Hereâs my attempt to add a linting rule to encourage this.
[mstriemer] Also mach addtest is a thing and you should use it! (and then you can mostly forget about the gnarly .ini files)