Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(110)

Side by Side Diff: components/autofill/core/browser/autocomplete_history_manager.cc

Issue 772253003: Create an autofill Suggestion class (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: merge Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "components/autofill/core/browser/autocomplete_history_manager.h" 5 #include "components/autofill/core/browser/autocomplete_history_manager.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/prefs/pref_service.h" 9 #include "base/prefs/pref_service.h"
10 #include "base/strings/string16.h" 10 #include "base/strings/string16.h"
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 static_cast<const WDResult<std::vector<base::string16> >*>(result); 75 static_cast<const WDResult<std::vector<base::string16> >*>(result);
76 std::vector<base::string16> suggestions = autofill_result->GetValue(); 76 std::vector<base::string16> suggestions = autofill_result->GetValue();
77 SendSuggestions(&suggestions); 77 SendSuggestions(&suggestions);
78 } 78 }
79 79
80 void AutocompleteHistoryManager::OnGetAutocompleteSuggestions( 80 void AutocompleteHistoryManager::OnGetAutocompleteSuggestions(
81 int query_id, 81 int query_id,
82 const base::string16& name, 82 const base::string16& name,
83 const base::string16& prefix, 83 const base::string16& prefix,
84 const std::string& form_control_type, 84 const std::string& form_control_type,
85 const std::vector<base::string16>& autofill_values, 85 const std::vector<Suggestion>& suggestions) {
86 const std::vector<base::string16>& autofill_labels,
87 const std::vector<base::string16>& autofill_icons,
88 const std::vector<int>& autofill_unique_ids) {
89 CancelPendingQuery(); 86 CancelPendingQuery();
90 87
91 query_id_ = query_id; 88 query_id_ = query_id;
92 autofill_values_ = autofill_values; 89 autofill_suggestions_ = suggestions;
93 autofill_labels_ = autofill_labels;
94 autofill_icons_ = autofill_icons;
95 autofill_unique_ids_ = autofill_unique_ids;
96 if (!autofill_client_->IsAutocompleteEnabled() || 90 if (!autofill_client_->IsAutocompleteEnabled() ||
97 form_control_type == "textarea") { 91 form_control_type == "textarea") {
98 SendSuggestions(NULL); 92 SendSuggestions(NULL);
99 return; 93 return;
100 } 94 }
101 95
102 if (database_.get()) { 96 if (database_.get()) {
103 pending_query_handle_ = database_->GetFormValuesForElementName( 97 pending_query_handle_ = database_->GetFormValuesForElementName(
104 name, prefix, kMaxAutocompleteMenuItems, this); 98 name, prefix, kMaxAutocompleteMenuItems, this);
105 } 99 }
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
154 148
155 void AutocompleteHistoryManager::CancelPendingQuery() { 149 void AutocompleteHistoryManager::CancelPendingQuery() {
156 if (pending_query_handle_) { 150 if (pending_query_handle_) {
157 if (database_.get()) 151 if (database_.get())
158 database_->CancelRequest(pending_query_handle_); 152 database_->CancelRequest(pending_query_handle_);
159 pending_query_handle_ = 0; 153 pending_query_handle_ = 0;
160 } 154 }
161 } 155 }
162 156
163 void AutocompleteHistoryManager::SendSuggestions( 157 void AutocompleteHistoryManager::SendSuggestions(
164 const std::vector<base::string16>* suggestions) { 158 const std::vector<base::string16>* autocomplete_results) {
165 if (suggestions) { 159 if (autocomplete_results) {
166 // Combine Autofill and Autocomplete values into values and labels. 160 // Combine Autofill and Autocomplete values into values and labels.
167 for (size_t i = 0; i < suggestions->size(); ++i) { 161 for (const auto& new_result : *autocomplete_results) {
168 bool unique = true; 162 bool unique = true;
169 for (size_t j = 0; j < autofill_values_.size(); ++j) { 163 for (const auto& autofill_suggestion : autofill_suggestions_) {
170 // Don't add duplicate values. 164 // Don't add duplicate values.
171 if (autofill_values_[j] == (*suggestions)[i]) { 165 if (new_result == autofill_suggestion.value) {
172 unique = false; 166 unique = false;
173 break; 167 break;
174 } 168 }
175 } 169 }
176 170
177 if (unique) { 171 if (unique)
178 autofill_values_.push_back((*suggestions)[i]); 172 autofill_suggestions_.push_back(Suggestion(new_result));
179 autofill_labels_.push_back(base::string16());
180 autofill_icons_.push_back(base::string16());
181 autofill_unique_ids_.push_back(0); // 0 means no profile.
182 }
183 } 173 }
184 } 174 }
185 175
186 external_delegate_->OnSuggestionsReturned(query_id_, 176 external_delegate_->OnSuggestionsReturned(query_id_, autofill_suggestions_);
187 autofill_values_,
188 autofill_labels_,
189 autofill_icons_,
190 autofill_unique_ids_);
191 177
192 query_id_ = 0; 178 query_id_ = 0;
193 autofill_values_.clear(); 179 autofill_suggestions_.clear();
194 autofill_labels_.clear();
195 autofill_icons_.clear();
196 autofill_unique_ids_.clear();
197 } 180 }
198 181
199 } // namespace autofill 182 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698