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

Side by Side Diff: chrome/browser/ui/views/payments/contact_info_editor_view_controller_browsertest.cc

Issue 2816083002: [WebPayments] Desktop implementation of Contact Editor (Closed)
Patch Set: rebase Created 3 years, 8 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
(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 AddAutofillProfile(incomplete_profile);
138
139 InvokePaymentRequestUI();
140 OpenContactInfoScreen();
141
142 views::View* list_view = dialog_view()->GetViewByID(
143 static_cast<int>(DialogViewID::CONTACT_INFO_SHEET_LIST_VIEW));
144 DCHECK(list_view);
145 ClickOnDialogViewAndWait(list_view->child_at(0));
146
147 // Do not set name: This should have been populated when opening the screen.
148 EXPECT_EQ(base::ASCIIToUTF16(kNameFull),
149 GetEditorTextfieldValue(autofill::NAME_FULL));
150 SetEditorTextfieldValue(base::ASCIIToUTF16(kPhoneNumber),
151 autofill::PHONE_HOME_WHOLE_NUMBER);
152 SetEditorTextfieldValue(base::ASCIIToUTF16(kEmailAddress),
153 autofill::EMAIL_ADDRESS);
154
155 // Wait until the web database has been updated and the notification sent.
156 base::RunLoop save_data_loop;
157 EXPECT_CALL(personal_data_observer_, OnPersonalDataChanged())
158 .WillOnce(QuitMessageLoop(&save_data_loop));
159 ClickOnDialogViewAndWait(DialogViewID::EDITOR_SAVE_BUTTON);
160 save_data_loop.Run();
161
162 ASSERT_EQ(1UL, personal_data_manager->GetProfiles().size());
163 autofill::AutofillProfile* profile = personal_data_manager->GetProfiles()[0];
164 DCHECK(profile);
165
166 EXPECT_EQ(base::ASCIIToUTF16(kNameFull),
167 profile->GetInfo(autofill::AutofillType(autofill::NAME_FULL),
168 GetLocale()));
169 EXPECT_EQ(base::ASCIIToUTF16(kPhoneNumber),
170 profile->GetInfo(
171 autofill::AutofillType(autofill::PHONE_HOME_WHOLE_NUMBER),
172 GetLocale()));
173 EXPECT_EQ(base::ASCIIToUTF16(kEmailAddress),
174 profile->GetInfo(autofill::AutofillType(autofill::EMAIL_ADDRESS),
175 GetLocale()));
176 }
177
178 } // namespace payments
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698