commit | 8f6ce029cc8174593df4395ed1a2f850a45a41ee | [log] [tgz] |
---|---|---|
author | manukh <manukh@chromium.org> | Wed Jul 31 23:50:17 2024 |
committer | Chromium LUCI CQ <chromium-scoped@luci-project-accounts.iam.gserviceaccount.com> | Wed Jul 31 23:50:17 2024 |
tree | 66f816d9cc60e07008ea96fddc57b6a2b92ad7d6 | |
parent | 5532bde68c0ef4495ea3e5add3a25dce93fd82c3 [diff] |
[omnibox][history-embeddings] Add IPH for chrome://settings/ai https://screenshot.googleplex.com/PdXgDM92PDgttgW When, 1) the user is in @history scope, and 2) the setting is disabled, and 3) the setting is available, and 4) the user hasn't dismissed the IPH, and 5) we've shown less than 3 IPHs Then this chrome://settings/ai IPH is shown. Changes: - Wires `optimization_guide::UserVisibleFeatureKey` API from the optimization component to the autocomplete provider client to check for (3) above. - Adds `ChromeOmniboxClient::OpenIphLink()` to allow opening arbitrary links from the views code. In the past, the omnibox/popup views only did navigations through updating the location bar, so this wasn't necessary. But for this IPH, and upcoming IPHs, we'll need to open arbitrary links like chrome://settings or google help articles. - Adds a `view::Link` child view to `OmniboxMatchCellView`. Now, it's composed of <contents><separator><description><iph_link>. This allows the IPH link has to be clickable and blue. - Makes the `OmniboxMatchCellView` interactable. Before, it ignored mouse events and its parent `OmniboxResultView` handled clicks & hovers. But since the IPH link has to be clickable while the rest of the match isn't, so `OmniboxMatchCellView` is now interactable. - Replaced some `IsFeaturedSearchIPHEnabled()` and `provider == TYPE_FEATURED_SEARCH` checks with `AutocmopleteMatch::IsIPHSuggestion()`, since we can have starter pack and history embedding IPH matches even if featured search IPH is disable. - Previously, the featured search provider only ran for unscoped input. Now it runs for @history scope as well, but it will early exit after potentially adding the history embedding IPH. - Previously, IPH matches were only shown on zero state, so it relied on the groupers to guarantee they were ranked last. The new history embeddings matches are shown for typed state too, so traditional grouping via `GetSortingOrder()` now ranks IPH matches last too. - Adds 2 new fields to the `AutocomleteMatch`: the IPH link text and URL. - Updates the 'show IPH match at most 3 times per browser window' limit checking so that it counts IPH's shown multiple times in a single omnibox session as 1 show count. This doesn't affect the existing IPH's since they were shown only on focus and therefore only once per session anyways. But it makes sure that typing '@history 12345' counts as 1 IPH shown even though the IPH is shown for '1', '12', ..., '12345' 5 times. - Does not change the IPH 3-shown-limit to persist beyond browser windows. When opening a new browser or restarting chrome, the IPH's can be shown an additional 3 times. This is incorrect but existing behavior. under-coverage are pass-throughs that don't have test-worth logic. Except featured_search_provider.cc which I plan to add tests for the new code in follow up CLs. 345536430 Low-Coverage-Reason: TRIVIAL_CHANGE The files reported for Bug: 345536978, 345536438, Change-Id: I82fb13dea0b6e7c18c5f3a89d2b172f1f3693d6e Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5747136 Reviewed-by: Angela Yoeurng <yoangela@chromium.org> Commit-Queue: manuk hovanesian <manukh@chromium.org> Reviewed-by: Sophie Chang <sophiechang@chromium.org> Cr-Commit-Position: refs/heads/main@{#1335781}
Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.
The project's web site is https://www.chromium.org.
To check out the source code locally, don't use git clone
! Instead, follow the instructions on how to get the code.
Documentation in the source is rooted in docs/README.md.
Learn how to Get Around the Chromium Source Code Directory Structure.
For historical reasons, there are some small top level directories. Now the guidance is that new top level directories are for product (e.g. Chrome, Android WebView, Ash). Even if these products have multiple executables, the code should be in subdirectories of the product.
If you found a bug, please file it at https://crbug.com/new.