// Copyright 2014 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef COMPONENTS_SEARCH_ENGINES_TEMPLATE_URL_H_ #define COMPONENTS_SEARCH_ENGINES_TEMPLATE_URL_H_ #include <cstddef> #include <memory> #include <optional> #include <string> #include <string_view> #include <utility> #include <vector> #include "base/gtest_prod_util.h" #include "base/memory/raw_ptr.h" #include "base/time/time.h" #include "components/lens/proto/server/lens_overlay_response.pb.h" #include "components/search_engines/search_engine_type.h" #include "components/search_engines/search_terms_data.h" #include "components/search_engines/template_url_data.h" #include "components/search_engines/template_url_id.h" #include "third_party/metrics_proto/omnibox_event.pb.h" #include "third_party/metrics_proto/omnibox_focus_type.pb.h" #include "third_party/metrics_proto/omnibox_input_type.pb.h" #include "third_party/omnibox_proto/chrome_searchbox_stats.pb.h" #include "ui/gfx/geometry/size.h" #include "url/gurl.h" #include "url/third_party/mozilla/url_parse.h" class TemplateURL; // TemplateURLRef ------------------------------------------------------------- // A TemplateURLRef represents a single URL within the larger TemplateURL class // (which represents an entire "search engine", see below). If // SupportsReplacement() is true, this URL has placeholders in it, for which // callers can substitute values to get a "real" URL using ReplaceSearchTerms(). // // TemplateURLRefs always have a non-NULL |owner_| TemplateURL, which they // access in order to get at important data like the underlying URL string or // the associated Profile. class TemplateURLRef { … }; // TemplateURL ---------------------------------------------------------------- // A TemplateURL represents a single "search engine", defined primarily as a // subset of the Open Search Description Document // (http://www.opensearch.org/Specifications/OpenSearch) plus some extensions. // One TemplateURL contains several TemplateURLRefs, which correspond to various // different capabilities (e.g. doing searches or getting suggestions), as well // as a TemplateURLData containing other details like the name, keyword, etc. // // TemplateURLs are intended to be read-only for most users. // The TemplateURLService, which handles storing and manipulating TemplateURLs, // is made a friend so that it can be the exception to this pattern. class TemplateURL { … }; #endif // COMPONENTS_SEARCH_ENGINES_TEMPLATE_URL_H_