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

Side by Side Diff: components/autofill/core/browser/autofill_external_delegate_unittest.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 <vector> 5 #include <vector>
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/compiler_specific.h" 8 #include "base/compiler_specific.h"
9 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "base/strings/string16.h" 10 #include "base/strings/string16.h"
11 #include "base/strings/utf_string_conversions.h" 11 #include "base/strings/utf_string_conversions.h"
12 #include "base/test/histogram_tester.h" 12 #include "base/test/histogram_tester.h"
13 #include "components/autofill/core/browser/autofill_manager.h" 13 #include "components/autofill/core/browser/autofill_manager.h"
14 #include "components/autofill/core/browser/popup_item_ids.h" 14 #include "components/autofill/core/browser/popup_item_ids.h"
15 #include "components/autofill/core/browser/suggestion_test_helpers.h"
15 #include "components/autofill/core/browser/test_autofill_client.h" 16 #include "components/autofill/core/browser/test_autofill_client.h"
16 #include "components/autofill/core/browser/test_autofill_driver.h" 17 #include "components/autofill/core/browser/test_autofill_driver.h"
17 #include "components/autofill/core/browser/test_autofill_external_delegate.h" 18 #include "components/autofill/core/browser/test_autofill_external_delegate.h"
18 #include "components/autofill/core/common/autofill_switches.h" 19 #include "components/autofill/core/common/autofill_switches.h"
19 #include "components/autofill/core/common/form_data.h" 20 #include "components/autofill/core/common/form_data.h"
20 #include "components/autofill/core/common/form_field_data.h" 21 #include "components/autofill/core/common/form_field_data.h"
21 #include "components/autofill/core/common/password_form_fill_data.h" 22 #include "components/autofill/core/common/password_form_fill_data.h"
22 #include "testing/gmock/include/gmock/gmock.h" 23 #include "testing/gmock/include/gmock/gmock.h"
23 #include "testing/gtest/include/gtest/gtest.h" 24 #include "testing/gtest/include/gtest/gtest.h"
24 #include "ui/gfx/rect.h" 25 #include "ui/gfx/rect.h"
(...skipping 27 matching lines...) Expand all
52 DISALLOW_COPY_AND_ASSIGN(MockAutofillDriver); 53 DISALLOW_COPY_AND_ASSIGN(MockAutofillDriver);
53 }; 54 };
54 55
55 class MockAutofillClient : public autofill::TestAutofillClient { 56 class MockAutofillClient : public autofill::TestAutofillClient {
56 public: 57 public:
57 MockAutofillClient() {} 58 MockAutofillClient() {}
58 59
59 MOCK_METHOD1(ScanCreditCard, 60 MOCK_METHOD1(ScanCreditCard,
60 void(const CreditCardScanCallback& callbacK)); 61 void(const CreditCardScanCallback& callbacK));
61 62
62 MOCK_METHOD7(ShowAutofillPopup, 63 MOCK_METHOD4(ShowAutofillPopup,
63 void(const gfx::RectF& element_bounds, 64 void(const gfx::RectF& element_bounds,
64 base::i18n::TextDirection text_direction, 65 base::i18n::TextDirection text_direction,
65 const std::vector<base::string16>& values, 66 const std::vector<Suggestion>& suggestions,
66 const std::vector<base::string16>& labels,
67 const std::vector<base::string16>& icons,
68 const std::vector<int>& identifiers,
69 base::WeakPtr<AutofillPopupDelegate> delegate)); 67 base::WeakPtr<AutofillPopupDelegate> delegate));
70 68
71 MOCK_METHOD2(UpdateAutofillPopupDataListValues, 69 MOCK_METHOD2(UpdateAutofillPopupDataListValues,
72 void(const std::vector<base::string16>& values, 70 void(const std::vector<base::string16>& values,
73 const std::vector<base::string16>& lables)); 71 const std::vector<base::string16>& lables));
74 72
75 MOCK_METHOD0(HideAutofillPopup, void()); 73 MOCK_METHOD0(HideAutofillPopup, void());
76 74
77 private: 75 private:
78 DISALLOW_COPY_AND_ASSIGN(MockAutofillClient); 76 DISALLOW_COPY_AND_ASSIGN(MockAutofillClient);
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 const FormData form; 130 const FormData form;
133 FormFieldData field; 131 FormFieldData field;
134 field.is_focusable = true; 132 field.is_focusable = true;
135 field.should_autocomplete = true; 133 field.should_autocomplete = true;
136 const gfx::RectF element_bounds; 134 const gfx::RectF element_bounds;
137 135
138 external_delegate_->OnQuery(query_id, form, field, element_bounds, true); 136 external_delegate_->OnQuery(query_id, form, field, element_bounds, true);
139 } 137 }
140 138
141 void IssueOnSuggestionsReturned() { 139 void IssueOnSuggestionsReturned() {
142 std::vector<base::string16> autofill_item; 140 std::vector<Suggestion> suggestions;
143 autofill_item.push_back(base::string16()); 141 suggestions.push_back(Suggestion());
144 std::vector<int> autofill_ids; 142 suggestions[0].frontend_id = kAutofillProfileId;
145 autofill_ids.push_back(kAutofillProfileId); 143 external_delegate_->OnSuggestionsReturned(kQueryId, suggestions);
146 external_delegate_->OnSuggestionsReturned(
147 kQueryId, autofill_item, autofill_item, autofill_item, autofill_ids);
148 } 144 }
149 145
150 testing::NiceMock<MockAutofillClient> autofill_client_; 146 testing::NiceMock<MockAutofillClient> autofill_client_;
151 scoped_ptr<testing::NiceMock<MockAutofillDriver>> autofill_driver_; 147 scoped_ptr<testing::NiceMock<MockAutofillDriver>> autofill_driver_;
152 scoped_ptr<MockAutofillManager> autofill_manager_; 148 scoped_ptr<MockAutofillManager> autofill_manager_;
153 scoped_ptr<AutofillExternalDelegate> external_delegate_; 149 scoped_ptr<AutofillExternalDelegate> external_delegate_;
154 150
155 base::MessageLoop message_loop_; 151 base::MessageLoop message_loop_;
156 }; 152 };
157 153
158 // Test that our external delegate called the virtual methods at the right time. 154 // Test that our external delegate called the virtual methods at the right time.
159 TEST_F(AutofillExternalDelegateUnitTest, TestExternalDelegateVirtualCalls) { 155 TEST_F(AutofillExternalDelegateUnitTest, TestExternalDelegateVirtualCalls) {
160 IssueOnQuery(kQueryId); 156 IssueOnQuery(kQueryId);
161 157
162 // The enums must be cast to ints to prevent compile errors on linux_rel. 158 // The enums must be cast to ints to prevent compile errors on linux_rel.
163 EXPECT_CALL( 159 EXPECT_CALL(
164 autofill_client_, 160 autofill_client_,
165 ShowAutofillPopup(_, 161 ShowAutofillPopup(_,
166 _, 162 _,
167 _, 163 SuggestionVectorIdsAre(testing::ElementsAre(
168 _,
169 _,
170 testing::ElementsAre(
171 kAutofillProfileId, 164 kAutofillProfileId,
172 static_cast<int>(POPUP_ITEM_ID_SEPARATOR), 165 static_cast<int>(POPUP_ITEM_ID_SEPARATOR),
173 static_cast<int>(POPUP_ITEM_ID_AUTOFILL_OPTIONS)), 166 static_cast<int>(POPUP_ITEM_ID_AUTOFILL_OPTIONS))),
174 _)); 167 _));
175 168
176 // This should call ShowAutofillPopup. 169 // This should call ShowAutofillPopup.
177 std::vector<base::string16> autofill_item; 170 std::vector<Suggestion> autofill_item;
178 autofill_item.push_back(base::string16()); 171 autofill_item.push_back(Suggestion());
179 std::vector<int> autofill_ids; 172 autofill_item[0].frontend_id = kAutofillProfileId;
180 autofill_ids.push_back(kAutofillProfileId); 173 external_delegate_->OnSuggestionsReturned(kQueryId, autofill_item);
181 external_delegate_->OnSuggestionsReturned(kQueryId,
182 autofill_item,
183 autofill_item,
184 autofill_item,
185 autofill_ids);
186 174
187 EXPECT_CALL(*autofill_manager_, 175 EXPECT_CALL(*autofill_manager_,
188 FillOrPreviewForm( 176 FillOrPreviewForm(
189 AutofillDriver::FORM_DATA_ACTION_FILL, _, _, _, _)); 177 AutofillDriver::FORM_DATA_ACTION_FILL, _, _, _, _));
190 EXPECT_CALL(autofill_client_, HideAutofillPopup()); 178 EXPECT_CALL(autofill_client_, HideAutofillPopup());
191 179
192 // This should trigger a call to hide the popup since we've selected an 180 // This should trigger a call to hide the popup since we've selected an
193 // option. 181 // option.
194 external_delegate_->DidAcceptSuggestion(autofill_item[0], autofill_ids[0]); 182 external_delegate_->DidAcceptSuggestion(autofill_item[0].value,
183 autofill_item[0].frontend_id);
195 } 184 }
196 185
197 // Test that data list elements for a node will appear in the Autofill popup. 186 // Test that data list elements for a node will appear in the Autofill popup.
198 TEST_F(AutofillExternalDelegateUnitTest, ExternalDelegateDataList) { 187 TEST_F(AutofillExternalDelegateUnitTest, ExternalDelegateDataList) {
199 IssueOnQuery(kQueryId); 188 IssueOnQuery(kQueryId);
200 189
201 std::vector<base::string16> data_list_items; 190 std::vector<base::string16> data_list_items;
202 data_list_items.push_back(base::string16()); 191 data_list_items.push_back(base::string16());
203 192
204 EXPECT_CALL( 193 EXPECT_CALL(
205 autofill_client_, 194 autofill_client_,
206 UpdateAutofillPopupDataListValues(data_list_items, data_list_items)); 195 UpdateAutofillPopupDataListValues(data_list_items, data_list_items));
207 196
208 external_delegate_->SetCurrentDataListValues(data_list_items, 197 external_delegate_->SetCurrentDataListValues(data_list_items,
209 data_list_items); 198 data_list_items);
210 199
211 // The enums must be cast to ints to prevent compile errors on linux_rel. 200 // The enums must be cast to ints to prevent compile errors on linux_rel.
212 EXPECT_CALL( 201 EXPECT_CALL(
213 autofill_client_, 202 autofill_client_,
214 ShowAutofillPopup(_, 203 ShowAutofillPopup(_,
215 _, 204 _,
216 _, 205 SuggestionVectorIdsAre(testing::ElementsAre(
217 _,
218 _,
219 testing::ElementsAre(
220 static_cast<int>(POPUP_ITEM_ID_DATALIST_ENTRY), 206 static_cast<int>(POPUP_ITEM_ID_DATALIST_ENTRY),
221 static_cast<int>(POPUP_ITEM_ID_SEPARATOR), 207 static_cast<int>(POPUP_ITEM_ID_SEPARATOR),
222 kAutofillProfileId, 208 kAutofillProfileId,
223 static_cast<int>(POPUP_ITEM_ID_SEPARATOR), 209 static_cast<int>(POPUP_ITEM_ID_SEPARATOR),
224 static_cast<int>(POPUP_ITEM_ID_AUTOFILL_OPTIONS)), 210 static_cast<int>(POPUP_ITEM_ID_AUTOFILL_OPTIONS))),
225 _)); 211 _));
226 212
227 // This should call ShowAutofillPopup. 213 // This should call ShowAutofillPopup.
228 std::vector<base::string16> autofill_item; 214 std::vector<Suggestion> autofill_item;
229 autofill_item.push_back(base::string16()); 215 autofill_item.push_back(Suggestion());
230 std::vector<int> autofill_ids; 216 autofill_item[0].frontend_id = kAutofillProfileId;
231 autofill_ids.push_back(kAutofillProfileId); 217 external_delegate_->OnSuggestionsReturned(kQueryId, autofill_item);
232 external_delegate_->OnSuggestionsReturned(kQueryId,
233 autofill_item,
234 autofill_item,
235 autofill_item,
236 autofill_ids);
237 218
238 // Try calling OnSuggestionsReturned with no Autofill values and ensure 219 // Try calling OnSuggestionsReturned with no Autofill values and ensure
239 // the datalist items are still shown. 220 // the datalist items are still shown.
240 // The enum must be cast to an int to prevent compile errors on linux_rel. 221 // The enum must be cast to an int to prevent compile errors on linux_rel.
241 EXPECT_CALL( 222 EXPECT_CALL(
242 autofill_client_, 223 autofill_client_,
243 ShowAutofillPopup( 224 ShowAutofillPopup(
244 _, 225 _,
245 _, 226 _,
246 _, 227 SuggestionVectorIdsAre(testing::ElementsAre(
247 _, 228 static_cast<int>(POPUP_ITEM_ID_DATALIST_ENTRY))),
248 _,
249 testing::ElementsAre(static_cast<int>(POPUP_ITEM_ID_DATALIST_ENTRY)),
250 _)); 229 _));
251 230
252 autofill_item = std::vector<base::string16>(); 231 autofill_item.clear();
253 autofill_ids = std::vector<int>(); 232 external_delegate_->OnSuggestionsReturned(kQueryId, autofill_item);
254 external_delegate_->OnSuggestionsReturned(kQueryId,
255 autofill_item,
256 autofill_item,
257 autofill_item,
258 autofill_ids);
259 } 233 }
260 234
261 // Test that datalist values can get updated while a popup is showing. 235 // Test that datalist values can get updated while a popup is showing.
262 TEST_F(AutofillExternalDelegateUnitTest, UpdateDataListWhileShowingPopup) { 236 TEST_F(AutofillExternalDelegateUnitTest, UpdateDataListWhileShowingPopup) {
263 IssueOnQuery(kQueryId); 237 IssueOnQuery(kQueryId);
264 238
265 EXPECT_CALL(autofill_client_, ShowAutofillPopup(_, _, _, _, _, _, _)) 239 EXPECT_CALL(autofill_client_, ShowAutofillPopup(_, _, _, _))
266 .Times(0); 240 .Times(0);
267 241
268 // Make sure just setting the data list values doesn't cause the popup to 242 // Make sure just setting the data list values doesn't cause the popup to
269 // appear. 243 // appear.
270 std::vector<base::string16> data_list_items; 244 std::vector<base::string16> data_list_items;
271 data_list_items.push_back(base::string16()); 245 data_list_items.push_back(base::string16());
272 246
273 EXPECT_CALL( 247 EXPECT_CALL(
274 autofill_client_, 248 autofill_client_,
275 UpdateAutofillPopupDataListValues(data_list_items, data_list_items)); 249 UpdateAutofillPopupDataListValues(data_list_items, data_list_items));
276 250
277 external_delegate_->SetCurrentDataListValues(data_list_items, 251 external_delegate_->SetCurrentDataListValues(data_list_items,
278 data_list_items); 252 data_list_items);
279 253
280 // The enums must be cast to ints to prevent compile errors on linux_rel. 254 // The enums must be cast to ints to prevent compile errors on linux_rel.
281 EXPECT_CALL( 255 EXPECT_CALL(
282 autofill_client_, 256 autofill_client_,
283 ShowAutofillPopup(_, 257 ShowAutofillPopup(_,
284 _, 258 _,
285 _, 259 SuggestionVectorIdsAre(testing::ElementsAre(
286 _,
287 _,
288 testing::ElementsAre(
289 static_cast<int>(POPUP_ITEM_ID_DATALIST_ENTRY), 260 static_cast<int>(POPUP_ITEM_ID_DATALIST_ENTRY),
290 static_cast<int>(POPUP_ITEM_ID_SEPARATOR), 261 static_cast<int>(POPUP_ITEM_ID_SEPARATOR),
291 kAutofillProfileId, 262 kAutofillProfileId,
292 static_cast<int>(POPUP_ITEM_ID_SEPARATOR), 263 static_cast<int>(POPUP_ITEM_ID_SEPARATOR),
293 static_cast<int>(POPUP_ITEM_ID_AUTOFILL_OPTIONS)), 264 static_cast<int>(POPUP_ITEM_ID_AUTOFILL_OPTIONS))),
294 _)); 265 _));
295 266
296 // Ensure the popup is displayed. 267 // Ensure the popup is displayed.
297 std::vector<base::string16> autofill_item; 268 std::vector<Suggestion> autofill_item;
298 autofill_item.push_back(base::string16()); 269 autofill_item.push_back(Suggestion());
299 std::vector<int> autofill_ids; 270 autofill_item[0].frontend_id = kAutofillProfileId;
300 autofill_ids.push_back(kAutofillProfileId); 271 external_delegate_->OnSuggestionsReturned(kQueryId, autofill_item);
301 external_delegate_->OnSuggestionsReturned(kQueryId,
302 autofill_item,
303 autofill_item,
304 autofill_item,
305 autofill_ids);
306 272
307 // This would normally get called from ShowAutofillPopup, but it is mocked so 273 // This would normally get called from ShowAutofillPopup, but it is mocked so
308 // we need to call OnPopupShown ourselves. 274 // we need to call OnPopupShown ourselves.
309 external_delegate_->OnPopupShown(); 275 external_delegate_->OnPopupShown();
310 276
311 // Update the current data list and ensure the popup is updated. 277 // Update the current data list and ensure the popup is updated.
312 data_list_items.push_back(base::string16()); 278 data_list_items.push_back(base::string16());
313 279
314 // The enums must be cast to ints to prevent compile errors on linux_rel. 280 // The enums must be cast to ints to prevent compile errors on linux_rel.
315 EXPECT_CALL( 281 EXPECT_CALL(
316 autofill_client_, 282 autofill_client_,
317 UpdateAutofillPopupDataListValues(data_list_items, data_list_items)); 283 UpdateAutofillPopupDataListValues(data_list_items, data_list_items));
318 284
319 external_delegate_->SetCurrentDataListValues(data_list_items, 285 external_delegate_->SetCurrentDataListValues(data_list_items,
320 data_list_items); 286 data_list_items);
321 } 287 }
322 288
323 // Test that the Autofill popup is able to display warnings explaining why 289 // Test that the Autofill popup is able to display warnings explaining why
324 // Autofill is disabled for a website. 290 // Autofill is disabled for a website.
325 // Regression test for http://crbug.com/247880 291 // Regression test for http://crbug.com/247880
326 TEST_F(AutofillExternalDelegateUnitTest, AutofillWarnings) { 292 TEST_F(AutofillExternalDelegateUnitTest, AutofillWarnings) {
327 IssueOnQuery(kQueryId); 293 IssueOnQuery(kQueryId);
328 294
329 // The enums must be cast to ints to prevent compile errors on linux_rel. 295 // The enums must be cast to ints to prevent compile errors on linux_rel.
330 EXPECT_CALL( 296 EXPECT_CALL(
331 autofill_client_, 297 autofill_client_,
332 ShowAutofillPopup( 298 ShowAutofillPopup(
333 _, 299 _,
334 _, 300 _,
335 _, 301 SuggestionVectorIdsAre(testing::ElementsAre(
336 _, 302 static_cast<int>(POPUP_ITEM_ID_WARNING_MESSAGE))),
337 _,
338 testing::ElementsAre(static_cast<int>(POPUP_ITEM_ID_WARNING_MESSAGE)),
339 _)); 303 _));
340 304
341 // This should call ShowAutofillPopup. 305 // This should call ShowAutofillPopup.
342 std::vector<base::string16> autofill_item; 306 std::vector<Suggestion> autofill_item;
343 autofill_item.push_back(base::string16()); 307 autofill_item.push_back(Suggestion());
344 std::vector<int> autofill_ids; 308 autofill_item[0].frontend_id = POPUP_ITEM_ID_WARNING_MESSAGE;
345 autofill_ids.push_back(POPUP_ITEM_ID_WARNING_MESSAGE); 309 external_delegate_->OnSuggestionsReturned(kQueryId, autofill_item);
346 external_delegate_->OnSuggestionsReturned(kQueryId,
347 autofill_item,
348 autofill_item,
349 autofill_item,
350 autofill_ids);
351 } 310 }
352 311
353 // Test that the Autofill popup doesn't display a warning explaining why 312 // Test that the Autofill popup doesn't display a warning explaining why
354 // Autofill is disabled for a website when there are no Autofill suggestions. 313 // Autofill is disabled for a website when there are no Autofill suggestions.
355 // Regression test for http://crbug.com/105636 314 // Regression test for http://crbug.com/105636
356 TEST_F(AutofillExternalDelegateUnitTest, NoAutofillWarningsWithoutSuggestions) { 315 TEST_F(AutofillExternalDelegateUnitTest, NoAutofillWarningsWithoutSuggestions) {
357 // This test only makes sense if we're respecting autocomplete="off". 316 // This test only makes sense if we're respecting autocomplete="off".
358 if (!base::CommandLine::ForCurrentProcess()->HasSwitch( 317 if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
359 switches::kRespectAutocompleteOffForAutofill)) 318 switches::kRespectAutocompleteOffForAutofill))
360 return; 319 return;
361 320
362 const FormData form; 321 const FormData form;
363 FormFieldData field; 322 FormFieldData field;
364 field.is_focusable = true; 323 field.is_focusable = true;
365 field.should_autocomplete = false; 324 field.should_autocomplete = false;
366 const gfx::RectF element_bounds; 325 const gfx::RectF element_bounds;
367 326
368 external_delegate_->OnQuery(kQueryId, form, field, element_bounds, true); 327 external_delegate_->OnQuery(kQueryId, form, field, element_bounds, true);
369 328
370 EXPECT_CALL(autofill_client_, ShowAutofillPopup(_, _, _, _, _, _, _)) 329 EXPECT_CALL(autofill_client_, ShowAutofillPopup(_, _, _, _))
371 .Times(0); 330 .Times(0);
372 EXPECT_CALL(autofill_client_, HideAutofillPopup()).Times(1); 331 EXPECT_CALL(autofill_client_, HideAutofillPopup()).Times(1);
373 332
374 // This should not call ShowAutofillPopup. 333 // This should not call ShowAutofillPopup.
375 std::vector<base::string16> autofill_item; 334 std::vector<Suggestion> autofill_item;
376 autofill_item.push_back(base::string16()); 335 autofill_item.push_back(Suggestion());
377 std::vector<int> autofill_ids; 336 autofill_item[0].frontend_id = POPUP_ITEM_ID_AUTOCOMPLETE_ENTRY;
378 autofill_ids.push_back(POPUP_ITEM_ID_AUTOCOMPLETE_ENTRY); 337 external_delegate_->OnSuggestionsReturned(kQueryId, autofill_item);
379 external_delegate_->OnSuggestionsReturned(kQueryId,
380 autofill_item,
381 autofill_item,
382 autofill_item,
383 autofill_ids);
384 } 338 }
385 339
386 // Test that the Autofill delegate doesn't try and fill a form with a 340 // Test that the Autofill delegate doesn't try and fill a form with a
387 // negative unique id. 341 // negative unique id.
388 TEST_F(AutofillExternalDelegateUnitTest, ExternalDelegateInvalidUniqueId) { 342 TEST_F(AutofillExternalDelegateUnitTest, ExternalDelegateInvalidUniqueId) {
389 // Ensure it doesn't try to preview the negative id. 343 // Ensure it doesn't try to preview the negative id.
390 EXPECT_CALL(*autofill_manager_, FillOrPreviewForm(_, _, _, _, _)).Times(0); 344 EXPECT_CALL(*autofill_manager_, FillOrPreviewForm(_, _, _, _, _)).Times(0);
391 EXPECT_CALL(*autofill_driver_, RendererShouldClearPreviewedForm()).Times(1); 345 EXPECT_CALL(*autofill_driver_, RendererShouldClearPreviewedForm()).Times(1);
392 external_delegate_->DidSelectSuggestion(base::string16(), -1); 346 external_delegate_->DidSelectSuggestion(base::string16(), -1);
393 347
(...skipping 22 matching lines...) Expand all
416 EXPECT_CALL(*autofill_driver_, RendererShouldClearPreviewedForm()).Times(1); 370 EXPECT_CALL(*autofill_driver_, RendererShouldClearPreviewedForm()).Times(1);
417 EXPECT_CALL(*autofill_driver_, RendererShouldPreviewFieldWithValue( 371 EXPECT_CALL(*autofill_driver_, RendererShouldPreviewFieldWithValue(
418 ASCIIToUTF16("baz foo"))); 372 ASCIIToUTF16("baz foo")));
419 external_delegate_->DidSelectSuggestion(ASCIIToUTF16("baz foo"), 373 external_delegate_->DidSelectSuggestion(ASCIIToUTF16("baz foo"),
420 POPUP_ITEM_ID_AUTOCOMPLETE_ENTRY); 374 POPUP_ITEM_ID_AUTOCOMPLETE_ENTRY);
421 } 375 }
422 376
423 // Test that the popup is hidden once we are done editing the autofill field. 377 // Test that the popup is hidden once we are done editing the autofill field.
424 TEST_F(AutofillExternalDelegateUnitTest, 378 TEST_F(AutofillExternalDelegateUnitTest,
425 ExternalDelegateHidePopupAfterEditing) { 379 ExternalDelegateHidePopupAfterEditing) {
426 EXPECT_CALL(autofill_client_, ShowAutofillPopup(_, _, _, _, _, _, _)); 380 EXPECT_CALL(autofill_client_, ShowAutofillPopup(_, _, _, _));
427 autofill::GenerateTestAutofillPopup(external_delegate_.get()); 381 autofill::GenerateTestAutofillPopup(external_delegate_.get());
428 382
429 EXPECT_CALL(autofill_client_, HideAutofillPopup()); 383 EXPECT_CALL(autofill_client_, HideAutofillPopup());
430 external_delegate_->DidEndTextFieldEditing(); 384 external_delegate_->DidEndTextFieldEditing();
431 } 385 }
432 386
433 // Test that the driver is directed to accept the data list after being notified 387 // Test that the driver is directed to accept the data list after being notified
434 // that the user accepted the data list suggestion. 388 // that the user accepted the data list suggestion.
435 TEST_F(AutofillExternalDelegateUnitTest, ExternalDelegateAcceptSuggestion) { 389 TEST_F(AutofillExternalDelegateUnitTest, ExternalDelegateAcceptSuggestion) {
436 EXPECT_CALL(autofill_client_, HideAutofillPopup()); 390 EXPECT_CALL(autofill_client_, HideAutofillPopup());
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
539 493
540 // Set up a field that shouldn't get autocompleted or display warnings. 494 // Set up a field that shouldn't get autocompleted or display warnings.
541 const FormData form; 495 const FormData form;
542 FormFieldData field; 496 FormFieldData field;
543 field.is_focusable = true; 497 field.is_focusable = true;
544 field.should_autocomplete = false; 498 field.should_autocomplete = false;
545 const gfx::RectF element_bounds; 499 const gfx::RectF element_bounds;
546 500
547 external_delegate_->OnQuery(kQueryId, form, field, element_bounds, false); 501 external_delegate_->OnQuery(kQueryId, form, field, element_bounds, false);
548 502
549 std::vector<base::string16> autofill_items; 503 std::vector<Suggestion> autofill_items;
550 autofill_items.push_back(base::string16()); 504 autofill_items.push_back(Suggestion());
551 std::vector<int> autofill_ids; 505 autofill_items[0].frontend_id = POPUP_ITEM_ID_AUTOCOMPLETE_ENTRY;
552 autofill_ids.push_back(POPUP_ITEM_ID_AUTOCOMPLETE_ENTRY);
553 506
554 // Ensure the popup tries to hide itself, since it is not allowed to show 507 // Ensure the popup tries to hide itself, since it is not allowed to show
555 // anything. 508 // anything.
556 EXPECT_CALL(autofill_client_, HideAutofillPopup()); 509 EXPECT_CALL(autofill_client_, HideAutofillPopup());
557 510
558 external_delegate_->OnSuggestionsReturned(kQueryId, 511 external_delegate_->OnSuggestionsReturned(kQueryId, autofill_items);
559 autofill_items,
560 autofill_items,
561 autofill_items,
562 autofill_ids);
563 } 512 }
564 513
565 TEST_F(AutofillExternalDelegateUnitTest, IgnoreAutocompleteOffForAutofill) { 514 TEST_F(AutofillExternalDelegateUnitTest, IgnoreAutocompleteOffForAutofill) {
566 const FormData form; 515 const FormData form;
567 FormFieldData field; 516 FormFieldData field;
568 field.is_focusable = true; 517 field.is_focusable = true;
569 field.should_autocomplete = false; 518 field.should_autocomplete = false;
570 const gfx::RectF element_bounds; 519 const gfx::RectF element_bounds;
571 520
572 external_delegate_->OnQuery(kQueryId, form, field, element_bounds, false); 521 external_delegate_->OnQuery(kQueryId, form, field, element_bounds, false);
573 522
574 std::vector<base::string16> autofill_items; 523 std::vector<Suggestion> autofill_items;
575 autofill_items.push_back(base::string16()); 524 autofill_items.push_back(Suggestion());
576 std::vector<int> autofill_ids; 525 autofill_items[0].frontend_id = POPUP_ITEM_ID_AUTOCOMPLETE_ENTRY;
577 autofill_ids.push_back(POPUP_ITEM_ID_AUTOCOMPLETE_ENTRY);
578 526
579 // Ensure the popup tries to show itself, despite autocomplete="off". 527 // Ensure the popup tries to show itself, despite autocomplete="off".
580 EXPECT_CALL(autofill_client_, ShowAutofillPopup(_, _, _, _, _, _, _)); 528 EXPECT_CALL(autofill_client_, ShowAutofillPopup(_, _, _, _));
581 EXPECT_CALL(autofill_client_, HideAutofillPopup()).Times(0); 529 EXPECT_CALL(autofill_client_, HideAutofillPopup()).Times(0);
582 530
583 external_delegate_->OnSuggestionsReturned(kQueryId, 531 external_delegate_->OnSuggestionsReturned(kQueryId, autofill_items);
584 autofill_items,
585 autofill_items,
586 autofill_items,
587 autofill_ids);
588 } 532 }
589 533
590 TEST_F(AutofillExternalDelegateUnitTest, ExternalDelegateFillFieldWithValue) { 534 TEST_F(AutofillExternalDelegateUnitTest, ExternalDelegateFillFieldWithValue) {
591 EXPECT_CALL(autofill_client_, HideAutofillPopup()); 535 EXPECT_CALL(autofill_client_, HideAutofillPopup());
592 base::string16 dummy_string(ASCIIToUTF16("baz foo")); 536 base::string16 dummy_string(ASCIIToUTF16("baz foo"));
593 EXPECT_CALL(*autofill_driver_, 537 EXPECT_CALL(*autofill_driver_,
594 RendererShouldFillFieldWithValue(dummy_string)); 538 RendererShouldFillFieldWithValue(dummy_string));
595 external_delegate_->DidAcceptSuggestion(dummy_string, 539 external_delegate_->DidAcceptSuggestion(dummy_string,
596 POPUP_ITEM_ID_AUTOCOMPLETE_ENTRY); 540 POPUP_ITEM_ID_AUTOCOMPLETE_ENTRY);
597 } 541 }
598 542
599 } // namespace autofill 543 } // namespace autofill
OLDNEW
« no previous file with comments | « components/autofill/core/browser/autofill_external_delegate.cc ('k') | components/autofill/core/browser/autofill_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698