#include "components/omnibox/browser/remote_suggestions_service.h"
#include <memory>
#include <utility>
#include "base/functional/bind.h"
#include "base/metrics/histogram_functions.h"
#include "components/lens/proto/server/lens_overlay_response.pb.h"
#include "components/omnibox/browser/base_search_provider.h"
#include "components/omnibox/browser/document_suggestions_service.h"
#include "components/search/search.h"
#include "components/search_engines/template_url_service.h"
#include "components/variations/net/variations_http_headers.h"
#include "net/base/load_flags.h"
#include "net/base/url_util.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_event.pb.h"
namespace {
void LogSuggestRequestSent(RemoteRequestType request_type) { … }
void AddVariationHeaders(network::ResourceRequest* request) { … }
}
RemoteSuggestionsService::RemoteSuggestionsService(
DocumentSuggestionsService* document_suggestions_service,
scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory)
: … { … }
RemoteSuggestionsService::~RemoteSuggestionsService() = default;
GURL RemoteSuggestionsService::EndpointUrl(
const TemplateURL* template_url,
TemplateURLRef::SearchTermsArgs search_terms_args,
const SearchTermsData& search_terms_data) { … }
std::unique_ptr<network::SimpleURLLoader>
RemoteSuggestionsService::StartSuggestionsRequest(
RemoteRequestType request_type,
const TemplateURL* template_url,
TemplateURLRef::SearchTermsArgs search_terms_args,
const SearchTermsData& search_terms_data,
CompletionCallback completion_callback) { … }
std::unique_ptr<network::SimpleURLLoader>
RemoteSuggestionsService::StartZeroPrefixSuggestionsRequest(
RemoteRequestType request_type,
const TemplateURL* template_url,
TemplateURLRef::SearchTermsArgs search_terms_args,
const SearchTermsData& search_terms_data,
CompletionCallback completion_callback) { … }
void RemoteSuggestionsService::CreateDocumentSuggestionsRequest(
const std::u16string& query,
bool is_incognito,
DocumentStartCallback start_callback,
CompletionCallback completion_callback) { … }
void RemoteSuggestionsService::StopCreatingDocumentSuggestionsRequest() { … }
std::unique_ptr<network::SimpleURLLoader>
RemoteSuggestionsService::StartDeletionRequest(
const std::string& deletion_url,
CompletionCallback completion_callback) { … }
void RemoteSuggestionsService::AddObserver(Observer* observer) { … }
void RemoteSuggestionsService::RemoveObserver(Observer* observer) { … }
void RemoteSuggestionsService::set_url_loader_factory_for_testing(
scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory) { … }
void RemoteSuggestionsService::OnDocumentSuggestionsRequestAvailable(
const base::UnguessableToken& request_id,
network::ResourceRequest* request) { … }
void RemoteSuggestionsService::OnDocumentSuggestionsLoaderAvailable(
const base::UnguessableToken& request_id,
DocumentStartCallback start_callback,
std::unique_ptr<network::SimpleURLLoader> loader,
const std::string& request_body) { … }
void RemoteSuggestionsService::OnURLLoadComplete(
const base::UnguessableToken& request_id,
CompletionCallback completion_callback,
const network::SimpleURLLoader* source,
std::unique_ptr<std::string> response_body) { … }