OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/autocomplete/history_quick_provider.h" | 5 #include "chrome/browser/autocomplete/history_quick_provider.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 18 matching lines...) Expand all Loading... |
29 #include "chrome/browser/profiles/profile.h" | 29 #include "chrome/browser/profiles/profile.h" |
30 #include "chrome/browser/search/search.h" | 30 #include "chrome/browser/search/search.h" |
31 #include "chrome/browser/search_engines/template_url.h" | 31 #include "chrome/browser/search_engines/template_url.h" |
32 #include "chrome/browser/search_engines/template_url_service.h" | 32 #include "chrome/browser/search_engines/template_url_service.h" |
33 #include "chrome/browser/search_engines/template_url_service_factory.h" | 33 #include "chrome/browser/search_engines/template_url_service_factory.h" |
34 #include "chrome/common/autocomplete_match_type.h" | 34 #include "chrome/common/autocomplete_match_type.h" |
35 #include "chrome/common/chrome_switches.h" | 35 #include "chrome/common/chrome_switches.h" |
36 #include "chrome/common/net/url_fixer_upper.h" | 36 #include "chrome/common/net/url_fixer_upper.h" |
37 #include "chrome/common/pref_names.h" | 37 #include "chrome/common/pref_names.h" |
38 #include "chrome/common/url_constants.h" | 38 #include "chrome/common/url_constants.h" |
39 #include "components/metrics/proto/omnibox_input_type.pb.h" | |
40 #include "content/public/browser/notification_source.h" | 39 #include "content/public/browser/notification_source.h" |
41 #include "content/public/browser/notification_types.h" | 40 #include "content/public/browser/notification_types.h" |
42 #include "net/base/escape.h" | 41 #include "net/base/escape.h" |
43 #include "net/base/net_util.h" | 42 #include "net/base/net_util.h" |
44 #include "net/base/registry_controlled_domains/registry_controlled_domain.h" | 43 #include "net/base/registry_controlled_domains/registry_controlled_domain.h" |
45 #include "url/url_parse.h" | 44 #include "url/url_parse.h" |
46 #include "url/url_util.h" | 45 #include "url/url_util.h" |
47 | 46 |
48 using history::InMemoryURLIndex; | 47 using history::InMemoryURLIndex; |
49 using history::ScoredHistoryMatch; | 48 using history::ScoredHistoryMatch; |
50 using history::ScoredHistoryMatches; | 49 using history::ScoredHistoryMatches; |
51 | 50 |
52 bool HistoryQuickProvider::disabled_ = false; | 51 bool HistoryQuickProvider::disabled_ = false; |
53 | 52 |
54 HistoryQuickProvider::HistoryQuickProvider( | 53 HistoryQuickProvider::HistoryQuickProvider( |
55 AutocompleteProviderListener* listener, | 54 AutocompleteProviderListener* listener, |
56 Profile* profile) | 55 Profile* profile) |
57 : HistoryProvider(listener, profile, | 56 : HistoryProvider(listener, profile, |
58 AutocompleteProvider::TYPE_HISTORY_QUICK), | 57 AutocompleteProvider::TYPE_HISTORY_QUICK), |
59 languages_(profile_->GetPrefs()->GetString(prefs::kAcceptLanguages)) { | 58 languages_(profile_->GetPrefs()->GetString(prefs::kAcceptLanguages)) { |
60 } | 59 } |
61 | 60 |
62 void HistoryQuickProvider::Start(const AutocompleteInput& input, | 61 void HistoryQuickProvider::Start(const AutocompleteInput& input, |
63 bool minimal_changes) { | 62 bool minimal_changes) { |
64 matches_.clear(); | 63 matches_.clear(); |
65 if (disabled_) | 64 if (disabled_) |
66 return; | 65 return; |
67 | 66 |
68 // Don't bother with INVALID and FORCED_QUERY. | 67 // Don't bother with INVALID and FORCED_QUERY. |
69 if ((input.type() == metrics::OmniboxInputType::INVALID) || | 68 if ((input.type() == AutocompleteInput::INVALID) || |
70 (input.type() == metrics::OmniboxInputType::FORCED_QUERY)) | 69 (input.type() == AutocompleteInput::FORCED_QUERY)) |
71 return; | 70 return; |
72 | 71 |
73 autocomplete_input_ = input; | 72 autocomplete_input_ = input; |
74 | 73 |
75 // TODO(pkasting): We should just block here until this loads. Any time | 74 // TODO(pkasting): We should just block here until this loads. Any time |
76 // someone unloads the history backend, we'll get inconsistent inline | 75 // someone unloads the history backend, we'll get inconsistent inline |
77 // autocomplete behavior here. | 76 // autocomplete behavior here. |
78 if (GetIndex()) { | 77 if (GetIndex()) { |
79 base::TimeTicks start_time = base::TimeTicks::Now(); | 78 base::TimeTicks start_time = base::TimeTicks::Now(); |
80 DoAutocomplete(); | 79 DoAutocomplete(); |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
115 int url_what_you_typed_match_score = -1; // undefined | 114 int url_what_you_typed_match_score = -1; // undefined |
116 // These are necessary (but not sufficient) conditions for the omnibox | 115 // These are necessary (but not sufficient) conditions for the omnibox |
117 // input to be a URL-what-you-typed match. The username test checks that | 116 // input to be a URL-what-you-typed match. The username test checks that |
118 // either the username does not exist (a regular URL such as http://site/) | 117 // either the username does not exist (a regular URL such as http://site/) |
119 // or, if the username exists (http://user@site/), there must be either | 118 // or, if the username exists (http://user@site/), there must be either |
120 // a password or a port. Together these exclude pure username@site | 119 // a password or a port. Together these exclude pure username@site |
121 // inputs because these are likely to be an e-mail address. HistoryURL | 120 // inputs because these are likely to be an e-mail address. HistoryURL |
122 // provider won't promote the URL-what-you-typed match to first | 121 // provider won't promote the URL-what-you-typed match to first |
123 // for these inputs. | 122 // for these inputs. |
124 const bool can_have_url_what_you_typed_match_first = | 123 const bool can_have_url_what_you_typed_match_first = |
125 (autocomplete_input_.type() != metrics::OmniboxInputType::QUERY) && | 124 (autocomplete_input_.type() != AutocompleteInput::QUERY) && |
126 (!autocomplete_input_.parts().username.is_nonempty() || | 125 (!autocomplete_input_.parts().username.is_nonempty() || |
127 autocomplete_input_.parts().password.is_nonempty() || | 126 autocomplete_input_.parts().password.is_nonempty() || |
128 autocomplete_input_.parts().path.is_nonempty()); | 127 autocomplete_input_.parts().path.is_nonempty()); |
129 if (can_have_url_what_you_typed_match_first) { | 128 if (can_have_url_what_you_typed_match_first) { |
130 HistoryService* const history_service = | 129 HistoryService* const history_service = |
131 HistoryServiceFactory::GetForProfile(profile_, | 130 HistoryServiceFactory::GetForProfile(profile_, |
132 Profile::EXPLICIT_ACCESS); | 131 Profile::EXPLICIT_ACCESS); |
133 // We expect HistoryService to be available. In case it's not, | 132 // We expect HistoryService to be available. In case it's not, |
134 // (e.g., due to Profile corruption) we let HistoryQuick provider | 133 // (e.g., due to Profile corruption) we let HistoryQuick provider |
135 // completions (which may be available because it's a different | 134 // completions (which may be available because it's a different |
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
299 if (index_for_testing_.get()) | 298 if (index_for_testing_.get()) |
300 return index_for_testing_.get(); | 299 return index_for_testing_.get(); |
301 | 300 |
302 HistoryService* const history_service = | 301 HistoryService* const history_service = |
303 HistoryServiceFactory::GetForProfile(profile_, Profile::EXPLICIT_ACCESS); | 302 HistoryServiceFactory::GetForProfile(profile_, Profile::EXPLICIT_ACCESS); |
304 if (!history_service) | 303 if (!history_service) |
305 return NULL; | 304 return NULL; |
306 | 305 |
307 return history_service->InMemoryIndex(); | 306 return history_service->InMemoryIndex(); |
308 } | 307 } |
OLD | NEW |