123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390 |
- // Copyright 2019 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #include "components/omnibox/common/omnibox_features.h"
- #include "build/build_config.h"
- namespace omnibox {
- constexpr auto enabled_by_default_desktop_only =
- #if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS)
- base::FEATURE_DISABLED_BY_DEFAULT;
- #else
- base::FEATURE_ENABLED_BY_DEFAULT;
- #endif
- constexpr auto enabled_by_default_android_only =
- #if BUILDFLAG(IS_ANDROID)
- base::FEATURE_ENABLED_BY_DEFAULT;
- #else
- base::FEATURE_DISABLED_BY_DEFAULT;
- #endif
- constexpr auto enabled_by_default_desktop_android =
- #if BUILDFLAG(IS_IOS)
- base::FEATURE_DISABLED_BY_DEFAULT;
- #else
- base::FEATURE_ENABLED_BY_DEFAULT;
- #endif
- // Comment out this macro since it is currently not being used in this file.
- // const auto enabled_by_default_android_ios =
- // #if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS)
- // base::FEATURE_ENABLED_BY_DEFAULT;
- // #else
- // base::FEATURE_DISABLED_BY_DEFAULT;
- // #endif
- // Feature used to enable various experiments on keyword mode, UI and
- // suggestions.
- const base::Feature kExperimentalKeywordMode{"OmniboxExperimentalKeywordMode",
- base::FEATURE_DISABLED_BY_DEFAULT};
- // Feature to enable showing thumbnail in front of the Omnibox clipboard image
- // search suggestion.
- const base::Feature kImageSearchSuggestionThumbnail{
- "ImageSearchSuggestionThumbnail", enabled_by_default_android_only};
- // Feature used to allow users to remove suggestions from clipboard.
- const base::Feature kOmniboxRemoveSuggestionsFromClipboard{
- "OmniboxRemoveSuggestionsFromClipboard", enabled_by_default_android_only};
- // Auxiliary search for Android. See http://crbug/1310100 for more details.
- const base::Feature kAndroidAuxiliarySearch{"AndroidAuxiliarySearch",
- base::FEATURE_DISABLED_BY_DEFAULT};
- // Enables various tweaks to `AutocompleteController` autocompletion twiddling
- // that may improve autocompletion stability. Feature params control which
- // tweaks specifically are enabled. Enabling this feature without params is a
- // no-op.
- const base::Feature kAutocompleteStability{"OmniboxAutocompleteStability",
- base::FEATURE_DISABLED_BY_DEFAULT};
- // Demotes the relevance scores when comparing suggestions based on the
- // suggestion's |AutocompleteMatchType| and the user's |PageClassification|.
- // This feature's main job is to contain the DemoteByType parameter.
- const base::Feature kOmniboxDemoteByType{"OmniboxDemoteByType",
- base::FEATURE_DISABLED_BY_DEFAULT};
- // Feature used to cap max zero suggestions shown according to the param
- // OmniboxMaxZeroSuggestMatches. If omitted,
- // OmniboxUIExperimentMaxAutocompleteMatches will be used instead. If present,
- // OmniboxMaxZeroSuggestMatches will override
- // OmniboxUIExperimentMaxAutocompleteMatches when |from_omnibox_focus| is true.
- const base::Feature kMaxZeroSuggestMatches{"OmniboxMaxZeroSuggestMatches",
- base::FEATURE_DISABLED_BY_DEFAULT};
- // Feature used to cap max suggestions shown according to the params
- // UIMaxAutocompleteMatches and UIMaxAutocompleteMatchesByProvider.
- const base::Feature kUIExperimentMaxAutocompleteMatches{
- "OmniboxUIExperimentMaxAutocompleteMatches",
- base::FEATURE_DISABLED_BY_DEFAULT};
- // Feature used to cap the number of URL-type matches shown within the
- // Omnibox. If enabled, the number of URL-type matches is limited (unless
- // there are no more non-URL matches available.) If enabled, there is a
- // companion parameter - OmniboxMaxURLMatches - which specifies the maximum
- // desired number of URL-type matches.
- const base::Feature kOmniboxMaxURLMatches{"OmniboxMaxURLMatches",
- enabled_by_default_desktop_android};
- // Feature used to cap max suggestions to a dynamic limit based on how many URLs
- // would be shown. E.g., show up to 10 suggestions if doing so would display no
- // URLs; else show up to 8 suggestions if doing so would include 1 or more URLs.
- const base::Feature kDynamicMaxAutocomplete{"OmniboxDynamicMaxAutocomplete",
- enabled_by_default_desktop_android};
- // Used to adjust the relevance for the local history zero-prefix suggestions.
- // If enabled, the relevance is determined by this feature's companion
- // parameter, OmniboxFieldTrial::kLocalHistoryZeroSuggestRelevanceScore.
- const base::Feature kAdjustLocalHistoryZeroSuggestRelevanceScore{
- "AdjustLocalHistoryZeroSuggestRelevanceScore",
- base::FEATURE_DISABLED_BY_DEFAULT};
- // Enables on-clobber (i.e., when the user clears the whole omnibox text)
- // zero-prefix suggestions on the Open Web, that are contextual to the current
- // URL. Will only work if user is signed-in and syncing, or is otherwise
- // eligible to send the current page URL to the suggest server.
- const base::Feature kClobberTriggersContextualWebZeroSuggest{
- "OmniboxClobberTriggersContextualWebZeroSuggest",
- enabled_by_default_desktop_only};
- // Enables on-clobber (i.e., when the user clears the whole omnibox text)
- // zero-prefix suggestions on the SRP.
- const base::Feature kClobberTriggersSRPZeroSuggest{
- "OmniboxClobberTriggersSRPZeroSuggest", enabled_by_default_desktop_only};
- // Enables on-focus zero-prefix suggestions on the Open Web, that are contextual
- // to the current URL. Will only work if user is signed-in and syncing, or is
- // otherwise eligible to send the current page URL to the suggest server.
- const base::Feature kFocusTriggersContextualWebZeroSuggest{
- "OmniboxFocusTriggersContextualWebZeroSuggest",
- enabled_by_default_android_only};
- // Enables on-focus zero-prefix suggestions on the SRP.
- const base::Feature kFocusTriggersSRPZeroSuggest{
- "OmniboxFocusTriggersSRPZeroSuggest", enabled_by_default_android_only};
- // Revamps how local search history is extracted and processed for generating
- // zero-prefix and prefix suggestions.
- extern const base::Feature kLocalHistorySuggestRevamp{
- "LocalHistorySuggestRevamp", base::FEATURE_DISABLED_BY_DEFAULT};
- // Enables local history zero-prefix suggestions in every context in which the
- // remote zero-prefix suggestions are enabled.
- const base::Feature kLocalHistoryZeroSuggestBeyondNTP{
- "LocalHistoryZeroSuggestBeyondNTP", base::FEATURE_DISABLED_BY_DEFAULT};
- // Used to adjust the age threshold since the last visit in order to consider a
- // normalized keyword search term as a zero-prefix suggestion. If disabled, the
- // default value of 60 days for Desktop and 7 days for Android and iOS is used.
- // If enabled, the age threshold is determined by this feature's companion
- // parameter, OmniboxFieldTrial::kOmniboxLocalZeroSuggestAgeThresholdParam.
- const base::Feature kOmniboxLocalZeroSuggestAgeThreshold{
- "OmniboxLocalZeroSuggestAgeThreshold", base::FEATURE_DISABLED_BY_DEFAULT};
- // Enables on-focus zero-prefix suggestions on the NTP for signed-out users.
- const base::Feature kZeroSuggestOnNTPForSignedOutUsers{
- "OmniboxTrendingZeroPrefixSuggestionsOnNTP",
- enabled_by_default_desktop_android};
- // Enables prefetching of the zero prefix suggestions for eligible users on NTP.
- const base::Feature kZeroSuggestPrefetching{"ZeroSuggestPrefetching",
- enabled_by_default_desktop_only};
- // Enables prefetching of the zero prefix suggestions for eligible users on SRP.
- const base::Feature kZeroSuggestPrefetchingOnSRP{
- "ZeroSuggestPrefetchingOnSRP", base::FEATURE_DISABLED_BY_DEFAULT};
- // Enables prefetching of the zero prefix suggestions for eligible users on the
- // Web (i.e. non-NTP and non-SRP URLs).
- const base::Feature kZeroSuggestPrefetchingOnWeb{
- "ZeroSuggestPrefetchingOnWeb", base::FEATURE_DISABLED_BY_DEFAULT};
- // Features to provide non personalized head search suggestion from a compact
- // on device model. More specifically, feature name with suffix Incognito /
- // NonIncognito will only controls behaviors under incognito / non-incognito
- // mode respectively.
- const base::Feature kOnDeviceHeadProviderIncognito{
- "OmniboxOnDeviceHeadProviderIncognito", base::FEATURE_ENABLED_BY_DEFAULT};
- const base::Feature kOnDeviceHeadProviderNonIncognito{
- "OmniboxOnDeviceHeadProviderNonIncognito",
- base::FEATURE_ENABLED_BY_DEFAULT};
- // If enabled, changes the way Google-provided search suggestions are scored by
- // the backend. Note that this Feature is only used for triggering a server-
- // side experiment config that will send experiment IDs to the backend. It is
- // not referred to in any of the Chromium code.
- const base::Feature kOmniboxExperimentalSuggestScoring{
- "OmniboxExperimentalSuggestScoring", base::FEATURE_DISABLED_BY_DEFAULT};
- // If enabled, the HistoryQuickProvider's InMemoryURLIndex service never
- // persists its index to a cache file on shutdown, and instead always rebuilds
- // it from the HistoryService on startup. Persisting the index to disk causes
- // over 10% of all shutdown hangs.
- const base::Feature kHistoryQuickProviderAblateInMemoryURLIndexCacheFile{
- "OmniboxHistoryQuickProviderAblateInMemoryURLIndexCacheFile",
- base::FEATURE_ENABLED_BY_DEFAULT};
- // If enabled, suggestions from a cgi param name match are scored to 0.
- const base::Feature kDisableCGIParamMatching{"OmniboxDisableCGIParamMatching",
- base::FEATURE_DISABLED_BY_DEFAULT};
- // Features used to enable matching short inputs to bookmarks for suggestions.
- // By default, if both of the following are disabled, input words shorter than 3
- // characters won't prefix match bookmarks. E.g., the inputs 'abc x' or 'x'
- // won't match bookmark text 'abc xyz'.
- // If |kShortBookmarkSuggestions()| is enabled, this limitation is lifted and
- // both inputs 'abc x' and 'x' can match bookmark text 'abc xyz'.
- // If |kShortBookmarkSuggestionsByTotalInputLength()| is enabled, matching is
- // limited by input length rather than input word length. Input 'abc x' can
- // but input 'x' can't match bookmark text 'abc xyz'.
- const base::Feature kShortBookmarkSuggestions{
- "OmniboxShortBookmarkSuggestions", base::FEATURE_DISABLED_BY_DEFAULT};
- const base::Feature kShortBookmarkSuggestionsByTotalInputLength{
- "OmniboxShortBookmarkSuggestionsByTotalInputLength",
- base::FEATURE_DISABLED_BY_DEFAULT};
- // If enabled, inputs may match bookmark paths. These path matches won't
- // contribute to scoring. E.g. 'planets jupiter' can suggest a bookmark titled
- // 'Jupiter' with URL 'en.wikipedia.org/wiki/Jupiter' located in a path
- // containing 'planet.'
- const base::Feature kBookmarkPaths{"OmniboxBookmarkPaths",
- base::FEATURE_DISABLED_BY_DEFAULT};
- // If disabled, shortcuts to the same stripped destination URL are scored
- // independently, and only the highest scored shortcut is kept. If enabled,
- // duplicate shortcuts are given an aggregate score, as if they had been a
- // single shortcut.
- const base::Feature kAggregateShortcuts{"OmniboxAggregateShortcuts",
- base::FEATURE_ENABLED_BY_DEFAULT};
- // If enabled, when updating or creating a shortcut, the last word of the input
- // is expanded, if possible, to a complete word in the suggestion description.
- const base::Feature kShortcutExpanding{"OmniboxShortcutExpanding",
- base::FEATURE_DISABLED_BY_DEFAULT};
- // If enabled, the relevant AutocompleteProviders will store "title" data in
- // AutocompleteMatch::contents and "URL" data in AutocompleteMatch::description
- // for URL-based omnibox suggestions (see crbug.com/1202964 for more details).
- const base::Feature kStoreTitleInContentsAndUrlInDescription{
- "OmniboxStoreTitleInContentsAndUrlInDescription",
- base::FEATURE_DISABLED_BY_DEFAULT};
- // Feature used to fetch document suggestions.
- const base::Feature kDocumentProvider{"OmniboxDocumentProvider",
- enabled_by_default_desktop_only};
- // Feature to determine a value in the drive request indicating whether the
- // request should be served by the ASO backend.
- const base::Feature kDocumentProviderAso{"OmniboxDocumentProviderAso",
- base::FEATURE_DISABLED_BY_DEFAULT};
- // Allows Omnibox to dynamically adjust number of offered suggestions to fill in
- // the space between Omnibox and the soft keyboard. The number of suggestions
- // shown will be no less than minimum for the platform (eg. 5 for Android).
- const base::Feature kAdaptiveSuggestionsCount{"OmniboxAdaptiveSuggestionsCount",
- enabled_by_default_android_only};
- // If enabled, clipboard suggestion will not show the clipboard content until
- // the user clicks the reveal button.
- const base::Feature kClipboardSuggestionContentHidden = {
- "ClipboardSuggestionContentHidden", enabled_by_default_android_only};
- // Feature to enable memoizing and filtering non-doc hosts for
- // `DocumentProvider::GetURLForDeduping()`.
- const base::Feature kDocumentProviderDedupingOptimization{
- "OmniboxDocumentProviderDedupingOptimization",
- base::FEATURE_DISABLED_BY_DEFAULT};
- // If enabled, finance ticker answer from omnibox will reverse the color for
- // stock ticker. only colors being swapped are those that represent "growth" and
- // "loss" to represent colors red and green in a way that is appropriate for a
- // given country/culture
- const base::Feature kSuggestionAnswersColorReverse = {
- "SuggestionAnswersColorReverse", base::FEATURE_ENABLED_BY_DEFAULT};
- // If enabled, frequently visited sites are presented in form of a single row
- // with a carousel of tiles, instead of one URL per row.
- extern const base::Feature kMostVisitedTiles{"OmniboxMostVisitedTiles",
- enabled_by_default_android_only};
- // If enabled, computes spacing between MV tiles so that about 4.5 tiles are
- // shown on screen on narrow devices.
- extern const base::Feature kMostVisitedTilesDynamicSpacing{
- "OmniboxMostVisitedTilesDynamicSpacing", base::FEATURE_DISABLED_BY_DEFAULT};
- // If enabled, permits the title on the MostVisitedTiles to wrap around to
- // second line.
- extern const base::Feature kMostVisitedTilesTitleWrapAround{
- "OmniboxMostVisitedTilesTitleWrapAround",
- base::FEATURE_DISABLED_BY_DEFAULT};
- // If enabled, expands autocompletion to possibly (depending on params) include
- // suggestion titles and non-prefixes as opposed to be restricted to URL
- // prefixes. Will also adjust the location bar UI and omnibox text selection to
- // accommodate the autocompletions.
- const base::Feature kRichAutocompletion{"OmniboxRichAutocompletion",
- base::FEATURE_DISABLED_BY_DEFAULT};
- // Feature used to enable Pedals in the NTP Realbox.
- const base::Feature kNtpRealboxPedals{"NtpRealboxPedals",
- base::FEATURE_DISABLED_BY_DEFAULT};
- // Feature used to enable Suggestion Answers in the NTP Realbox.
- const base::Feature kNtpRealboxSuggestionAnswers{
- "NtpRealboxSuggestionAnswers", base::FEATURE_ENABLED_BY_DEFAULT};
- // Feature used to enable Tail Suggest Formatting in the NTP Realbox.
- const base::Feature kNtpRealboxTailSuggest{"NtpRealboxTailSuggest",
- base::FEATURE_ENABLED_BY_DEFAULT};
- // Feature used to enable URL suggestions for inputs that may contain typos.
- const base::Feature kOmniboxFuzzyUrlSuggestions{
- "OmniboxFuzzyUrlSuggestions", base::FEATURE_DISABLED_BY_DEFAULT};
- // Feature used to update the left and bottom padding of the omnibox suggestion
- // header.
- const base::Feature kOmniboxHeaderPaddingUpdate{
- "OmniboxHeaderPaddingUpdate", base::FEATURE_DISABLED_BY_DEFAULT};
- // Feature used to remove the capitalization of the suggestion header text.
- const base::Feature kOmniboxRemoveSuggestionHeaderCapitalization{
- "OmniboxRemoveSuggestionHeaderCapitalization",
- base::FEATURE_DISABLED_BY_DEFAULT};
- // Feature used to remove the chevron on the right side of suggestion list
- // header under omnibox.
- const base::Feature kOmniboxRemoveSuggestionHeaderChevron{
- "OmniboxRemoveSuggestionHeaderChevron", base::FEATURE_DISABLED_BY_DEFAULT};
- // Feature used to add fading effect to most visited tiles on tablet.
- const base::Feature kOmniboxMostVisitedTilesFadingOnTablet{
- "OmniboxMostVisitedTilesFadingOnTablet", base::FEATURE_DISABLED_BY_DEFAULT};
- // Feature used to add most visited tiles to the suggestions when the user is on
- // a search result page that does not do search term replacement.
- const base::Feature kOmniboxMostVisitedTilesOnSrp{
- "OmniboxMostVisitedTilesOnSrp", base::FEATURE_DISABLED_BY_DEFAULT};
- // Feature to enable memoizing URLs when replacing search terms in
- // `AutocompleteMatch::GURLToStrippedGURL()`.
- const base::Feature kStrippedGurlOptimization{
- "OmniboxStrippedGurlOptimization", base::FEATURE_DISABLED_BY_DEFAULT};
- // When enabled, use Assistant for omnibox voice query recognition instead of
- // Android's built-in voice recognition service. Only works on Android.
- const base::Feature kOmniboxAssistantVoiceSearch{
- "OmniboxAssistantVoiceSearch", base::FEATURE_DISABLED_BY_DEFAULT};
- const base::Feature kClosePopupWithEscape{"OmniboxClosePopupWithEscape",
- base::FEATURE_DISABLED_BY_DEFAULT};
- const base::Feature kBlurWithEscape{"OmniboxBlurWithEscape",
- base::FEATURE_ENABLED_BY_DEFAULT};
- // When enabled, adds a "starter pack" of @history, @bookmarks, and @settings
- // scopes to Site Search/Keyword Mode.
- const base::Feature kSiteSearchStarterPack{"OmniboxSiteSearchStarterPack",
- base::FEATURE_DISABLED_BY_DEFAULT};
- // Experiment to introduce new security indicators for HTTPS.
- const base::Feature kUpdatedConnectionSecurityIndicators{
- "OmniboxUpdatedConnectionSecurityIndicators",
- base::FEATURE_DISABLED_BY_DEFAULT};
- // Feature used to default typed navigations to use HTTPS instead of HTTP.
- // This only applies to navigations that don't have a scheme such as
- // "example.com". Presently, typing "example.com" in a clean browsing profile
- // loads http://example.com. When this feature is enabled, it should load
- // https://example.com instead, with fallback to http://example.com if
- // necessary.
- const base::Feature kDefaultTypedNavigationsToHttps{
- "OmniboxDefaultTypedNavigationsToHttps",
- enabled_by_default_desktop_android};
- // Parameter name used to look up the delay before falling back to the HTTP URL
- // while trying an HTTPS URL. The parameter is treated as a TimeDelta, so the
- // unit must be included in the value as well (e.g. 3s for 3 seconds).
- // - If the HTTPS load finishes successfully during this time, the timer is
- // cleared and no more work is done.
- // - Otherwise, a new navigation to the the fallback HTTP URL is started.
- const char kDefaultTypedNavigationsToHttpsTimeoutParam[] = "timeout";
- // If enabled, Omnibox reports the Assisted Query Stats in the aqs= param in the
- // Search Results Page URL.
- const base::Feature kReportAssistedQueryStats{"OmniboxReportAssistedQueryStats",
- base::FEATURE_ENABLED_BY_DEFAULT};
- // If enabled, Omnibox reports the Searchbox Stats in the gs_lcrp= param in the
- // Search Results Page URL.
- extern const base::Feature kReportSearchboxStats{
- "OmniboxReportSearchboxStats", base::FEATURE_DISABLED_BY_DEFAULT};
- // If enabled, retains all suggestions with headers to be presented entirely.
- // Disabling the feature trims the suggestions list to the predefined limit.
- extern const base::Feature kRetainSuggestionsWithHeaders{
- "OmniboxRetainSuggestionsWithHeaders", base::FEATURE_DISABLED_BY_DEFAULT};
- } // namespace omnibox
|