#include "components/omnibox/browser/base_search_provider.h"
#include <stddef.h>
#include <stdint.h>
#include <algorithm>
#include <memory>
#include <vector>
#include "base/feature_list.h"
#include "base/functional/bind.h"
#include "base/i18n/case_conversion.h"
#include "base/memory/scoped_refptr.h"
#include "base/ranges/algorithm.h"
#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
#include "components/omnibox/browser/actions/omnibox_action_in_suggest.h"
#include "components/omnibox/browser/actions/omnibox_answer_action.h"
#include "components/omnibox/browser/autocomplete_provider_client.h"
#include "components/omnibox/browser/autocomplete_provider_listener.h"
#include "components/omnibox/browser/omnibox_feature_configs.h"
#include "components/omnibox/browser/omnibox_field_trial.h"
#include "components/omnibox/browser/page_classification_functions.h"
#include "components/omnibox/browser/remote_suggestions_service.h"
#include "components/omnibox/browser/search_scoring_signals_annotator.h"
#include "components/omnibox/browser/suggestion_answer.h"
#include "components/omnibox/common/omnibox_features.h"
#include "components/search/search.h"
#include "components/search_engines/template_url.h"
#include "components/search_engines/template_url_service.h"
#include "components/variations/net/variations_http_headers.h"
#include "net/base/registry_controlled_domains/registry_controlled_domain.h"
#include "net/traffic_annotation/network_traffic_annotation.h"
#include "services/network/public/cpp/resource_request.h"
#include "services/network/public/cpp/shared_url_loader_factory.h"
#include "services/network/public/cpp/simple_url_loader.h"
#include "services/network/public/mojom/url_response_head.mojom.h"
#include "third_party/metrics_proto/omnibox_input_type.pb.h"
#include "third_party/omnibox_proto/navigational_intent.pb.h"
#include "third_party/omnibox_proto/rich_answer_template.pb.h"
#include "url/gurl.h"
#include "url/origin.h"
namespace …
OEP;
BaseSearchProvider::BaseSearchProvider(AutocompleteProvider::Type type,
AutocompleteProviderClient* client)
: … { … }
bool BaseSearchProvider::ShouldPrefetch(const AutocompleteMatch& match) { … }
bool BaseSearchProvider::ShouldPrerender(const AutocompleteMatch& match) { … }
AutocompleteMatch BaseSearchProvider::CreateSearchSuggestion(
AutocompleteProvider* autocomplete_provider,
const AutocompleteInput& input,
const bool in_keyword_mode,
const SearchSuggestionParser::SuggestResult& suggestion,
const TemplateURL* template_url,
const SearchTermsData& search_terms_data,
int accepted_suggestion,
bool append_extra_query_params_from_command_line) { … }
scoped_refptr<OmniboxAction> BaseSearchProvider::CreateActionInSuggest(
omnibox::ActionInfo action_info,
const TemplateURLRef& search_url,
const TemplateURLRef::SearchTermsArgs& original_search_terms_args,
const SearchTermsData& search_terms_data) { … }
scoped_refptr<OmniboxAction> BaseSearchProvider::CreateAnswerAction(
omnibox::SuggestionEnhancement enhancement,
TemplateURLRef::SearchTermsArgs search_terms_args,
omnibox::AnswerType answer_type) { … }
AutocompleteMatch BaseSearchProvider::CreateShortcutSearchSuggestion(
const std::u16string& suggestion,
AutocompleteMatchType::Type type,
bool from_keyword,
const TemplateURL* template_url,
const SearchTermsData& search_terms_data) { … }
AutocompleteMatch BaseSearchProvider::CreateOnDeviceSearchSuggestion(
AutocompleteProvider* autocomplete_provider,
const AutocompleteInput& input,
const std::u16string& suggestion,
int relevance,
const TemplateURL* template_url,
const SearchTermsData& search_terms_data,
int accepted_suggestion,
bool is_tail_suggestion) { … }
bool BaseSearchProvider::PageURLIsEligibleForSuggestRequest(
const GURL& page_url) { … }
bool BaseSearchProvider::CanSendSuggestRequestWithoutPageURL(
const TemplateURL* template_url,
const SearchTermsData& search_terms_data,
const AutocompleteProviderClient* client) { … }
bool BaseSearchProvider::CanSendSuggestRequestWithPageURL(
const GURL& current_page_url,
const TemplateURL* template_url,
const SearchTermsData& search_terms_data,
const AutocompleteProviderClient* client) { … }
void BaseSearchProvider::DeleteMatch(const AutocompleteMatch& match) { … }
void BaseSearchProvider::AddProviderInfo(ProvidersInfo* provider_info) const { … }
const char BaseSearchProvider::kRelevanceFromServerKey[] = …;
const char BaseSearchProvider::kShouldPrefetchKey[] = …;
const char BaseSearchProvider::kShouldPrerenderKey[] = …;
const char BaseSearchProvider::kDeletionUrlKey[] = …;
const char BaseSearchProvider::kTrue[] = …;
const char BaseSearchProvider::kFalse[] = …;
BaseSearchProvider::~BaseSearchProvider() { … }
std::u16string BaseSearchProvider::GetFillIntoEdit(
const SearchSuggestionParser::SuggestResult& suggest_result,
const TemplateURL* template_url) { … }
void BaseSearchProvider::SetDeletionURL(const std::string& deletion_url,
AutocompleteMatch* match) { … }
void BaseSearchProvider::AddMatchToMap(
const SearchSuggestionParser::SuggestResult& result,
const AutocompleteInput& input,
const TemplateURL* template_url,
const SearchTermsData& search_terms_data,
int accepted_suggestion,
bool mark_as_deletable,
bool in_keyword_mode,
MatchMap* map) { … }
void BaseSearchProvider::DeleteMatchFromMatches(
const AutocompleteMatch& match) { … }
void BaseSearchProvider::OnDeletionComplete(
const network::SimpleURLLoader* source,
const int response_code,
std::unique_ptr<std::string> response_body) { … }