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