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 // When sorting, all promoted matches should appear before all non-promoted 55 // matches, regardless of other properties of the match. 56 bool promoted; 57 }; 58 typedef std::deque<HistoryMatch> HistoryMatches; 59 60 } // namespace history 61 62 #endif // CHROME_BROWSER_AUTOCOMPLETE_HISTORY_PROVIDER_UTIL_H_ 63