| Index: components/autocomplete/autocomplete_match.h
|
| diff --git a/components/autocomplete/autocomplete_match.h b/components/autocomplete/autocomplete_match.h
|
| deleted file mode 100644
|
| index f44a2b864f79f65b25d746203850a3185c20b05f..0000000000000000000000000000000000000000
|
| --- a/components/autocomplete/autocomplete_match.h
|
| +++ /dev/null
|
| @@ -1,389 +0,0 @@
|
| -// Copyright 2014 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.
|
| -
|
| -#ifndef COMPONENTS_AUTOCOMPLETE_AUTOCOMPLETE_MATCH_H_
|
| -#define COMPONENTS_AUTOCOMPLETE_AUTOCOMPLETE_MATCH_H_
|
| -
|
| -#include <map>
|
| -#include <string>
|
| -#include <vector>
|
| -
|
| -#include "base/memory/scoped_ptr.h"
|
| -#include "components/autocomplete/autocomplete_match_type.h"
|
| -#include "components/search_engines/template_url.h"
|
| -#include "content/public/common/page_transition_types.h"
|
| -#include "url/gurl.h"
|
| -
|
| -class AutocompleteProvider;
|
| -class TemplateURL;
|
| -class TemplateURLService;
|
| -
|
| -namespace base {
|
| -class Time;
|
| -} // namespace base
|
| -
|
| -const char kACMatchPropertyInputText[] = "input text";
|
| -const char kACMatchPropertyContentsPrefix[] = "match contents prefix";
|
| -const char kACMatchPropertyContentsStartIndex[] = "match contents start index";
|
| -
|
| -// AutocompleteMatch ----------------------------------------------------------
|
| -
|
| -// A single result line with classified spans. The autocomplete popup displays
|
| -// the 'contents' and the 'description' (the description is optional) in the
|
| -// autocomplete dropdown, and fills in 'fill_into_edit' into the textbox when
|
| -// that line is selected. fill_into_edit may be the same as 'description' for
|
| -// things like URLs, but may be different for searches or other providers. For
|
| -// example, a search result may say "Search for asdf" as the description, but
|
| -// "asdf" should appear in the box.
|
| -struct AutocompleteMatch {
|
| - // Autocomplete matches contain strings that are classified according to a
|
| - // separate vector of styles. This vector associates flags with particular
|
| - // string segments, and must be in sorted order. All text must be associated
|
| - // with some kind of classification. Even if a match has no distinct
|
| - // segments, its vector should contain an entry at offset 0 with no flags.
|
| - //
|
| - // Example: The user typed "goog"
|
| - // http://www.google.com/ Google
|
| - // ^ ^ ^ ^ ^
|
| - // 0, | 15, | 4,
|
| - // 11,match 0,match
|
| - //
|
| - // This structure holds the classification information for each span.
|
| - struct ACMatchClassification {
|
| - // The values in here are not mutually exclusive -- use them like a
|
| - // bitfield. This also means we use "int" instead of this enum type when
|
| - // passing the values around, so the compiler doesn't complain.
|
| - enum Style {
|
| - NONE = 0,
|
| - URL = 1 << 0, // A URL
|
| - MATCH = 1 << 1, // A match for the user's search term
|
| - DIM = 1 << 2, // "Helper text"
|
| - };
|
| -
|
| - ACMatchClassification(size_t offset, int style)
|
| - : offset(offset),
|
| - style(style) {
|
| - }
|
| -
|
| - // Offset within the string that this classification starts
|
| - size_t offset;
|
| -
|
| - int style;
|
| - };
|
| -
|
| - typedef std::vector<ACMatchClassification> ACMatchClassifications;
|
| -
|
| - // Type used by providers to attach additional, optional information to
|
| - // an AutocompleteMatch.
|
| - typedef std::map<std::string, std::string> AdditionalInfo;
|
| -
|
| - // The type of this match.
|
| - typedef AutocompleteMatchType::Type Type;
|
| -
|
| - // Null-terminated array of characters that are not valid within |contents|
|
| - // and |description| strings.
|
| - static const base::char16 kInvalidChars[];
|
| -
|
| - AutocompleteMatch();
|
| - AutocompleteMatch(AutocompleteProvider* provider,
|
| - int relevance,
|
| - bool deletable,
|
| - Type type);
|
| - AutocompleteMatch(const AutocompleteMatch& match);
|
| - ~AutocompleteMatch();
|
| -
|
| - // Converts |type| to a string representation. Used in logging and debugging.
|
| - AutocompleteMatch& operator=(const AutocompleteMatch& match);
|
| -
|
| - // Converts |type| to a resource identifier for the appropriate icon for this
|
| - // type to show in the completion popup.
|
| - static int TypeToIcon(Type type);
|
| -
|
| - // Comparison function for determining when one match is better than another.
|
| - static bool MoreRelevant(const AutocompleteMatch& elem1,
|
| - const AutocompleteMatch& elem2);
|
| -
|
| - // Comparison function for removing matches with duplicate destinations.
|
| - // Destinations are compared using |stripped_destination_url|. Pairs of
|
| - // matches with empty destinations are treated as differing, since empty
|
| - // destinations are expected for non-navigable matches.
|
| - static bool DestinationsEqual(const AutocompleteMatch& elem1,
|
| - const AutocompleteMatch& elem2);
|
| -
|
| - // Helper functions for classes creating matches:
|
| - // Fills in the classifications for |text|, using |style| as the base style
|
| - // and marking the first instance of |find_text| as a match. (This match
|
| - // will also not be dimmed, if |style| has DIM set.)
|
| - static void ClassifyMatchInString(const base::string16& find_text,
|
| - const base::string16& text,
|
| - int style,
|
| - ACMatchClassifications* classifications);
|
| -
|
| - // Similar to ClassifyMatchInString(), but for cases where the range to mark
|
| - // as matching is already known (avoids calling find()). This can be helpful
|
| - // when find() would be misleading (e.g. you want to mark the second match in
|
| - // a string instead of the first).
|
| - static void ClassifyLocationInString(size_t match_location,
|
| - size_t match_length,
|
| - size_t overall_length,
|
| - int style,
|
| - ACMatchClassifications* classifications);
|
| -
|
| - // Returns a new vector of classifications containing the merged contents of
|
| - // |classifications1| and |classifications2|.
|
| - static ACMatchClassifications MergeClassifications(
|
| - const ACMatchClassifications& classifications1,
|
| - const ACMatchClassifications& classifications2);
|
| -
|
| - // Converts classifications to and from a serialized string representation
|
| - // (using comma-separated integers to sequentially list positions and styles).
|
| - static std::string ClassificationsToString(
|
| - const ACMatchClassifications& classifications);
|
| - static ACMatchClassifications ClassificationsFromString(
|
| - const std::string& serialized_classifications);
|
| -
|
| - // Adds a classification to the end of |classifications| iff its style is
|
| - // different from the last existing classification. |offset| must be larger
|
| - // than the offset of the last classification in |classifications|.
|
| - static void AddLastClassificationIfNecessary(
|
| - ACMatchClassifications* classifications,
|
| - size_t offset,
|
| - int style);
|
| -
|
| - // Removes invalid characters from |text|. Should be called on strings coming
|
| - // from external sources (such as extensions) before assigning to |contents|
|
| - // or |description|.
|
| - static base::string16 SanitizeString(const base::string16& text);
|
| -
|
| - // Convenience function to check if |type| is a search (as opposed to a URL or
|
| - // an extension).
|
| - static bool IsSearchType(Type type);
|
| -
|
| - // Convenience function to check if |type| is a special search suggest type -
|
| - // like entity, personalized, profile or postfix.
|
| - static bool IsSpecializedSearchType(Type type);
|
| -
|
| - // A static version GetTemplateURL() that takes the match's keyword and
|
| - // match's hostname as parameters. In short, returns the TemplateURL
|
| - // associated with |keyword| if it exists; otherwise returns the TemplateURL
|
| - // associated with |host| if it exists.
|
| - static TemplateURL* GetTemplateURLWithKeyword(
|
| - TemplateURLService* template_url_service,
|
| - const base::string16& keyword,
|
| - const std::string& host);
|
| -
|
| - // Returns |url| altered by stripping off "www.", converting https protocol
|
| - // to http, and stripping excess query parameters. These conversions are
|
| - // merely to allow comparisons to remove likely duplicates; these URLs are
|
| - // not used as actual destination URLs. If |template_url_service| is not
|
| - // NULL, it is used to get a template URL corresponding to this match. If
|
| - // the match's keyword is known, it can be passed in. Otherwise, it can be
|
| - // left empty and the template URL (if any) is determined from the
|
| - // destination's hostname. The template URL is used to strip off query args
|
| - // other than the search terms themselves that would otherwise prevent doing
|
| - // proper deduping.
|
| - static GURL GURLToStrippedGURL(const GURL& url,
|
| - TemplateURLService* template_url_service,
|
| - const base::string16& keyword);
|
| -
|
| - // Computes the stripped destination URL (via GURLToStrippedGURL()) and
|
| - // stores the result in |stripped_destination_url|.
|
| - void ComputeStrippedDestinationURL(TemplateURLService* template_url_service);
|
| -
|
| - // Sets |allowed_to_be_default_match| to true if this match is effectively
|
| - // the URL-what-you-typed match (i.e., would be dupped against the UWYT
|
| - // match when AutocompleteResult merges matches). |canonical_input_url| is
|
| - // the AutocompleteInput interpreted as a URL (i.e.,
|
| - // AutocompleteInput::canonicalized_url()).
|
| - void EnsureUWYTIsAllowedToBeDefault(const GURL& canonical_input_url,
|
| - TemplateURLService* template_url_service);
|
| -
|
| - // Gets data relevant to whether there should be any special keyword-related
|
| - // UI shown for this match. If this match represents a selected keyword, i.e.
|
| - // the UI should be "in keyword mode", |keyword| will be set to the keyword
|
| - // and |is_keyword_hint| will be set to false. If this match has a non-NULL
|
| - // |associated_keyword|, i.e. we should show a "Press [tab] to search ___"
|
| - // hint and allow the user to toggle into keyword mode, |keyword| will be set
|
| - // to the associated keyword and |is_keyword_hint| will be set to true. Note
|
| - // that only one of these states can be in effect at once. In all other
|
| - // cases, |keyword| will be cleared, even when our member variable |keyword|
|
| - // is non-empty -- such as with non-substituting keywords or matches that
|
| - // represent searches using the default search engine. See also
|
| - // GetSubstitutingExplicitlyInvokedKeyword().
|
| - void GetKeywordUIState(TemplateURLService* template_url_service,
|
| - base::string16* keyword,
|
| - bool* is_keyword_hint) const;
|
| -
|
| - // Returns |keyword|, but only if it represents a substituting keyword that
|
| - // the user has explicitly invoked. If for example this match represents a
|
| - // search with the default search engine (and the user didn't explicitly
|
| - // invoke its keyword), this returns the empty string. The result is that
|
| - // this function returns a non-empty string in the same cases as when the UI
|
| - // should show up as being "in keyword mode".
|
| - base::string16 GetSubstitutingExplicitlyInvokedKeyword(
|
| - TemplateURLService* template_url_service) const;
|
| -
|
| - // Returns the TemplateURL associated with this match. This may be NULL if
|
| - // the match has no keyword OR if the keyword no longer corresponds to a valid
|
| - // TemplateURL. See comments on |keyword| below.
|
| - // If |allow_fallback_to_destination_host| is true and the keyword does
|
| - // not map to a valid TemplateURL, we'll then check for a TemplateURL that
|
| - // corresponds to the destination_url's hostname.
|
| - TemplateURL* GetTemplateURL(TemplateURLService* template_url_service,
|
| - bool allow_fallback_to_destination_host) const;
|
| -
|
| - // Adds optional information to the |additional_info| dictionary.
|
| - void RecordAdditionalInfo(const std::string& property,
|
| - const std::string& value);
|
| - void RecordAdditionalInfo(const std::string& property, int value);
|
| - void RecordAdditionalInfo(const std::string& property,
|
| - const base::Time& value);
|
| -
|
| - // Returns the value recorded for |property| in the |additional_info|
|
| - // dictionary. Returns the empty string if no such value exists.
|
| - std::string GetAdditionalInfo(const std::string& property) const;
|
| -
|
| - // Returns whether this match is a "verbatim" match: a URL navigation directly
|
| - // to the user's input, a search for the user's input with the default search
|
| - // engine, or a "keyword mode" search for the query portion of the user's
|
| - // input. Note that rare or unusual types that could be considered verbatim,
|
| - // such as keyword engine matches or extension-provided matches, aren't
|
| - // detected by this IsVerbatimType, as the user will not be able to infer
|
| - // what will happen when he or she presses enter in those cases if the match
|
| - // is not shown.
|
| - bool IsVerbatimType() const;
|
| -
|
| - // Returns whether this match or any duplicate of this match can be deleted.
|
| - // This is used to decide whether we should call DeleteMatch().
|
| - bool SupportsDeletion() const;
|
| -
|
| - // The provider of this match, used to remember which provider the user had
|
| - // selected when the input changes. This may be NULL, in which case there is
|
| - // no provider (or memory of the user's selection).
|
| - AutocompleteProvider* provider;
|
| -
|
| - // The relevance of this match. See table in autocomplete.h for scores
|
| - // returned by various providers. This is used to rank matches among all
|
| - // responding providers, so different providers must be carefully tuned to
|
| - // supply matches with appropriate relevance.
|
| - //
|
| - // TODO(pkasting): http://b/1111299 This should be calculated algorithmically,
|
| - // rather than being a fairly fixed value defined by the table above.
|
| - int relevance;
|
| -
|
| - // How many times this result was typed in / selected from the omnibox.
|
| - // Only set for some providers and result_types. If it is not set,
|
| - // its value is -1. At the time of writing this comment, it is only
|
| - // set for matches from HistoryURL and HistoryQuickProvider.
|
| - int typed_count;
|
| -
|
| - // True if the user should be able to delete this match.
|
| - bool deletable;
|
| -
|
| - // This string is loaded into the location bar when the item is selected
|
| - // by pressing the arrow keys. This may be different than a URL, for example,
|
| - // for search suggestions, this would just be the search terms.
|
| - base::string16 fill_into_edit;
|
| -
|
| - // The inline autocompletion to display after the user's typing in the
|
| - // omnibox, if this match becomes the default match. It may be empty.
|
| - base::string16 inline_autocompletion;
|
| -
|
| - // If false, the omnibox should prevent this match from being the
|
| - // default match. Providers should set this to true only if the
|
| - // user's input, plus any inline autocompletion on this match, would
|
| - // lead the user to expect a navigation to this match's destination.
|
| - // For example, with input "foo", a search for "bar" or navigation
|
| - // to "bar.com" should not set this flag; a navigation to "foo.com"
|
| - // should only set this flag if ".com" will be inline autocompleted;
|
| - // and a navigation to "foo/" (an intranet host) or search for "foo"
|
| - // should set this flag.
|
| - bool allowed_to_be_default_match;
|
| -
|
| - // The URL to actually load when the autocomplete item is selected. This URL
|
| - // should be canonical so we can compare URLs with strcmp to avoid dupes.
|
| - // It may be empty if there is no possible navigation.
|
| - GURL destination_url;
|
| -
|
| - // The destination URL with "www." stripped off for better dupe finding.
|
| - GURL stripped_destination_url;
|
| -
|
| - // The main text displayed in the address bar dropdown.
|
| - base::string16 contents;
|
| - ACMatchClassifications contents_class;
|
| -
|
| - // Additional helper text for each entry, such as a title or description.
|
| - base::string16 description;
|
| - ACMatchClassifications description_class;
|
| -
|
| - // A rich-format version of the display for the dropdown.
|
| - base::string16 answer_contents;
|
| - base::string16 answer_type;
|
| -
|
| - // The transition type to use when the user opens this match. By default
|
| - // this is TYPED. Providers whose matches do not look like URLs should set
|
| - // it to GENERATED.
|
| - content::PageTransition transition;
|
| -
|
| - // True when this match is the "what you typed" match from the history
|
| - // system.
|
| - bool is_history_what_you_typed_match;
|
| -
|
| - // Type of this match.
|
| - Type type;
|
| -
|
| - // Set with a keyword provider match if this match can show a keyword hint.
|
| - // For example, if this is a SearchProvider match for "www.amazon.com",
|
| - // |associated_keyword| could be a KeywordProvider match for "amazon.com".
|
| - scoped_ptr<AutocompleteMatch> associated_keyword;
|
| -
|
| - // The keyword of the TemplateURL the match originated from. This is nonempty
|
| - // for both explicit "keyword mode" matches as well as matches for the default
|
| - // search provider (so, any match for which we're doing substitution); it
|
| - // doesn't imply (alone) that the UI is going to show a keyword hint or
|
| - // keyword mode. For that, see GetKeywordUIState() or
|
| - // GetSubstitutingExplicitlyInvokedKeyword().
|
| - //
|
| - // CAUTION: The TemplateURL associated with this keyword may be deleted or
|
| - // modified while the AutocompleteMatch is alive. This means anyone who
|
| - // accesses it must perform any necessary sanity checks before blindly using
|
| - // it!
|
| - base::string16 keyword;
|
| -
|
| - // True if this match is from a previous result.
|
| - bool from_previous;
|
| -
|
| - // Optional search terms args. If present,
|
| - // AutocompleteController::UpdateAssistedQueryStats() will incorporate this
|
| - // data with additional data it calculates and pass the completed struct to
|
| - // TemplateURLRef::ReplaceSearchTerms() to reset the match's |destination_url|
|
| - // after the complete set of matches in the AutocompleteResult has been chosen
|
| - // and sorted. Most providers will leave this as NULL, which will cause the
|
| - // AutocompleteController to do no additional transformations.
|
| - scoped_ptr<TemplateURLRef::SearchTermsArgs> search_terms_args;
|
| -
|
| - // Information dictionary into which each provider can optionally record a
|
| - // property and associated value and which is presented in chrome://omnibox.
|
| - AdditionalInfo additional_info;
|
| -
|
| - // A list of matches culled during de-duplication process, retained to
|
| - // ensure if a match is deleted, the duplicates are deleted as well.
|
| - std::vector<AutocompleteMatch> duplicate_matches;
|
| -
|
| -#ifndef NDEBUG
|
| - // Does a data integrity check on this match.
|
| - void Validate() const;
|
| -
|
| - // Checks one text/classifications pair for valid values.
|
| - void ValidateClassifications(
|
| - const base::string16& text,
|
| - const ACMatchClassifications& classifications) const;
|
| -#endif
|
| -};
|
| -
|
| -typedef AutocompleteMatch::ACMatchClassification ACMatchClassification;
|
| -typedef std::vector<ACMatchClassification> ACMatchClassifications;
|
| -typedef std::vector<AutocompleteMatch> ACMatches;
|
| -
|
| -#endif // COMPONENTS_AUTOCOMPLETE_AUTOCOMPLETE_MATCH_H_
|
|
|