Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright 2017 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include <string> | |
| 6 | |
| 7 #include "base/strings/utf_string_conversions.h" | |
| 8 #include "chrome/browser/browser_process.h" | |
| 9 #include "chrome/browser/ui/views/payments/payment_request_browsertest_base.h" | |
| 10 #include "chrome/browser/ui/views/payments/payment_request_dialog_view_ids.h" | |
| 11 #include "components/autofill/core/browser/personal_data_manager.h" | |
| 12 | |
| 13 namespace payments { | |
| 14 | |
| 15 namespace { | |
| 16 | |
| 17 const char kNameFull[] = "Kirby Puckett"; | |
| 18 const char kPhoneNumber[] = "6515558946"; | |
| 19 const char kPhoneNumberInvalid[] = "123"; | |
| 20 const char kEmailAddress[] = "kirby@example.com"; | |
| 21 const char kEmailAddressInvalid[] = "kirby"; | |
| 22 | |
| 23 std::string GetLocale() { | |
| 24 return g_browser_process->GetApplicationLocale(); | |
| 25 } | |
| 26 | |
| 27 } // namespace | |
| 28 | |
| 29 class PaymentRequestContactInfoEditorTest | |
| 30 : public PaymentRequestBrowserTestBase { | |
| 31 protected: | |
| 32 PaymentRequestContactInfoEditorTest() | |
| 33 : PaymentRequestBrowserTestBase( | |
| 34 "/payment_request_contact_details_test.html") {} | |
| 35 | |
| 36 PersonalDataLoadedObserverMock personal_data_observer_; | |
| 37 }; | |
| 38 | |
| 39 IN_PROC_BROWSER_TEST_F(PaymentRequestContactInfoEditorTest, HappyPath) { | |
| 40 InvokePaymentRequestUI(); | |
| 41 OpenContactInfoScreen(); | |
| 42 OpenContactInfoEditorScreen(); | |
| 43 | |
| 44 SetEditorTextfieldValue(base::ASCIIToUTF16(kNameFull), autofill::NAME_FULL); | |
| 45 SetEditorTextfieldValue(base::ASCIIToUTF16(kPhoneNumber), | |
| 46 autofill::PHONE_HOME_WHOLE_NUMBER); | |
| 47 SetEditorTextfieldValue(base::ASCIIToUTF16(kEmailAddress), | |
| 48 autofill::EMAIL_ADDRESS); | |
| 49 | |
| 50 autofill::PersonalDataManager* personal_data_manager = GetDataManager(); | |
| 51 personal_data_manager->AddObserver(&personal_data_observer_); | |
| 52 | |
| 53 // Wait until the web database has been updated and the notification sent. | |
| 54 base::RunLoop data_loop; | |
| 55 EXPECT_CALL(personal_data_observer_, OnPersonalDataChanged()) | |
| 56 .WillOnce(QuitMessageLoop(&data_loop)); | |
| 57 ClickOnDialogViewAndWait(DialogViewID::EDITOR_SAVE_BUTTON); | |
| 58 data_loop.Run(); | |
| 59 | |
| 60 ASSERT_EQ(1UL, personal_data_manager->GetProfiles().size()); | |
| 61 autofill::AutofillProfile* profile = personal_data_manager->GetProfiles()[0]; | |
| 62 DCHECK(profile); | |
| 63 | |
| 64 EXPECT_EQ(base::ASCIIToUTF16(kNameFull), | |
| 65 profile->GetInfo(autofill::AutofillType(autofill::NAME_FULL), | |
| 66 GetLocale())); | |
| 67 EXPECT_EQ(base::ASCIIToUTF16(kPhoneNumber), | |
| 68 profile->GetInfo( | |
| 69 autofill::AutofillType(autofill::PHONE_HOME_WHOLE_NUMBER), | |
| 70 GetLocale())); | |
| 71 EXPECT_EQ(base::ASCIIToUTF16(kEmailAddress), | |
| 72 profile->GetInfo(autofill::AutofillType(autofill::EMAIL_ADDRESS), | |
| 73 GetLocale())); | |
| 74 } | |
| 75 | |
| 76 IN_PROC_BROWSER_TEST_F(PaymentRequestContactInfoEditorTest, Validation) { | |
| 77 InvokePaymentRequestUI(); | |
| 78 OpenContactInfoScreen(); | |
| 79 OpenContactInfoEditorScreen(); | |
| 80 | |
| 81 // Insert invalid values into fields which have rules more complex than | |
| 82 // just emptiness, and an empty string into simple required fields. | |
| 83 SetEditorTextfieldValue(base::string16(), autofill::NAME_FULL); | |
| 84 SetEditorTextfieldValue(base::ASCIIToUTF16(kPhoneNumberInvalid), | |
| 85 autofill::PHONE_HOME_WHOLE_NUMBER); | |
| 86 SetEditorTextfieldValue(base::ASCIIToUTF16(kEmailAddressInvalid), | |
| 87 autofill::EMAIL_ADDRESS); | |
| 88 | |
| 89 EXPECT_TRUE(IsEditorTextfieldInvalid(autofill::NAME_FULL)); | |
| 90 EXPECT_TRUE(IsEditorTextfieldInvalid(autofill::PHONE_HOME_WHOLE_NUMBER)); | |
| 91 EXPECT_TRUE(IsEditorTextfieldInvalid(autofill::EMAIL_ADDRESS)); | |
| 92 | |
| 93 // Correct the problems. | |
| 94 SetEditorTextfieldValue(base::ASCIIToUTF16(kNameFull), autofill::NAME_FULL); | |
| 95 SetEditorTextfieldValue(base::ASCIIToUTF16(kPhoneNumber), | |
| 96 autofill::PHONE_HOME_WHOLE_NUMBER); | |
| 97 SetEditorTextfieldValue(base::ASCIIToUTF16(kEmailAddress), | |
| 98 autofill::EMAIL_ADDRESS); | |
| 99 | |
| 100 EXPECT_FALSE(IsEditorTextfieldInvalid(autofill::NAME_FULL)); | |
| 101 EXPECT_FALSE(IsEditorTextfieldInvalid(autofill::PHONE_HOME_WHOLE_NUMBER)); | |
| 102 EXPECT_FALSE(IsEditorTextfieldInvalid(autofill::EMAIL_ADDRESS)); | |
| 103 | |
| 104 autofill::PersonalDataManager* personal_data_manager = GetDataManager(); | |
| 105 personal_data_manager->AddObserver(&personal_data_observer_); | |
| 106 | |
| 107 // Wait until the web database has been updated and the notification sent. | |
| 108 base::RunLoop data_loop; | |
| 109 EXPECT_CALL(personal_data_observer_, OnPersonalDataChanged()) | |
| 110 .WillOnce(QuitMessageLoop(&data_loop)); | |
| 111 ClickOnDialogViewAndWait(DialogViewID::EDITOR_SAVE_BUTTON); | |
| 112 data_loop.Run(); | |
| 113 | |
| 114 ASSERT_EQ(1UL, personal_data_manager->GetProfiles().size()); | |
| 115 autofill::AutofillProfile* profile = personal_data_manager->GetProfiles()[0]; | |
| 116 DCHECK(profile); | |
| 117 | |
| 118 EXPECT_EQ(base::ASCIIToUTF16(kNameFull), | |
| 119 profile->GetInfo(autofill::AutofillType(autofill::NAME_FULL), | |
| 120 GetLocale())); | |
| 121 EXPECT_EQ(base::ASCIIToUTF16(kPhoneNumber), | |
| 122 profile->GetInfo( | |
| 123 autofill::AutofillType(autofill::PHONE_HOME_WHOLE_NUMBER), | |
| 124 GetLocale())); | |
| 125 EXPECT_EQ(base::ASCIIToUTF16(kEmailAddress), | |
| 126 profile->GetInfo(autofill::AutofillType(autofill::EMAIL_ADDRESS), | |
| 127 GetLocale())); | |
| 128 } | |
| 129 | |
| 130 IN_PROC_BROWSER_TEST_F(PaymentRequestContactInfoEditorTest, ModifyExisting) { | |
| 131 autofill::PersonalDataManager* personal_data_manager = GetDataManager(); | |
| 132 personal_data_manager->AddObserver(&personal_data_observer_); | |
| 133 | |
| 134 autofill::AutofillProfile incomplete_profile; | |
| 135 incomplete_profile.SetInfo(autofill::AutofillType(autofill::NAME_FULL), | |
| 136 base::ASCIIToUTF16(kNameFull), GetLocale()); | |
| 137 base::RunLoop populate_data_loop; | |
|
Mathieu
2017/04/24 12:13:59
I think you don't need 137-141 because we have Add
| |
| 138 EXPECT_CALL(personal_data_observer_, OnPersonalDataChanged()) | |
| 139 .WillOnce(QuitMessageLoop(&populate_data_loop)); | |
| 140 personal_data_manager->AddProfile(incomplete_profile); | |
| 141 populate_data_loop.Run(); | |
| 142 | |
| 143 InvokePaymentRequestUI(); | |
| 144 OpenContactInfoScreen(); | |
| 145 | |
| 146 views::View* list_view = dialog_view()->GetViewByID( | |
| 147 static_cast<int>(DialogViewID::CONTACT_INFO_SHEET_LIST_VIEW)); | |
| 148 DCHECK(list_view); | |
| 149 ClickOnDialogViewAndWait(list_view->child_at(0)); | |
| 150 | |
| 151 // Do not set name: This should have been populated when opening the screen. | |
|
Mathieu
2017/04/24 12:13:59
Use PaymentRequestBrowserTestBase::GetEditorTextfi
| |
| 152 SetEditorTextfieldValue(base::ASCIIToUTF16(kPhoneNumber), | |
| 153 autofill::PHONE_HOME_WHOLE_NUMBER); | |
| 154 SetEditorTextfieldValue(base::ASCIIToUTF16(kEmailAddress), | |
| 155 autofill::EMAIL_ADDRESS); | |
| 156 | |
| 157 // Wait until the web database has been updated and the notification sent. | |
| 158 base::RunLoop save_data_loop; | |
| 159 EXPECT_CALL(personal_data_observer_, OnPersonalDataChanged()) | |
| 160 .WillOnce(QuitMessageLoop(&save_data_loop)); | |
| 161 ClickOnDialogViewAndWait(DialogViewID::EDITOR_SAVE_BUTTON); | |
| 162 save_data_loop.Run(); | |
| 163 | |
| 164 ASSERT_EQ(1UL, personal_data_manager->GetProfiles().size()); | |
| 165 autofill::AutofillProfile* profile = personal_data_manager->GetProfiles()[0]; | |
| 166 DCHECK(profile); | |
| 167 | |
| 168 EXPECT_EQ(base::ASCIIToUTF16(kNameFull), | |
| 169 profile->GetInfo(autofill::AutofillType(autofill::NAME_FULL), | |
| 170 GetLocale())); | |
| 171 EXPECT_EQ(base::ASCIIToUTF16(kPhoneNumber), | |
| 172 profile->GetInfo( | |
| 173 autofill::AutofillType(autofill::PHONE_HOME_WHOLE_NUMBER), | |
| 174 GetLocale())); | |
| 175 EXPECT_EQ(base::ASCIIToUTF16(kEmailAddress), | |
| 176 profile->GetInfo(autofill::AutofillType(autofill::EMAIL_ADDRESS), | |
| 177 GetLocale())); | |
| 178 } | |
| 179 | |
| 180 } // namespace payments | |
| OLD | NEW |