diff options
author | isherman@chromium.org <isherman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-21 03:48:22 +0000 |
---|---|---|
committer | isherman@chromium.org <isherman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-21 03:48:22 +0000 |
commit | bbf7e53f9a96ebd3a4f2835ea5ee561f03ef534e (patch) | |
tree | 4c69eff76893fcdfee2881b2e7f796f95cb2d6ab /chrome/browser/autocomplete | |
parent | 49f3c3b87869b5ef8393aee7fc9a1f2cfd78ce09 (diff) | |
download | chromium_src-bbf7e53f9a96ebd3a4f2835ea5ee561f03ef534e.zip chromium_src-bbf7e53f9a96ebd3a4f2835ea5ee561f03ef534e.tar.gz chromium_src-bbf7e53f9a96ebd3a4f2835ea5ee561f03ef534e.tar.bz2 |
History provider: style cleanup
BUG=none
TEST=it compiles
Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=56939
Review URL: http://codereview.chromium.org/3177020
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@56981 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/autocomplete')
5 files changed, 143 insertions, 23 deletions
diff --git a/chrome/browser/autocomplete/history_provider_util.cc b/chrome/browser/autocomplete/history_provider_util.cc new file mode 100644 index 0000000..39c26ec --- /dev/null +++ b/chrome/browser/autocomplete/history_provider_util.cc @@ -0,0 +1,39 @@ +// Copyright (c) 2010 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. + +#include "chrome/browser/autocomplete/history_provider_util.h" + +namespace history { + +const int kLowQualityMatchTypedLimit = 1; +const int kLowQualityMatchVisitLimit = 3; +const int kLowQualityMatchAgeLimitInDays = 3; + +HistoryMatch::HistoryMatch() + : url_info(), + input_location(std::wstring::npos), + match_in_scheme(false), + innermost_match(true) { +} + +HistoryMatch::HistoryMatch(const URLRow& url_info, + size_t input_location, + bool match_in_scheme, + bool innermost_match) + : url_info(url_info), + input_location(input_location), + match_in_scheme(match_in_scheme), + innermost_match(innermost_match) { +} + +bool HistoryMatch::operator==(const GURL& url) const { + return url_info.url() == url; +} + +base::Time AutocompleteAgeThreshold() { + return (base::Time::Now() - + base::TimeDelta::FromDays(kLowQualityMatchAgeLimitInDays)); +} + +} diff --git a/chrome/browser/autocomplete/history_provider_util.h b/chrome/browser/autocomplete/history_provider_util.h new file mode 100644 index 0000000..5f72983 --- /dev/null +++ b/chrome/browser/autocomplete/history_provider_util.h @@ -0,0 +1,80 @@ +// Copyright (c) 2010 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 CHROME_BROWSER_AUTOCOMPLETE_HISTORY_PROVIDER_UTIL_H_ +#define CHROME_BROWSER_AUTOCOMPLETE_HISTORY_PROVIDER_UTIL_H_ +#pragma once + +#include <deque> +#include <vector> + +#include "chrome/browser/history/history_types.h" + +namespace history { + +// Constants which specify, when considered altogether, 'significant' +// history items. These are used to filter out insignificant items +// for consideration as autocomplete candidates. +extern const int kLowQualityMatchTypedLimit; +extern const int kLowQualityMatchVisitLimit; +extern const int kLowQualityMatchAgeLimitInDays; + +// Used for intermediate history result operations. +struct HistoryMatch { + // Required for STL, we don't use this directly. + HistoryMatch(); + + HistoryMatch(const URLRow& url_info, + size_t input_location, + bool match_in_scheme, + bool innermost_match); + + bool operator==(const GURL& url) const; + + URLRow url_info; + + // The offset of the user's input within the URL. + size_t input_location; + + // Whether this is a match in the scheme. This determines whether we'll go + // ahead and show a scheme on the URL even if the user didn't type one. + // If our best match was in the scheme, not showing the scheme is both + // confusing and, for inline autocomplete of the fill_into_edit, dangerous. + // (If the user types "h" and we match "http://foo/", we need to inline + // autocomplete that, not "foo/", which won't show anything at all, and + // will mislead the user into thinking the What You Typed match is what's + // selected.) + bool match_in_scheme; + + // A match after any scheme/"www.", if the user input could match at both + // locations. If the user types "w", an innermost match ("website.com") is + // better than a non-innermost match ("www.google.com"). If the user types + // "x", no scheme in our prefix list (or "www.") begins with x, so all + // matches are, vacuously, "innermost matches". + bool innermost_match; +}; +typedef std::deque<HistoryMatch> HistoryMatches; + +struct Prefix { + Prefix(const std::wstring& prefix, int num_components) + : prefix(prefix), + num_components(num_components) {} + + std::wstring prefix; + + // The number of "components" in the prefix. The scheme is a component, + // and the initial "www." or "ftp." is a component. So "http://foo.com" + // and "www.bar.com" each have one component, "ftp://ftp.ftp.com" has two, + // and "mysite.com" has none. This is used to tell whether the user's + // input is an innermost match or not. See comments in HistoryMatch. + int num_components; +}; +typedef std::vector<Prefix> Prefixes; + +// Returns the date threshold for considering an history item as significant. +base::Time AutocompleteAgeThreshold(); + +} + +#endif // CHROME_BROWSER_AUTOCOMPLETE_HISTORY_PROVIDER_UTIL_H_ diff --git a/chrome/browser/autocomplete/history_quick_provider.h b/chrome/browser/autocomplete/history_quick_provider.h index c0dcc15..5d4a577 100644 --- a/chrome/browser/autocomplete/history_quick_provider.h +++ b/chrome/browser/autocomplete/history_quick_provider.h @@ -4,6 +4,7 @@ #ifndef CHROME_BROWSER_AUTOCOMPLETE_HISTORY_QUICK_PROVIDER_H_ #define CHROME_BROWSER_AUTOCOMPLETE_HISTORY_QUICK_PROVIDER_H_ +#pragma once #include "chrome/browser/autocomplete/autocomplete.h" diff --git a/chrome/browser/autocomplete/history_url_provider.cc b/chrome/browser/autocomplete/history_url_provider.cc index 0f339f4..b060555 100644 --- a/chrome/browser/autocomplete/history_url_provider.cc +++ b/chrome/browser/autocomplete/history_url_provider.cc @@ -27,7 +27,6 @@ using base::Time; using base::TimeDelta; using base::TimeTicks; -// TODO(mrossetti): Move these to a more appropriate place. using history::Prefix; using history::Prefixes; using history::HistoryMatch; @@ -114,6 +113,13 @@ HistoryURLProviderParams::HistoryURLProviderParams( languages(languages) { } +HistoryURLProvider::HistoryURLProvider(ACProviderListener* listener, + Profile* profile) + : AutocompleteProvider(listener, profile, "HistoryURL"), + prefixes_(GetPrefixes()), + params_(NULL) { +} + void HistoryURLProvider::Start(const AutocompleteInput& input, bool minimal_changes) { // NOTE: We could try hard to do less work in the |minimal_changes| case @@ -784,10 +790,8 @@ void HistoryURLProvider::CullPoorMatches(HistoryMatches* matches) const { Time recent_threshold = history::AutocompleteAgeThreshold(); for (HistoryMatches::iterator i(matches->begin()); i != matches->end();) { const history::URLRow& url_info(i->url_info); - if ((url_info.typed_count() <= - history::kLowQualityMatchTypedLimit) && - (url_info.visit_count() <= - history::kLowQualityMatchVisitLimit) && + if ((url_info.typed_count() <= history::kLowQualityMatchTypedLimit) && + (url_info.visit_count() <= history::kLowQualityMatchVisitLimit) && (url_info.last_visit() < recent_threshold)) { i = matches->erase(i); } else { diff --git a/chrome/browser/autocomplete/history_url_provider.h b/chrome/browser/autocomplete/history_url_provider.h index 481e1d0..1a6c6f0 100644 --- a/chrome/browser/autocomplete/history_url_provider.h +++ b/chrome/browser/autocomplete/history_url_provider.h @@ -6,16 +6,18 @@ #define CHROME_BROWSER_AUTOCOMPLETE_HISTORY_URL_PROVIDER_H_ #pragma once -#include <vector> - #include "chrome/browser/autocomplete/autocomplete.h" -#include "chrome/browser/history/history_types.h" +#include "chrome/browser/autocomplete/history_provider_util.h" class MessageLoop; class Profile; namespace history { - class HistoryBackend; + +class HistoryBackend; +class URLDatabase; +class URLRow; + } // namespace history // How history autocomplete works @@ -131,21 +133,16 @@ struct HistoryURLProviderParams { // anything on destruction. class HistoryURLProvider : public AutocompleteProvider { public: - HistoryURLProvider(ACProviderListener* listener, Profile* profile) - : AutocompleteProvider(listener, profile, "HistoryURL"), - prefixes_(GetPrefixes()), - params_(NULL) { - } + HistoryURLProvider(ACProviderListener* listener, Profile* profile); #ifdef UNIT_TEST HistoryURLProvider(ACProviderListener* listener, Profile* profile, const std::wstring& languages) - : AutocompleteProvider(listener, profile, "History"), - prefixes_(GetPrefixes()), - params_(NULL), - languages_(languages) { - } + : AutocompleteProvider(listener, profile, "History"), + prefixes_(GetPrefixes()), + params_(NULL), + languages_(languages) {} #endif // no destructor (see note above) @@ -301,10 +298,9 @@ class HistoryURLProvider : public AutocompleteProvider { // input identified by |source_index|. If |source_index| or an item before // is removed, the next item will be shifted, and this allows the caller to // pick up on the next one when this happens. - size_t RemoveSubsequentMatchesOf( - history::HistoryMatches* matches, - size_t source_index, - const std::vector<GURL>& remove) const; + size_t RemoveSubsequentMatchesOf(history::HistoryMatches* matches, + size_t source_index, + const std::vector<GURL>& remove) const; // Converts a line from the database into an autocomplete match for display. AutocompleteMatch HistoryMatchToACMatch( |