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

Side by Side Diff: chrome/browser/ui/autofill/autofill_popup_controller_unittest.cc

Issue 159853003: Moving the autofill enum from blink side to browser side (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 6 years, 10 months 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 (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 "base/memory/scoped_ptr.h" 5 #include "base/memory/scoped_ptr.h"
6 #include "base/memory/weak_ptr.h" 6 #include "base/memory/weak_ptr.h"
7 #include "base/prefs/pref_service.h" 7 #include "base/prefs/pref_service.h"
8 #include "base/strings/utf_string_conversions.h" 8 #include "base/strings/utf_string_conversions.h"
9 #include "chrome/browser/ui/autofill/autofill_popup_controller_impl.h" 9 #include "chrome/browser/ui/autofill/autofill_popup_controller_impl.h"
10 #include "chrome/browser/ui/autofill/autofill_popup_view.h" 10 #include "chrome/browser/ui/autofill/autofill_popup_view.h"
11 #include "chrome/browser/ui/autofill/popup_constants.h" 11 #include "chrome/browser/ui/autofill/popup_constants.h"
12 #include "chrome/browser/ui/autofill/test_popup_controller_common.h" 12 #include "chrome/browser/ui/autofill/test_popup_controller_common.h"
13 #include "chrome/test/base/chrome_render_view_host_test_harness.h" 13 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
14 #include "chrome/test/base/testing_profile.h" 14 #include "chrome/test/base/testing_profile.h"
15 #include "components/autofill/content/browser/autofill_driver_impl.h" 15 #include "components/autofill/content/browser/autofill_driver_impl.h"
16 #include "components/autofill/core/browser/autofill_external_delegate.h" 16 #include "components/autofill/core/browser/autofill_external_delegate.h"
17 #include "components/autofill/core/browser/autofill_manager.h" 17 #include "components/autofill/core/browser/autofill_manager.h"
18 #include "components/autofill/core/browser/autofill_test_utils.h" 18 #include "components/autofill/core/browser/autofill_test_utils.h"
19 #include "components/autofill/core/browser/popup_item_ids.h"
19 #include "components/autofill/core/browser/test_autofill_external_delegate.h" 20 #include "components/autofill/core/browser/test_autofill_external_delegate.h"
20 #include "components/autofill/core/browser/test_autofill_manager_delegate.h" 21 #include "components/autofill/core/browser/test_autofill_manager_delegate.h"
21 #include "grit/webkit_resources.h" 22 #include "grit/webkit_resources.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 "third_party/WebKit/public/web/WebAutofillClient.h"
25 #include "ui/base/resource/resource_bundle.h" 25 #include "ui/base/resource/resource_bundle.h"
26 #include "ui/gfx/display.h" 26 #include "ui/gfx/display.h"
27 #include "ui/gfx/rect.h" 27 #include "ui/gfx/rect.h"
28 #include "ui/gfx/text_utils.h" 28 #include "ui/gfx/text_utils.h"
29 29
30 using ::testing::_; 30 using ::testing::_;
31 using ::testing::AtLeast; 31 using ::testing::AtLeast;
32 using ::testing::NiceMock; 32 using ::testing::NiceMock;
33 using base::ASCIIToUTF16; 33 using base::ASCIIToUTF16;
34 using base::WeakPtr; 34 using base::WeakPtr;
35 using blink::WebAutofillClient;
36 35
37 namespace autofill { 36 namespace autofill {
38 namespace { 37 namespace {
39 38
40 class MockAutofillExternalDelegate : public AutofillExternalDelegate { 39 class MockAutofillExternalDelegate : public AutofillExternalDelegate {
41 public: 40 public:
42 MockAutofillExternalDelegate(AutofillManager* autofill_manager, 41 MockAutofillExternalDelegate(AutofillManager* autofill_manager,
43 AutofillDriver* autofill_driver) 42 AutofillDriver* autofill_driver)
44 : AutofillExternalDelegate(autofill_manager, autofill_driver) {} 43 : AutofillExternalDelegate(autofill_manager, autofill_driver) {}
45 virtual ~MockAutofillExternalDelegate() {} 44 virtual ~MockAutofillExternalDelegate() {}
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
230 EXPECT_CALL(*autofill_popup_controller_, InvalidateRow(selected_line)); 229 EXPECT_CALL(*autofill_popup_controller_, InvalidateRow(selected_line));
231 autofill_popup_controller_->SetSelectedLine(-1); 230 autofill_popup_controller_->SetSelectedLine(-1);
232 } 231 }
233 232
234 TEST_F(AutofillPopupControllerUnitTest, RemoveLine) { 233 TEST_F(AutofillPopupControllerUnitTest, RemoveLine) {
235 // Set up the popup. 234 // Set up the popup.
236 std::vector<base::string16> names(3, base::string16()); 235 std::vector<base::string16> names(3, base::string16());
237 std::vector<int> autofill_ids; 236 std::vector<int> autofill_ids;
238 autofill_ids.push_back(1); 237 autofill_ids.push_back(1);
239 autofill_ids.push_back(1); 238 autofill_ids.push_back(1);
240 autofill_ids.push_back(WebAutofillClient::MenuItemIDAutofillOptions); 239 autofill_ids.push_back(POPUP_ITEM_ID_AUTOFILL_OPTIONS);
241 autofill_popup_controller_->Show(names, names, names, autofill_ids); 240 autofill_popup_controller_->Show(names, names, names, autofill_ids);
242 241
243 // Generate a popup, so it can be hidden later. It doesn't matter what the 242 // Generate a popup, so it can be hidden later. It doesn't matter what the
244 // external_delegate thinks is being shown in the process, since we are just 243 // external_delegate thinks is being shown in the process, since we are just
245 // testing the popup here. 244 // testing the popup here.
246 autofill::GenerateTestAutofillPopup(external_delegate_.get()); 245 autofill::GenerateTestAutofillPopup(external_delegate_.get());
247 246
248 // No line is selected so the removal should fail. 247 // No line is selected so the removal should fail.
249 EXPECT_FALSE(autofill_popup_controller_->RemoveSelectedLine()); 248 EXPECT_FALSE(autofill_popup_controller_->RemoveSelectedLine());
250 249
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
285 EXPECT_CALL(*autofill_popup_controller_, Hide()); 284 EXPECT_CALL(*autofill_popup_controller_, Hide());
286 EXPECT_CALL(*autofill_popup_controller_, InvalidateRow(_)).Times(0); 285 EXPECT_CALL(*autofill_popup_controller_, InvalidateRow(_)).Times(0);
287 EXPECT_TRUE(autofill_popup_controller_->RemoveSelectedLine()); 286 EXPECT_TRUE(autofill_popup_controller_->RemoveSelectedLine());
288 } 287 }
289 288
290 TEST_F(AutofillPopupControllerUnitTest, SkipSeparator) { 289 TEST_F(AutofillPopupControllerUnitTest, SkipSeparator) {
291 // Set up the popup. 290 // Set up the popup.
292 std::vector<base::string16> names(3, base::string16()); 291 std::vector<base::string16> names(3, base::string16());
293 std::vector<int> autofill_ids; 292 std::vector<int> autofill_ids;
294 autofill_ids.push_back(1); 293 autofill_ids.push_back(1);
295 autofill_ids.push_back(WebAutofillClient::MenuItemIDSeparator); 294 autofill_ids.push_back(POPUP_ITEM_ID_SEPARATOR);
296 autofill_ids.push_back(WebAutofillClient::MenuItemIDAutofillOptions); 295 autofill_ids.push_back(POPUP_ITEM_ID_AUTOFILL_OPTIONS);
297 autofill_popup_controller_->Show(names, names, names, autofill_ids); 296 autofill_popup_controller_->Show(names, names, names, autofill_ids);
298 297
299 autofill_popup_controller_->SetSelectedLine(0); 298 autofill_popup_controller_->SetSelectedLine(0);
300 299
301 // Make sure next skips the unselectable separator. 300 // Make sure next skips the unselectable separator.
302 autofill_popup_controller_->SelectNextLine(); 301 autofill_popup_controller_->SelectNextLine();
303 EXPECT_EQ(2, autofill_popup_controller_->selected_line()); 302 EXPECT_EQ(2, autofill_popup_controller_->selected_line());
304 303
305 // Make sure previous skips the unselectable separator. 304 // Make sure previous skips the unselectable separator.
306 autofill_popup_controller_->SelectPreviousLine(); 305 autofill_popup_controller_->SelectPreviousLine();
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
357 // Add one data list entry. 356 // Add one data list entry.
358 std::vector<base::string16> data_list_values; 357 std::vector<base::string16> data_list_values;
359 data_list_values.push_back(ASCIIToUTF16("data list value 1")); 358 data_list_values.push_back(ASCIIToUTF16("data list value 1"));
360 359
361 autofill_popup_controller_->UpdateDataListValues(data_list_values, 360 autofill_popup_controller_->UpdateDataListValues(data_list_values,
362 data_list_values); 361 data_list_values);
363 362
364 // Update the expected values. 363 // Update the expected values.
365 items.insert(items.begin(), data_list_values[0]); 364 items.insert(items.begin(), data_list_values[0]);
366 items.insert(items.begin() + 1, base::string16()); 365 items.insert(items.begin() + 1, base::string16());
367 ids.insert(ids.begin(), WebAutofillClient::MenuItemIDDataListEntry); 366 ids.insert(ids.begin(), POPUP_ITEM_ID_DATALIST_ENTRY);
368 ids.insert(ids.begin() + 1, WebAutofillClient::MenuItemIDSeparator); 367 ids.insert(ids.begin() + 1, POPUP_ITEM_ID_SEPARATOR);
369 368
370 EXPECT_EQ(items, autofill_popup_controller_->names()); 369 EXPECT_EQ(items, autofill_popup_controller_->names());
371 EXPECT_EQ(ids, autofill_popup_controller_->identifiers()); 370 EXPECT_EQ(ids, autofill_popup_controller_->identifiers());
372 371
373 // Add two data list entries (which should replace the current one). 372 // Add two data list entries (which should replace the current one).
374 data_list_values.push_back(ASCIIToUTF16("data list value 2")); 373 data_list_values.push_back(ASCIIToUTF16("data list value 2"));
375 374
376 autofill_popup_controller_->UpdateDataListValues(data_list_values, 375 autofill_popup_controller_->UpdateDataListValues(data_list_values,
377 data_list_values); 376 data_list_values);
378 377
379 // Update the expected values. 378 // Update the expected values.
380 items.insert(items.begin() + 1, data_list_values[1]); 379 items.insert(items.begin() + 1, data_list_values[1]);
381 ids.insert(ids.begin(), WebAutofillClient::MenuItemIDDataListEntry); 380 ids.insert(ids.begin(), POPUP_ITEM_ID_DATALIST_ENTRY);
382 381
383 EXPECT_EQ(items, autofill_popup_controller_->names()); 382 EXPECT_EQ(items, autofill_popup_controller_->names());
384 EXPECT_EQ(ids, autofill_popup_controller_->identifiers()); 383 EXPECT_EQ(ids, autofill_popup_controller_->identifiers());
385 384
386 // Clear all data list values. 385 // Clear all data list values.
387 data_list_values.clear(); 386 data_list_values.clear();
388 387
389 autofill_popup_controller_->UpdateDataListValues(data_list_values, 388 autofill_popup_controller_->UpdateDataListValues(data_list_values,
390 data_list_values); 389 data_list_values);
391 390
392 items.clear(); 391 items.clear();
393 items.push_back(base::string16()); 392 items.push_back(base::string16());
394 ids.clear(); 393 ids.clear();
395 ids.push_back(1); 394 ids.push_back(1);
396 395
397 EXPECT_EQ(items, autofill_popup_controller_->names()); 396 EXPECT_EQ(items, autofill_popup_controller_->names());
398 EXPECT_EQ(ids, autofill_popup_controller_->identifiers()); 397 EXPECT_EQ(ids, autofill_popup_controller_->identifiers());
399 } 398 }
400 399
401 TEST_F(AutofillPopupControllerUnitTest, PopupsWithOnlyDataLists) { 400 TEST_F(AutofillPopupControllerUnitTest, PopupsWithOnlyDataLists) {
402 // Create the popup with a single datalist element. 401 // Create the popup with a single datalist element.
403 std::vector<base::string16> items; 402 std::vector<base::string16> items;
404 items.push_back(base::string16()); 403 items.push_back(base::string16());
405 std::vector<int> ids; 404 std::vector<int> ids;
406 ids.push_back(WebAutofillClient::MenuItemIDDataListEntry); 405 ids.push_back(POPUP_ITEM_ID_DATALIST_ENTRY);
407 406
408 autofill_popup_controller_->Show(items, items, items, ids); 407 autofill_popup_controller_->Show(items, items, items, ids);
409 408
410 EXPECT_EQ(items, autofill_popup_controller_->names()); 409 EXPECT_EQ(items, autofill_popup_controller_->names());
411 EXPECT_EQ(ids, autofill_popup_controller_->identifiers()); 410 EXPECT_EQ(ids, autofill_popup_controller_->identifiers());
412 411
413 // Replace the datalist element with a new one. 412 // Replace the datalist element with a new one.
414 std::vector<base::string16> data_list_values; 413 std::vector<base::string16> data_list_values;
415 data_list_values.push_back(ASCIIToUTF16("data list value 1")); 414 data_list_values.push_back(ASCIIToUTF16("data list value 1"));
416 415
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
530 EXPECT_NE(names[0], autofill_popup_controller_->names()[0]); 529 EXPECT_NE(names[0], autofill_popup_controller_->names()[0]);
531 EXPECT_NE(subtexts[0], autofill_popup_controller_->subtexts()[0]); 530 EXPECT_NE(subtexts[0], autofill_popup_controller_->subtexts()[0]);
532 531
533 // The second element was shorter so it should be unchanged. 532 // The second element was shorter so it should be unchanged.
534 EXPECT_EQ(names[1], autofill_popup_controller_->names()[1]); 533 EXPECT_EQ(names[1], autofill_popup_controller_->names()[1]);
535 EXPECT_EQ(subtexts[1], autofill_popup_controller_->subtexts()[1]); 534 EXPECT_EQ(subtexts[1], autofill_popup_controller_->subtexts()[1]);
536 } 535 }
537 #endif 536 #endif
538 537
539 } // namespace autofill 538 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698