[meta] Multi-Context Address Bar - New Tab Search Bar
Categories
(Firefox :: Address Bar, enhancement)
Tracking
()
People
(Reporter: dao, Unassigned)
References
(Blocks 1 open bug)
Details
(Keywords: meta, Whiteboard: [sng])
This effort puts Firefox's real address bar component, <moz-urlbar>, on the New Tab page in place of the handoff search bar that sits there today. The effort's codename is MCAB HNT, for Multi-Context Address Bar on Home / New Tab.
The work builds on the cross-process address bar infrastructure tracked under IPC Urlbar: make <moz-urlbar> capable of running in a privileged content process. New Tab is the first product surface to drive it end to end.
New Tab's search field is a stand-in. It takes the first keystroke and hands the user up to the toolbar, so the search finishes somewhere the user was not looking, and the page itself gets none of the address bar's capability: no results in place, no search modes, no jumping to a tab that is already open.
Embedding the real component removes that jump and collapses two implementations into one: New Tab stops maintaining a search-shaped stub, every address bar feature reaches the page as it ships, and future search work lands in one place instead of two. It is also the first product surface to run the address bar outside a browser window, which the rest of the multi-context address bar work depends on.
Scope
In scope: mounting the component on the New Tab and Home pages; reporting New Tab as its own search access point in telemetry; loading a picked result in the right tab; an end-to-end test suite that drives the search bar in the page; theming it correctly on a content page; turning it on for Nightly; the Nimbus variable that enrolls release users; and clearing release blockers.
Out of scope: the cross-process address bar infrastructure itself, tracked separately, and non-blocking defects and follow-ups tracked under the post-MVP meta bug.
Guardrails
- One switch, off wherever it is not wanted. A single feature switch gates the integration. It is on in Nightly and off in beta and release, so work in flight merges through to release without exposing anything.
- The swap is two-sided and atomic. EXPO, New Tab's external component registry, admits one search component at a time, so the new bar and the handoff bar read the same switch. One stands down exactly as the other takes over, with no restart and no moment where the page has no search bar. Switched off, the handoff bar behaves as it does today.
- The component never runs in a web page's process. It is confined to the privileged process Firefox reserves for its own pages, and the platform refuses to load its cross-process connection anywhere else.
- The cross-process path runs in CI. A dedicated test configuration drives the existing toolbar Address and Search bars across the same process boundary, so shipping code exercises the plumbing continuously. A gap that left part of the path unexercised there is closed.
- Rollout is staged and reversible. Nightly gets it first through a build-time default, and release users get it later through Nimbus, which can switch it off remotely.
- New Tab is not rewritten. The integration rides New Tab's registry, the same mechanism the handoff bar already uses. New Tab's own code changes only where the page's styling meets the New Tab search bar.
Progress at a glance
| Phase | Goal | Bug | Status |
|---|---|---|---|
| 1 | Mount the address bar component on New Tab | bug 2062209 | DONE |
| 2 | Report New Tab as its own search access point | bug 2062210 | DONE |
| 3 | Load a picked result in the right tab | bug 2062213 | DONE |
| 4 | End-to-end test suite | bug 2062211 | DONE |
| 5 | Theme it correctly on a content page | bug 2062215 | DONE |
| 6 | Turn it on for Nightly & add Nimbus variable | bug 2062212 | DONE |
| Bug fixing | Address important defects before release | mcab-hnt | DONE |
Nimbus experiment / rollout
Nightly gets the feature from a build-time default. Everywhere else it is off, and the browser.urlbar.newtab.featureGate preference is the switch. Flip it to turn the New Tab search bar on where the default leaves it off.
Release users get the feature through the boolean newtabFeatureGate variable on the urlbar Nimbus feature, which takes that preference as its fallback. The current target is a release experiment in Firefox 157.
Targeting should exclude any profile that set the preference by hand (!('browser.urlbar.newtab.featureGate'|preferenceIsUserSet)). The variable takes the preference only as a fallback and writes none of its own, so an enrollment would otherwise override the user's choice. There is no locale or region restriction.
Automated testing
The end-to-end tests live in a dedicated browser-chrome suite, and its manifest is the only one that turns the feature switch on:
./mach mochitest --headless browser/components/urlbar/tests/browser-newtab/
In CI, the uipc test variant covers the cross-process path. It runs the existing toolbar Address Bar test suite over the same message channel the New Tab search bar uses:
./mach try fuzzy --artifact \
-q "'windows11-64-25h2/opt-mochitest-browser-chrome-uipc" \
-q "'macosx1500-aarch64/opt-mochitest-browser-chrome-uipc" \
-q "'linux2404-64/opt-mochitest-browser-chrome-swr-uipc"
Pass no test paths on that push. Any try-level path or tag scoping collapses the job to a single chunk, and the variant carries its own tag. Coverage is opt-only.
Architecture
+------------------------------------------------------------------------+
| Parent process / browser window |
| |
| UrlbarParentController -- one per search access point |
| result providers, search service, Places, Glean, navigation |
+------------------------------------------------------------------------+
^
| Urlbar actor (JSWindowActor)
| query / results / pick / telemetry
v
+------------------------------------------------------------------------+
| Privileged about: process -- never a web content process |
| |
| about:newtab -- EXPO registry mounts <moz-urlbar> behind the gate, |
| superseding the handoff search bar |
| |
| input + results view, painted in the top layer (Popover API) |
| styled by chrome: stylesheets linked into the page |
+------------------------------------------------------------------------+
References
Updated•8 months ago
|
| Reporter | ||
Updated•8 months ago
|
| Reporter | ||
Updated•6 months ago
|
| Reporter | ||
Updated•3 months ago
|
| Reporter | ||
Updated•2 months ago
|
| Reporter | ||
Updated•2 months ago
|
| Reporter | ||
Updated•29 days ago
|
| Reporter | ||
Updated•23 days ago
|
| Reporter | ||
Updated•14 days ago
|
| Reporter | ||
Updated•14 days ago
|
Description
•