Commit Graph

189 Commits

Author SHA1 Message Date
Drew Willcoxon
b01dbca0d1 Bug 1828955 - Implement "Feedback" result menu button for weather suggestions. r=dao,bolsson
This makes the following changes to the result menu button for weather results:

* Add a "Feedback" label
* Make it always visible

We may want to use this feedback button for other types of results, so I added a
generalized way for results to opt into it, `result.showFeedbackMenu`.

See [Figma](https://www.figma.com/file/Hdi0oHB7trRcncyVAKZypO/accuweather-explorations?node-id=2421%3A62540&t=YUIAppzynd5ZmIew-1)

Differential Revision: https://phabricator.services.mozilla.com/D175922
2023-04-25 16:33:37 +00:00
Wil Stuckey
51509a8495 Bug 1819766 - Add support for exposure based experiments. r=adw
This change adds support for exposure based experiments by allowing
a Nimbus variable/pref to specify the urlbar provider that should
trigger an exposure event as well as a secondary boolean variable/pref
that controls the visibility of the exposed result. The exposure should
be registered when a result 'can be added' but may or may not be shown
based on the value of the `displayExposureProvider` variable.

* Add exposure event to metrics.yaml
* Add new Nimbus variable (`exposureProvider`) to specify the urlbar
  providers that should trigger exposure events .
* Add new Nimbus variable (`displayExposureProvider`) that controls the visibility
  of the provider results that matched the `exposureProvider` variable.

Differential Revision: https://phabricator.services.mozilla.com/D174209
2023-04-24 20:04:21 +00:00
Drew Willcoxon
ee150ed3ed Bug 1828960 - Don't remove the "open" attribute on the result menu button when a submenu closes. r=dao
Differential Revision: https://phabricator.services.mozilla.com/D175928
2023-04-20 18:32:21 +00:00
Drew Willcoxon
a449466edd Bug 1827943 - Implement the weather suggestion result menu UI. r=dao,fluent-reviewers,flod
This implements the weather suggestion result menu UI and builds on D174941.
References:

* [Spec]( https://www.figma.com/file/Hdi0oHB7trRcncyVAKZypO/accuweather-explorations?node-id=2421%3A62540&t=29w6wH3UYchqBxqX-1) (See "A11y review" in the sidebar)
* [Clickable prototype](https://www.figma.com/proto/Hdi0oHB7trRcncyVAKZypO/accuweather-explorations?page-id=2192%3A42825&node-id=2394-52468&viewport=246%2C526%2C0.12&scaling=min-zoom&starting-point-node-id=2394%3A52468&show-proto-sidebar=1) (See "Revised 4/3" in the sidebar)

There are a couple important points about the menu. First, one of the commands,
"Report inaccurate location", is specific to weather suggestions, or at least
location-based suggestions. I don't think it's a good idea to centralize all
commands in UrlbarView, and in general I'd like to stop centralizing handling of
different result types in the view and input, so I added a new provider method
called `getResultCommands()`.

Second, the spec calls for a menu separator and a submenu so the user can select
a reason they don't want to see the result, so the return value of
`getResultCommands()` is flexible enough to support those two things, and I
modified `#populateResultMenu()` too.

These new commands will be recorded in Glean engagement telemetry as new
`engagement_type` values, same as "dismiss" and "help" currently are.

This patch doesn't implement handling of two of the commands, "Report inaccurate
location" and "Show less frequently", because I wanted to keep it focused on the
fundamentals described above.

Depends on D174941

Differential Revision: https://phabricator.services.mozilla.com/D174994
2023-04-18 16:22:56 +00:00
Drew Willcoxon
c26ec9b3d6 Bug 1827762 - Replace UrlbarProvider.pickResult() and blockResult() with onEngagement() r=mak
This removes `UrlbarProvider.pickResult()` and `blockResult()` in favor of
handling picks and dismissals through `onEngagement()`. A number of providers
use those two methods, so this revision touches a lot of files.

Handling dismissals through `onEngagement()` means `UrlbarInput.pickResult()`
can no longer tell whether a result is successfully dismissed, so it can't
remove the result anymore. (Maybe `onEngagement()` could return some value
indicating it dismissed the result, but I don't want to go down that road.)
Instead, I split `UrlbarController.handleDeleteEntry()` into two methods: a
public one that removes the result and notifies listeners, and a private one
that handles dismissing the selected result internally in
UrlbarController. Providers that have dismissable results should now implement
`onEngagement()` and call `controller.removeResult()`.

I made some other improvements to engagement handling. There's still room for
more but this patch is big enough already.

Other notable changes:

Include the engaged result in engagement notifications so providers have easy
access to it and can respond to clicks and dismissals more easily. That also
lets us stop passing `selIndex` and `provider` to `engagementEvent.record()`
since now it can compute those from the passed-in result.

Add the concept of `isSessionOngoing` to engagement notifications so providers
can tell whether an engagement ended the search session. Right now, providers
like quick suggest that record a bunch of provider-specific legacy telemetry
assume that `onEngagement()` ends the session, but that's no longer true.

Unify result buttons and result menu commands by setting
`element.dataset.command` on buttons (hopefully we can remove buttons soon, at
least the ones that aren't tip buttons)

Make sure we always notify providers on engagement even on dismissals or
when skipping legacy telemetry

Move dismissal of restyled search suggestions and history results from
`UrlbarController.handleDeleteEntry()` to the Places provider

Move dismissal of form history results from
`UrlbarController.handleDeleteEntry()` to the search suggestions provider

In the Places provider, remove the unused `_addSearchEngineMatch()` method. Also
remove the code in the "searchengine" case that creates a non-search-history
result. This code is unreached because the only time the provider creates a
"searchengine" match it also sets `isSearchHistory` to true.

In `UrlbarTestUtils.promiseAutocompleteResultPopup()`, change the default value
of the `fireInputEvent` param from false to true. This is necessary because
without a starting input event, the start event info in `engagementEvent` will
be null, so when `engagementEvent.record()` is called at the end of the
engagement, it will bail, and providers will not be notified of the engagement.
IMO true is a better default value anyway because input events will typically be
fired when the user performs a search.

Differential Revision: https://phabricator.services.mozilla.com/D174941
2023-04-13 06:03:33 +00:00
James Teow
40ad3f14c3 Bug 1826884 - Don't show cached Top Picks if persisted search terms are present - r=adw
Differential Revision: https://phabricator.services.mozilla.com/D174929
2023-04-11 13:01:27 +00:00
Drew Willcoxon
9a44c7d51f Bug 1815686 - Clear the urlbar view before opening it after the window width changes. r=mak
This bug hits [this path](https://searchfox.org/mozilla-central/rev/3ba3d0a57b6419206f82f80cd6c30faf59397664/browser/components/urlbar/UrlbarView.sys.mjs#549-550) in `#autoOpen`, where it re-uses the current rows as
they exist. Overflow and underflow events aren't fired in that case, so the
`overflow` attribute isn't updated. The bug does not happen when the `else`
branch is hit because `onQueryResults()` clears the rows when the view isn't
open, and after that the rows are rebuilt.

This patch makes us hit the `else` path in this case by storing the width of the
input when the view is closed. If the stored width is different from the current
width, then the overflow state may be incorrect. Taking the `else` branch makes
us go through `onQueryResults()` and clear the rows before opening the view.

This fixes this bug and bug 1759857.

Differential Revision: https://phabricator.services.mozilla.com/D173596
2023-03-28 17:36:13 +00:00
Dão Gottwald
8b7b30f0a4 Bug 1790020 - Hook up urlbar result menu with telementry. r=mak
Differential Revision: https://phabricator.services.mozilla.com/D168688
2023-03-09 12:02:13 +00:00
Cristina Horotan
1255ede78b Backed out changeset fcc4aae881d7 (bug 1790020) for causing bc failures at browser_ext_urlbar.js CLOSED TREE 2023-03-09 13:11:26 +02:00
Dão Gottwald
4d726892e1 Bug 1790020 - Hook up urlbar result menu with telementry. r=mak
Differential Revision: https://phabricator.services.mozilla.com/D168688
2023-03-09 09:54:20 +00:00
Dale Harvey
e83e85de76 Bug 1819775 - Add icon for trending suggestions. r=adw
Differential Revision: https://phabricator.services.mozilla.com/D171404
2023-03-08 21:00:27 +00:00
Stanca Serban
0edec904ef Backed out changeset e7822e311e0c (bug 1790020) for causing mochitests failures in browser/components/urlbar/tests/browser-tips/browser_searchTips_interaction.js. CLOSED TREE 2023-03-08 17:40:26 +02:00
Dão Gottwald
42c66fc8dd Bug 1790020 - Hook up urlbar result menu with telementry. r=mak
Differential Revision: https://phabricator.services.mozilla.com/D168688
2023-03-08 14:22:31 +00:00
Dão Gottwald
27be2ac3d8 Bug 1816496 - Explicitly close result menu when closing the view. r=mak
Differential Revision: https://phabricator.services.mozilla.com/D171562
2023-03-03 17:20:20 +00:00
Dão Gottwald
081303df7d Bug 1818245 - Consolidate dynamic attribute setting code in UrlbarView. r=adw
Differential Revision: https://phabricator.services.mozilla.com/D170612
2023-02-24 07:16:56 +00:00
Dão Gottwald
1d64874fd4 Bug 1818455 - Fix selecting the result menu button by mouse with browser.urlbar.resultMenu.keyboardAccessible=false. r=mak
Differential Revision: https://phabricator.services.mozilla.com/D170736
2023-02-23 16:27:40 +00:00
Dão Gottwald
572c566454 Bug 1813517 - Add hidden pref for allowing Tab to skip over the menu button. r=mak
Differential Revision: https://phabricator.services.mozilla.com/D170267
2023-02-22 11:16:44 +00:00
Dão Gottwald
2b6f8f9442 Bug 1816496 - Listen to popuphiding event instead of seemingly unreliable popuphidden. r=NeilDeakin
Differential Revision: https://phabricator.services.mozilla.com/D169707
2023-02-17 16:50:38 +00:00
Dão Gottwald
0c23643ea2 Bug 1790022 - Add "Learn more" item to the urlbar result menu for history items. r=fluent-reviewers,flod,jteow
Differential Revision: https://phabricator.services.mozilla.com/D168816
2023-02-07 10:16:26 +00:00
Drew Willcoxon
5f9e3b5752 Bug 1814795 - Support keyword-based weather suggestions in addition to zero-prefix. r=daisuke
This adds a new pref, `browser.urlbar.weather.zeroPrefix`. When true, weather
suggestions are shown on "zero prefix" like they are now, which means they're
shown when the user focuses the urlbar and before they type anything. When the
pref is false, the weather provider will show suggestions only if the search
string matches a keyword in a set of keywords managed by `QuickSuggest.weather`.

My plan is to store the keywords in the quick suggest config object in remote
settings. Nan suggested this too. Currently the config does not contain any
keywords, but this patch can be tested by setting the pref to false, running the
following in the browser console, and then typing "weather" in the urlbar:

```lang=js
ChromeUtils.importESModule("resource:///modules/QuickSuggest.sys.mjs")
  .QuickSuggest.remoteSettings._test_setConfig({
    weather_keywords: ["weather"],
  });
```

Other changes:

* It's possible for a keyword to match both the weather suggestion and a quick
  suggest suggestion. Only the weather suggestion should be shown. This patch
  modifies to the muxer for that.
* This modifies `UrlbarView.#rowLabel()` to show the "Top pick" (a.k.a. best
  match) label for keyword-based weather suggestions, in addition to zero-prefix
  suggestions like we currently do.
* This modifies the remote settings client so it becomes enabled when keyword-
  based weather suggestions are enabled, so that the config can be accessed.

Depends on D168738

Differential Revision: https://phabricator.services.mozilla.com/D168757
2023-02-07 02:26:55 +00:00
Drew Willcoxon
9f4378e671 Bug 1814732 - Move weather suggestions to their own provider. r=daisuke
This moves weather suggestions from the quick suggest provider to their own
provider. This will make it easier to implement weather suggestions that are
triggered by keyword instead of being shown on zero-prefix.

It does the following:

* Copies UrlbarProviderQuickSuggest.sys.mjs to UrlbarProviderWeather.sys.mjs
* Removes everything weather-related from UrlbarProviderQuickSuggest.sys.mjs
* Removes everything not weather-related from UrlbarProviderWeather.sys.mjs
* Makes some simplifications to the new provider since it doesn't need to
  support quick suggest suggestions
* Removes `result.payload.isWeather` since now we can use `result.providerName`
* This does *not* change any telemetry

Differential Revision: https://phabricator.services.mozilla.com/D168738
2023-02-07 02:26:54 +00:00
Dão Gottwald
64875a0d74 Bug 1814828 - Handle clicks on result row border. r=adw
Differential Revision: https://phabricator.services.mozilla.com/D168794
2023-02-06 14:01:22 +00:00
Sandor Molnar
815e3f95d3 Backed out changeset 477317c7af48 (bug 1814828) for causing bc failuires browser/components/urlbar/tests/browser/browser_click_row_border.js CLOSED TREE 2023-02-03 19:59:24 +02:00
Dão Gottwald
c0cec5ef72 Bug 1814828 - Handle clicks on result row border. r=adw
Differential Revision: https://phabricator.services.mozilla.com/D168794
2023-02-03 17:04:14 +00:00
Dão Gottwald
a7c5be04f9 Bug 1814689 - Consolidate code handling UrlbarView overflowable elements. r=adw
Differential Revision: https://phabricator.services.mozilla.com/D168699
2023-02-03 10:25:39 +00:00
Dão Gottwald
f5ad5f7d00 Bug 1814656 - Fix typo. r=adw
Differential Revision: https://phabricator.services.mozilla.com/D168701
2023-02-03 03:15:38 +00:00
Dão Gottwald
fa7b554ee2 Bug 1801389 - SPACE should open the result menu when the button is selected. r=mak,Jamie
Differential Revision: https://phabricator.services.mozilla.com/D168522
2023-02-03 03:11:20 +00:00
mcheang
f26d2a59ce Bug 1811556 - Fix text fading in weather suggestion result and hide middot when high and low temperatures are wrapped. r=adw
Differential Revision: https://phabricator.services.mozilla.com/D167416
2023-02-01 13:52:57 +00:00
Dão Gottwald
d7994183f4 Bug 1811507 - Fix highlighting of dynamic type rows. r=adw
Differential Revision: https://phabricator.services.mozilla.com/D167795
2023-01-27 19:21:10 +00:00
James Teow
b90a51d87e Bug 1812261 - Prevent search tip from flashing when re-opening urlbar - r=adw
Differential Revision: https://phabricator.services.mozilla.com/D167895
2023-01-27 02:05:33 +00:00
Dão Gottwald
b7b01928c9 Bug 1812677 - Disable result menu for autofill results. r=adw
The result menu is currently available (but broken) for autofill results due to bug 1810113. Until that's done or the menu gets fixed (bug 1790028), we should disable the menu for these results.

Differential Revision: https://phabricator.services.mozilla.com/D167980
2023-01-26 20:16:33 +00:00
Daisuke Akatsuka
5e04583fb5 Bug 1791657: Show page title if it is in places. r=adw,mak
Depends on D159243

Differential Revision: https://phabricator.services.mozilla.com/D157891
2023-01-24 22:35:15 +00:00
Daisuke Akatsuka
d46b22b675 Bug 1791657: Introduce fallbackTitle into payload. r=adw
Differential Revision: https://phabricator.services.mozilla.com/D159243
2023-01-24 22:35:14 +00:00
Drew Willcoxon
c81b3fa8ae Bug 1811373 - Cache weather suggestion l10n strings and allow L10nCache to cache strings only by ID. r=dao
This caches weather suggestion l10n strings by adding `cacheable: true` to the
view update object returned by the provider. Doing so hooks into UrlbarView's
dynamic result type functionality [here](https://searchfox.org/mozilla-central/rev/738b761bb2847f609f9cacc550680071cdc53637/browser/components/urlbar/UrlbarView.sys.mjs#1737-1739).

w/r/t l10n strings and caching, weather suggestions are a bit of a new case
because most of these strings take arguments that can't be known in advance and
that will change over time. For a string with arguments, L10nCache creates a
cache key by concating the string's ID and the values of its arguments. That
makes sense for strings whose values are things like search engine names, where
the set of possible argument values is small and where we may need to show
different translated strings when for example the search engine changes. For
those strings, we want to cache the translated strings separately using
different keys.

Weather suggestion strings like "20°C" are a different story. The ideal UX for
these strings is: While the UI is waiting for the string to be re-localized with
new argument values, it should show the previous localized string with the old
argument values. If the argument values have changed, there will still be some
flicker as the old values are replaced with the new ones, but it's the best we
can do, and at least there won't be empty space in the UI.

This isn't possible with L10nCache right now due to how it creates cache keys,
as mentioned earlier. So I added a new option that tells it to cache strings by
ID only, excluding argument values. That way only one translated string is
cached regardless of whatever argument values it was cached with.

Differential Revision: https://phabricator.services.mozilla.com/D167318
2023-01-23 17:49:55 +00:00
Dão Gottwald
b480cfa156 Bug 1810647 - Prepare for enable urlbar result menu in Nightly. r=mak,fluent-reviewers,flod
Differential Revision: https://phabricator.services.mozilla.com/D167004
2023-01-23 15:54:53 +00:00
Mark Banner
2bd093b567 Bug 1811334 - Automatically replace Cu.reportError with console.error (most of browser/components). r=settings-reviewers,mconley
Differential Revision: https://phabricator.services.mozilla.com/D167297
2023-01-20 17:49:21 +00:00
Dão Gottwald
0af8b03623 Bug 1801297 - Better align urlbar result menu button styling with the UX spec. r=jteow
Differential Revision: https://phabricator.services.mozilla.com/D167072
2023-01-19 19:10:05 +00:00
Cosmin Sabou
c38d6f9f2c Backed out changeset 4b53f5a10a76 (bug 1801297) for causing bc failures on browser_ext_themes_autocomplete_popup.js. 2023-01-19 19:11:23 +02:00
Dão Gottwald
0ee326d0b2 Bug 1801297 - Better align urlbar result menu button styling with the UX spec. r=jteow
Differential Revision: https://phabricator.services.mozilla.com/D167072
2023-01-19 15:20:28 +00:00
Dão Gottwald
95d9a858cf Bug 1801298 - Fix down/up arrow behavior with multiple selectable elements per row. r=adw
Differential Revision: https://phabricator.services.mozilla.com/D166803
2023-01-19 10:26:53 +00:00
Sandor Molnar
6373ae2505 Backed out changeset 357170b2f52a (bug 1801298) for causing bc failures in browser/components/urlbar/tests/browser-tips/browser_selection.js CLOSED TREE 2023-01-19 12:00:27 +02:00
Dão Gottwald
367bd12003 Bug 1801298 - Fix down/up arrow behavior with multiple selectable elements per row. r=adw
Differential Revision: https://phabricator.services.mozilla.com/D166803
2023-01-19 08:25:15 +00:00
Dão Gottwald
e7a8bffbe0 Bug 1809705 - Implement "Learn more about Firefox Suggest" menu item in the urlbar result menu. r=adw,fluent-reviewers,flod
Differential Revision: https://phabricator.services.mozilla.com/D166578
2023-01-13 16:03:06 +00:00
Cristian Tuns
e148ca6903 Backed out changeset 03202cdedb1e (bug 1809705) for causing bc failures CLOSED TREE 2023-01-13 10:18:41 -05:00
Dão Gottwald
047b8c03dc Bug 1809705 - Implement "Learn more about Firefox Suggest" menu item in the urlbar result menu. r=adw,fluent-reviewers,flod
Differential Revision: https://phabricator.services.mozilla.com/D166578
2023-01-13 10:50:16 +00:00
mcheang
cd7ed9d357 Bug 1808974 - Client UI for weather suggestions. r=adw,flod
This patch implements the following:

It gets a weather result by calling `_makeWeatherResult` which calls our backend
Merino server. Based on the data returned by Merino, it parses through the
results to display the city, url, provider, weather summary, current, high, and
low temperatues to the user. It checks for a 0-prefix result to display the
weather. Lastly, it includes a top pick label for weather.

Differential Revision: https://phabricator.services.mozilla.com/D166216
2023-01-11 23:07:45 +00:00
Dão Gottwald
3ae3091bb9 Bug 1790024 - Add urlbar result menu for top pick and sponsored Firefox Suggest items. r=adw,fluent-reviewers
Differential Revision: https://phabricator.services.mozilla.com/D166184
2023-01-11 12:23:26 +00:00
Drew Willcoxon
9cb9133500 Bug 1806765 - Implement zero-prefix telemetry and add weather suggestion exposure telemetry. r=dao
This adds telemetry to UrlbarView that records the following things related to
the zero-prefix view (i.e., the topsites view):

* Exposures: How many times the ZP view was shown
* Engagements: How many times a result was picked in the ZP view
* Abandonments: How many times the user abandoned the ZP view
* Dwell time: How long the user was shown the ZP view

I considered adding telemetry specifically for topsites instead of the ZP view
as a whole, but since we have plans to start showing other types of results in
the ZP view, I don't think it's a good idea to rely on one specific type of
result as a proxy for the view itself. What DS and Product want to know about is
the view itself: how many times it was shown, for how long, etc.

This also adds one related scalar related to weather suggestions that counts the
number of times it's shown. This is the same scalar I added in D164778 using a
different, more complex approach.

Depends on D164615

Differential Revision: https://phabricator.services.mozilla.com/D165253
2023-01-06 23:44:19 +00:00
Dão Gottwald
0d540405bb Bug 1806491 - Add urlbar result menu for history suggestions. r=mak,fluent-reviewers,flod
Differential Revision: https://phabricator.services.mozilla.com/D165061
2022-12-23 15:54:08 +00:00
Drew Willcoxon
a355f8ed5b Bug 1804353 - Don't select buttons on mousedown in the urlbar view. r=dao
This stops selecting buttons on mousedown so that selection and the input remain
in a sensible state after clicking the block button while top sites are showing
(e.g., in the weather suggestion).

This turned out to be surprisingly complicated, so please see the bug and code
comments for details. I think our selection logic is pretty brittle or at least
convoluted and could stand to be simplified, but I didn't want to make large
changes here. Ideally we wouldn't treat buttons any differently on mousedown --
so we'd select them too -- and it may be possible to do that while avoiding the
problems I talk about in the bug, but I don't think it's at all worth the
complexity that seems to be required.

I added a new task to the test Daisuke created in D155812.

Differential Revision: https://phabricator.services.mozilla.com/D164018
2022-12-16 02:58:15 +00:00