#include "components/omnibox/browser/on_device_head_provider.h"
#include <limits>
#include "base/containers/contains.h"
#include "base/files/file_enumerator.h"
#include "base/files/file_util.h"
#include "base/i18n/case_conversion.h"
#include "base/memory/ptr_util.h"
#include "base/metrics/field_trial_params.h"
#include "base/metrics/histogram_macros.h"
#include "base/path_service.h"
#include "base/strings/utf_string_conversions.h"
#include "base/task/sequenced_task_runner.h"
#include "base/task/thread_pool.h"
#include "base/trace_event/trace_event.h"
#include "components/omnibox/browser/autocomplete_provider_listener.h"
#include "components/omnibox/browser/base_search_provider.h"
#include "components/omnibox/browser/omnibox_field_trial.h"
#include "components/omnibox/browser/on_device_model_update_listener.h"
#include "components/omnibox/common/omnibox_features.h"
#include "components/search/search.h"
#include "components/search_engines/search_terms_data.h"
#include "components/search_engines/template_url_service.h"
#include "net/base/url_util.h"
#include "third_party/metrics_proto/omnibox_focus_type.pb.h"
#include "third_party/metrics_proto/omnibox_input_type.pb.h"
#if BUILDFLAG(BUILD_WITH_TFLITE_LIB)
#include "components/omnibox/browser/on_device_tail_model_executor.h"
#include "components/omnibox/browser/on_device_tail_model_service.h"
#endif
namespace {
const int kBaseRelevanceForUrlInput = …;
const int kTailBaseRelevance = …;
const size_t kMaxRequestId = …;
int OnDeviceHeadSuggestMaxScoreForNonUrlInput(bool is_incognito) { … }
std::string SanitizeInput(const std::u16string& input) { … }
enum class SuggestionType { … };
struct Suggestion { … };
}
struct OnDeviceHeadProvider::OnDeviceHeadProviderParams { … };
OnDeviceHeadProvider* OnDeviceHeadProvider::Create(
AutocompleteProviderClient* client,
AutocompleteProviderListener* listener) { … }
OnDeviceHeadProvider::OnDeviceHeadProvider(
AutocompleteProviderClient* client,
AutocompleteProviderListener* listener)
: … { … }
OnDeviceHeadProvider::~OnDeviceHeadProvider() { … }
bool OnDeviceHeadProvider::IsOnDeviceHeadProviderAllowed(
const AutocompleteInput& input) { … }
void OnDeviceHeadProvider::Start(const AutocompleteInput& input,
bool minimal_changes) { … }
void OnDeviceHeadProvider::Stop(bool clear_cached_results,
bool due_to_user_inactivity) { … }
std::unique_ptr<OnDeviceHeadProvider::OnDeviceHeadProviderParams>
OnDeviceHeadProvider::GetSuggestionsFromHeadModel(
const std::string& model_filename,
const size_t provider_max_matches,
std::unique_ptr<OnDeviceHeadProviderParams> params) { … }
void OnDeviceHeadProvider::AddProviderInfo(ProvidersInfo* provider_info) const { … }
void OnDeviceHeadProvider::DoSearch(
std::unique_ptr<OnDeviceHeadProviderParams> params) { … }
void OnDeviceHeadProvider::HeadModelSearchDone(
std::unique_ptr<OnDeviceHeadProviderParams> params) { … }
#if BUILDFLAG(BUILD_WITH_TFLITE_LIB)
void OnDeviceHeadProvider::TailModelSearchDone(
std::unique_ptr<OnDeviceHeadProviderParams> params,
std::vector<OnDeviceTailModelExecutor::Prediction> predictions) { … }
#endif
void OnDeviceHeadProvider::AllSearchDone(
std::unique_ptr<OnDeviceHeadProviderParams> params) { … }
std::string OnDeviceHeadProvider::GetOnDeviceHeadModelFilename() const { … }
bool OnDeviceHeadProvider::ShouldFetchTailSuggestions(
const OnDeviceHeadProviderParams& params) { … }