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 |