• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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