Home | History | Annotate | Download | only in autocomplete
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef CHROME_BROWSER_AUTOCOMPLETE_HISTORY_PROVIDER_UTIL_H_
      6 #define CHROME_BROWSER_AUTOCOMPLETE_HISTORY_PROVIDER_UTIL_H_
      7 
      8 #include <deque>
      9 #include <vector>
     10 
     11 #include "chrome/browser/history/history_types.h"
     12 
     13 namespace history {
     14 
     15 // Used for intermediate history result operations.
     16 struct HistoryMatch {
     17   // Required for STL, we don't use this directly.
     18   HistoryMatch();
     19 
     20   HistoryMatch(const URLRow& url_info,
     21                size_t input_location,
     22                bool match_in_scheme,
     23                bool innermost_match);
     24 
     25   static bool EqualsGURL(const HistoryMatch& h, const GURL& url);
     26 
     27   // Returns true if url in this HistoryMatch is just a host
     28   // (e.g. "http://www.google.com/") and not some other subpage
     29   // (e.g. "http://www.google.com/foo.html").
     30   bool IsHostOnly() const;
     31 
     32   URLRow url_info;
     33 
     34   // The offset of the user's input within the URL.
     35   size_t input_location;
     36 
     37   // Whether this is a match in the scheme.  This determines whether we'll go
     38   // ahead and show a scheme on the URL even if the user didn't type one.
     39   // If our best match was in the scheme, not showing the scheme is both
     40   // confusing and, for inline autocomplete of the fill_into_edit, dangerous.
     41   // (If the user types "h" and we match "http://foo/", we need to inline
     42   // autocomplete that, not "foo/", which won't show anything at all, and
     43   // will mislead the user into thinking the What You Typed match is what's
     44   // selected.)
     45   bool match_in_scheme;
     46 
     47   // A match after any scheme/"www.", if the user input could match at both
     48   // locations.  If the user types "w", an innermost match ("website.com") is
     49   // better than a non-innermost match ("www.google.com").  If the user types
     50   // "x", no scheme in our prefix list (or "www.") begins with x, so all
     51   // matches are, vacuously, "innermost matches".
     52   bool innermost_match;
     53 };
     54 typedef std::deque<HistoryMatch> HistoryMatches;
     55 
     56 }  // namespace history
     57 
     58 #endif  // CHROME_BROWSER_AUTOCOMPLETE_HISTORY_PROVIDER_UTIL_H_
     59