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

Side by Side Diff: third_party/WebKit/Source/modules/payments/OnPaymentResponseTest.cpp

Issue 2748093003: PaymentRequest: Introduce PaymentDetailsInit and PaymentDetailsUpdate. (Closed)
Patch Set: PaymentRequest: Introduce PaymentDetailsInit and PaymentDetailsUpdate. 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
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 // Tests for PaymentRequest::OnPaymentResponse(). 5 // Tests for PaymentRequest::OnPaymentResponse().
6 6
7 #include <utility> 7 #include <utility>
8 #include "bindings/core/v8/ScriptFunction.h" 8 #include "bindings/core/v8/ScriptFunction.h"
9 #include "bindings/core/v8/V8BindingForTesting.h" 9 #include "bindings/core/v8/V8BindingForTesting.h"
10 #include "bindings/modules/v8/V8PaymentResponse.h" 10 #include "bindings/modules/v8/V8PaymentResponse.h"
11 #include "modules/payments/PaymentAddress.h" 11 #include "modules/payments/PaymentAddress.h"
12 #include "modules/payments/PaymentRequest.h" 12 #include "modules/payments/PaymentRequest.h"
13 #include "modules/payments/PaymentTestHelper.h" 13 #include "modules/payments/PaymentTestHelper.h"
14 #include "testing/gtest/include/gtest/gtest.h" 14 #include "testing/gtest/include/gtest/gtest.h"
15 15
16 namespace blink { 16 namespace blink {
17 namespace { 17 namespace {
18 18
19 // If the merchant requests shipping information, but the browser does not 19 // If the merchant requests shipping information, but the browser does not
20 // provide the shipping option, reject the show() promise. 20 // provide the shipping option, reject the show() promise.
21 TEST(OnPaymentResponseTest, RejectMissingShippingOption) { 21 TEST(OnPaymentResponseTest, RejectMissingShippingOption) {
22 V8TestingScope scope; 22 V8TestingScope scope;
23 PaymentRequestMockFunctionScope funcs(scope.getScriptState()); 23 PaymentRequestMockFunctionScope funcs(scope.getScriptState());
24 makePaymentRequestOriginSecure(scope.document()); 24 makePaymentRequestOriginSecure(scope.document());
25 PaymentOptions options; 25 PaymentOptions options;
26 options.setRequestShipping(true); 26 options.setRequestShipping(true);
27 PaymentRequest* request = PaymentRequest::create( 27 PaymentRequest* request = PaymentRequest::create(
28 scope.getExecutionContext(), buildPaymentMethodDataForTest(), 28 scope.getExecutionContext(), buildPaymentMethodDataForTest(),
29 buildPaymentDetailsForTest(), options, scope.getExceptionState()); 29 buildPaymentDetailsInitForTest(), options, scope.getExceptionState());
30 ASSERT_FALSE(scope.getExceptionState().hadException()); 30 ASSERT_FALSE(scope.getExceptionState().hadException());
31 payments::mojom::blink::PaymentResponsePtr response = 31 payments::mojom::blink::PaymentResponsePtr response =
32 buildPaymentResponseForTest(); 32 buildPaymentResponseForTest();
33 response->shipping_address = payments::mojom::blink::PaymentAddress::New(); 33 response->shipping_address = payments::mojom::blink::PaymentAddress::New();
34 response->shipping_address->country = "US"; 34 response->shipping_address->country = "US";
35 response->shipping_address->language_code = "en"; 35 response->shipping_address->language_code = "en";
36 response->shipping_address->script_code = "Latn"; 36 response->shipping_address->script_code = "Latn";
37 37
38 request->show(scope.getScriptState()) 38 request->show(scope.getScriptState())
39 .then(funcs.expectNoCall(), funcs.expectCall()); 39 .then(funcs.expectNoCall(), funcs.expectCall());
40 40
41 static_cast<payments::mojom::blink::PaymentRequestClient*>(request) 41 static_cast<payments::mojom::blink::PaymentRequestClient*>(request)
42 ->OnPaymentResponse(std::move(response)); 42 ->OnPaymentResponse(std::move(response));
43 } 43 }
44 44
45 // If the merchant requests shipping information, but the browser does not 45 // If the merchant requests shipping information, but the browser does not
46 // provide a shipping address, reject the show() promise. 46 // provide a shipping address, reject the show() promise.
47 TEST(OnPaymentResponseTest, RejectMissingAddress) { 47 TEST(OnPaymentResponseTest, RejectMissingAddress) {
48 V8TestingScope scope; 48 V8TestingScope scope;
49 PaymentRequestMockFunctionScope funcs(scope.getScriptState()); 49 PaymentRequestMockFunctionScope funcs(scope.getScriptState());
50 makePaymentRequestOriginSecure(scope.document()); 50 makePaymentRequestOriginSecure(scope.document());
51 PaymentOptions options; 51 PaymentOptions options;
52 options.setRequestShipping(true); 52 options.setRequestShipping(true);
53 PaymentRequest* request = PaymentRequest::create( 53 PaymentRequest* request = PaymentRequest::create(
54 scope.getExecutionContext(), buildPaymentMethodDataForTest(), 54 scope.getExecutionContext(), buildPaymentMethodDataForTest(),
55 buildPaymentDetailsForTest(), options, scope.getExceptionState()); 55 buildPaymentDetailsInitForTest(), options, scope.getExceptionState());
56 ASSERT_FALSE(scope.getExceptionState().hadException()); 56 ASSERT_FALSE(scope.getExceptionState().hadException());
57 payments::mojom::blink::PaymentResponsePtr response = 57 payments::mojom::blink::PaymentResponsePtr response =
58 buildPaymentResponseForTest(); 58 buildPaymentResponseForTest();
59 response->shipping_option = "standardShipping"; 59 response->shipping_option = "standardShipping";
60 60
61 request->show(scope.getScriptState()) 61 request->show(scope.getScriptState())
62 .then(funcs.expectNoCall(), funcs.expectCall()); 62 .then(funcs.expectNoCall(), funcs.expectCall());
63 63
64 static_cast<payments::mojom::blink::PaymentRequestClient*>(request) 64 static_cast<payments::mojom::blink::PaymentRequestClient*>(request)
65 ->OnPaymentResponse(std::move(response)); 65 ->OnPaymentResponse(std::move(response));
66 } 66 }
67 67
68 // If the merchant requests a payer name, but the browser does not provide it, 68 // If the merchant requests a payer name, but the browser does not provide it,
69 // reject the show() promise. 69 // reject the show() promise.
70 TEST(OnPaymentResponseTest, RejectMissingName) { 70 TEST(OnPaymentResponseTest, RejectMissingName) {
71 V8TestingScope scope; 71 V8TestingScope scope;
72 PaymentRequestMockFunctionScope funcs(scope.getScriptState()); 72 PaymentRequestMockFunctionScope funcs(scope.getScriptState());
73 makePaymentRequestOriginSecure(scope.document()); 73 makePaymentRequestOriginSecure(scope.document());
74 PaymentOptions options; 74 PaymentOptions options;
75 options.setRequestPayerName(true); 75 options.setRequestPayerName(true);
76 PaymentRequest* request = PaymentRequest::create( 76 PaymentRequest* request = PaymentRequest::create(
77 scope.getExecutionContext(), buildPaymentMethodDataForTest(), 77 scope.getExecutionContext(), buildPaymentMethodDataForTest(),
78 buildPaymentDetailsForTest(), options, scope.getExceptionState()); 78 buildPaymentDetailsInitForTest(), options, scope.getExceptionState());
79 EXPECT_FALSE(scope.getExceptionState().hadException()); 79 EXPECT_FALSE(scope.getExceptionState().hadException());
80 payments::mojom::blink::PaymentResponsePtr response = 80 payments::mojom::blink::PaymentResponsePtr response =
81 payments::mojom::blink::PaymentResponse::New(); 81 payments::mojom::blink::PaymentResponse::New();
82 82
83 request->show(scope.getScriptState()) 83 request->show(scope.getScriptState())
84 .then(funcs.expectNoCall(), funcs.expectCall()); 84 .then(funcs.expectNoCall(), funcs.expectCall());
85 85
86 static_cast<payments::mojom::blink::PaymentRequestClient*>(request) 86 static_cast<payments::mojom::blink::PaymentRequestClient*>(request)
87 ->OnPaymentResponse(std::move(response)); 87 ->OnPaymentResponse(std::move(response));
88 } 88 }
89 89
90 // If the merchant requests an email address, but the browser does not provide 90 // If the merchant requests an email address, but the browser does not provide
91 // it, reject the show() promise. 91 // it, reject the show() promise.
92 TEST(OnPaymentResponseTest, RejectMissingEmail) { 92 TEST(OnPaymentResponseTest, RejectMissingEmail) {
93 V8TestingScope scope; 93 V8TestingScope scope;
94 PaymentRequestMockFunctionScope funcs(scope.getScriptState()); 94 PaymentRequestMockFunctionScope funcs(scope.getScriptState());
95 makePaymentRequestOriginSecure(scope.document()); 95 makePaymentRequestOriginSecure(scope.document());
96 PaymentOptions options; 96 PaymentOptions options;
97 options.setRequestPayerEmail(true); 97 options.setRequestPayerEmail(true);
98 PaymentRequest* request = PaymentRequest::create( 98 PaymentRequest* request = PaymentRequest::create(
99 scope.getExecutionContext(), buildPaymentMethodDataForTest(), 99 scope.getExecutionContext(), buildPaymentMethodDataForTest(),
100 buildPaymentDetailsForTest(), options, scope.getExceptionState()); 100 buildPaymentDetailsInitForTest(), options, scope.getExceptionState());
101 EXPECT_FALSE(scope.getExceptionState().hadException()); 101 EXPECT_FALSE(scope.getExceptionState().hadException());
102 payments::mojom::blink::PaymentResponsePtr response = 102 payments::mojom::blink::PaymentResponsePtr response =
103 payments::mojom::blink::PaymentResponse::New(); 103 payments::mojom::blink::PaymentResponse::New();
104 104
105 request->show(scope.getScriptState()) 105 request->show(scope.getScriptState())
106 .then(funcs.expectNoCall(), funcs.expectCall()); 106 .then(funcs.expectNoCall(), funcs.expectCall());
107 107
108 static_cast<payments::mojom::blink::PaymentRequestClient*>(request) 108 static_cast<payments::mojom::blink::PaymentRequestClient*>(request)
109 ->OnPaymentResponse(std::move(response)); 109 ->OnPaymentResponse(std::move(response));
110 } 110 }
111 111
112 // If the merchant requests a phone number, but the browser does not provide it, 112 // If the merchant requests a phone number, but the browser does not provide it,
113 // reject the show() promise. 113 // reject the show() promise.
114 TEST(OnPaymentResponseTest, RejectMissingPhone) { 114 TEST(OnPaymentResponseTest, RejectMissingPhone) {
115 V8TestingScope scope; 115 V8TestingScope scope;
116 PaymentRequestMockFunctionScope funcs(scope.getScriptState()); 116 PaymentRequestMockFunctionScope funcs(scope.getScriptState());
117 makePaymentRequestOriginSecure(scope.document()); 117 makePaymentRequestOriginSecure(scope.document());
118 PaymentOptions options; 118 PaymentOptions options;
119 options.setRequestPayerPhone(true); 119 options.setRequestPayerPhone(true);
120 PaymentRequest* request = PaymentRequest::create( 120 PaymentRequest* request = PaymentRequest::create(
121 scope.getExecutionContext(), buildPaymentMethodDataForTest(), 121 scope.getExecutionContext(), buildPaymentMethodDataForTest(),
122 buildPaymentDetailsForTest(), options, scope.getExceptionState()); 122 buildPaymentDetailsInitForTest(), options, scope.getExceptionState());
123 EXPECT_FALSE(scope.getExceptionState().hadException()); 123 EXPECT_FALSE(scope.getExceptionState().hadException());
124 payments::mojom::blink::PaymentResponsePtr response = 124 payments::mojom::blink::PaymentResponsePtr response =
125 payments::mojom::blink::PaymentResponse::New(); 125 payments::mojom::blink::PaymentResponse::New();
126 126
127 request->show(scope.getScriptState()) 127 request->show(scope.getScriptState())
128 .then(funcs.expectNoCall(), funcs.expectCall()); 128 .then(funcs.expectNoCall(), funcs.expectCall());
129 129
130 static_cast<payments::mojom::blink::PaymentRequestClient*>(request) 130 static_cast<payments::mojom::blink::PaymentRequestClient*>(request)
131 ->OnPaymentResponse(std::move(response)); 131 ->OnPaymentResponse(std::move(response));
132 } 132 }
133 133
134 // If the merchant requests shipping information, but the browser provides an 134 // If the merchant requests shipping information, but the browser provides an
135 // empty string for shipping option, reject the show() promise. 135 // empty string for shipping option, reject the show() promise.
136 TEST(OnPaymentResponseTest, RejectEmptyShippingOption) { 136 TEST(OnPaymentResponseTest, RejectEmptyShippingOption) {
137 V8TestingScope scope; 137 V8TestingScope scope;
138 PaymentRequestMockFunctionScope funcs(scope.getScriptState()); 138 PaymentRequestMockFunctionScope funcs(scope.getScriptState());
139 makePaymentRequestOriginSecure(scope.document()); 139 makePaymentRequestOriginSecure(scope.document());
140 PaymentOptions options; 140 PaymentOptions options;
141 options.setRequestShipping(true); 141 options.setRequestShipping(true);
142 PaymentRequest* request = PaymentRequest::create( 142 PaymentRequest* request = PaymentRequest::create(
143 scope.getExecutionContext(), buildPaymentMethodDataForTest(), 143 scope.getExecutionContext(), buildPaymentMethodDataForTest(),
144 buildPaymentDetailsForTest(), options, scope.getExceptionState()); 144 buildPaymentDetailsInitForTest(), options, scope.getExceptionState());
145 ASSERT_FALSE(scope.getExceptionState().hadException()); 145 ASSERT_FALSE(scope.getExceptionState().hadException());
146 payments::mojom::blink::PaymentResponsePtr response = 146 payments::mojom::blink::PaymentResponsePtr response =
147 buildPaymentResponseForTest(); 147 buildPaymentResponseForTest();
148 response->shipping_option = ""; 148 response->shipping_option = "";
149 response->shipping_address = payments::mojom::blink::PaymentAddress::New(); 149 response->shipping_address = payments::mojom::blink::PaymentAddress::New();
150 response->shipping_address->country = "US"; 150 response->shipping_address->country = "US";
151 response->shipping_address->language_code = "en"; 151 response->shipping_address->language_code = "en";
152 response->shipping_address->script_code = "Latn"; 152 response->shipping_address->script_code = "Latn";
153 153
154 request->show(scope.getScriptState()) 154 request->show(scope.getScriptState())
155 .then(funcs.expectNoCall(), funcs.expectCall()); 155 .then(funcs.expectNoCall(), funcs.expectCall());
156 156
157 static_cast<payments::mojom::blink::PaymentRequestClient*>(request) 157 static_cast<payments::mojom::blink::PaymentRequestClient*>(request)
158 ->OnPaymentResponse(std::move(response)); 158 ->OnPaymentResponse(std::move(response));
159 } 159 }
160 160
161 // If the merchant requests shipping information, but the browser provides an 161 // If the merchant requests shipping information, but the browser provides an
162 // empty shipping address, reject the show() promise. 162 // empty shipping address, reject the show() promise.
163 TEST(OnPaymentResponseTest, RejectEmptyAddress) { 163 TEST(OnPaymentResponseTest, RejectEmptyAddress) {
164 V8TestingScope scope; 164 V8TestingScope scope;
165 PaymentRequestMockFunctionScope funcs(scope.getScriptState()); 165 PaymentRequestMockFunctionScope funcs(scope.getScriptState());
166 makePaymentRequestOriginSecure(scope.document()); 166 makePaymentRequestOriginSecure(scope.document());
167 PaymentOptions options; 167 PaymentOptions options;
168 options.setRequestShipping(true); 168 options.setRequestShipping(true);
169 PaymentRequest* request = PaymentRequest::create( 169 PaymentRequest* request = PaymentRequest::create(
170 scope.getExecutionContext(), buildPaymentMethodDataForTest(), 170 scope.getExecutionContext(), buildPaymentMethodDataForTest(),
171 buildPaymentDetailsForTest(), options, scope.getExceptionState()); 171 buildPaymentDetailsInitForTest(), options, scope.getExceptionState());
172 ASSERT_FALSE(scope.getExceptionState().hadException()); 172 ASSERT_FALSE(scope.getExceptionState().hadException());
173 payments::mojom::blink::PaymentResponsePtr response = 173 payments::mojom::blink::PaymentResponsePtr response =
174 buildPaymentResponseForTest(); 174 buildPaymentResponseForTest();
175 response->shipping_option = "standardShipping"; 175 response->shipping_option = "standardShipping";
176 response->shipping_address = payments::mojom::blink::PaymentAddress::New(); 176 response->shipping_address = payments::mojom::blink::PaymentAddress::New();
177 177
178 request->show(scope.getScriptState()) 178 request->show(scope.getScriptState())
179 .then(funcs.expectNoCall(), funcs.expectCall()); 179 .then(funcs.expectNoCall(), funcs.expectCall());
180 180
181 static_cast<payments::mojom::blink::PaymentRequestClient*>(request) 181 static_cast<payments::mojom::blink::PaymentRequestClient*>(request)
182 ->OnPaymentResponse(std::move(response)); 182 ->OnPaymentResponse(std::move(response));
183 } 183 }
184 184
185 // If the merchant requests a payer name, but the browser provides an empty 185 // If the merchant requests a payer name, but the browser provides an empty
186 // string for name, reject the show() promise. 186 // string for name, reject the show() promise.
187 TEST(OnPaymentResponseTest, RejectEmptyName) { 187 TEST(OnPaymentResponseTest, RejectEmptyName) {
188 V8TestingScope scope; 188 V8TestingScope scope;
189 PaymentRequestMockFunctionScope funcs(scope.getScriptState()); 189 PaymentRequestMockFunctionScope funcs(scope.getScriptState());
190 makePaymentRequestOriginSecure(scope.document()); 190 makePaymentRequestOriginSecure(scope.document());
191 PaymentOptions options; 191 PaymentOptions options;
192 options.setRequestPayerName(true); 192 options.setRequestPayerName(true);
193 PaymentRequest* request = PaymentRequest::create( 193 PaymentRequest* request = PaymentRequest::create(
194 scope.getExecutionContext(), buildPaymentMethodDataForTest(), 194 scope.getExecutionContext(), buildPaymentMethodDataForTest(),
195 buildPaymentDetailsForTest(), options, scope.getExceptionState()); 195 buildPaymentDetailsInitForTest(), options, scope.getExceptionState());
196 EXPECT_FALSE(scope.getExceptionState().hadException()); 196 EXPECT_FALSE(scope.getExceptionState().hadException());
197 payments::mojom::blink::PaymentResponsePtr response = 197 payments::mojom::blink::PaymentResponsePtr response =
198 payments::mojom::blink::PaymentResponse::New(); 198 payments::mojom::blink::PaymentResponse::New();
199 response->payer_name = ""; 199 response->payer_name = "";
200 200
201 request->show(scope.getScriptState()) 201 request->show(scope.getScriptState())
202 .then(funcs.expectNoCall(), funcs.expectCall()); 202 .then(funcs.expectNoCall(), funcs.expectCall());
203 203
204 static_cast<payments::mojom::blink::PaymentRequestClient*>(request) 204 static_cast<payments::mojom::blink::PaymentRequestClient*>(request)
205 ->OnPaymentResponse(std::move(response)); 205 ->OnPaymentResponse(std::move(response));
206 } 206 }
207 207
208 // If the merchant requests an email, but the browser provides an empty string 208 // If the merchant requests an email, but the browser provides an empty string
209 // for email, reject the show() promise. 209 // for email, reject the show() promise.
210 TEST(OnPaymentResponseTest, RejectEmptyEmail) { 210 TEST(OnPaymentResponseTest, RejectEmptyEmail) {
211 V8TestingScope scope; 211 V8TestingScope scope;
212 PaymentRequestMockFunctionScope funcs(scope.getScriptState()); 212 PaymentRequestMockFunctionScope funcs(scope.getScriptState());
213 makePaymentRequestOriginSecure(scope.document()); 213 makePaymentRequestOriginSecure(scope.document());
214 PaymentOptions options; 214 PaymentOptions options;
215 options.setRequestPayerEmail(true); 215 options.setRequestPayerEmail(true);
216 PaymentRequest* request = PaymentRequest::create( 216 PaymentRequest* request = PaymentRequest::create(
217 scope.getExecutionContext(), buildPaymentMethodDataForTest(), 217 scope.getExecutionContext(), buildPaymentMethodDataForTest(),
218 buildPaymentDetailsForTest(), options, scope.getExceptionState()); 218 buildPaymentDetailsInitForTest(), options, scope.getExceptionState());
219 EXPECT_FALSE(scope.getExceptionState().hadException()); 219 EXPECT_FALSE(scope.getExceptionState().hadException());
220 payments::mojom::blink::PaymentResponsePtr response = 220 payments::mojom::blink::PaymentResponsePtr response =
221 payments::mojom::blink::PaymentResponse::New(); 221 payments::mojom::blink::PaymentResponse::New();
222 response->payer_email = ""; 222 response->payer_email = "";
223 223
224 request->show(scope.getScriptState()) 224 request->show(scope.getScriptState())
225 .then(funcs.expectNoCall(), funcs.expectCall()); 225 .then(funcs.expectNoCall(), funcs.expectCall());
226 226
227 static_cast<payments::mojom::blink::PaymentRequestClient*>(request) 227 static_cast<payments::mojom::blink::PaymentRequestClient*>(request)
228 ->OnPaymentResponse(std::move(response)); 228 ->OnPaymentResponse(std::move(response));
229 } 229 }
230 230
231 // If the merchant requests a phone number, but the browser provides an empty 231 // If the merchant requests a phone number, but the browser provides an empty
232 // string for the phone number, reject the show() promise. 232 // string for the phone number, reject the show() promise.
233 TEST(OnPaymentResponseTest, RejectEmptyPhone) { 233 TEST(OnPaymentResponseTest, RejectEmptyPhone) {
234 V8TestingScope scope; 234 V8TestingScope scope;
235 PaymentRequestMockFunctionScope funcs(scope.getScriptState()); 235 PaymentRequestMockFunctionScope funcs(scope.getScriptState());
236 makePaymentRequestOriginSecure(scope.document()); 236 makePaymentRequestOriginSecure(scope.document());
237 PaymentOptions options; 237 PaymentOptions options;
238 options.setRequestPayerPhone(true); 238 options.setRequestPayerPhone(true);
239 PaymentRequest* request = PaymentRequest::create( 239 PaymentRequest* request = PaymentRequest::create(
240 scope.getExecutionContext(), buildPaymentMethodDataForTest(), 240 scope.getExecutionContext(), buildPaymentMethodDataForTest(),
241 buildPaymentDetailsForTest(), options, scope.getExceptionState()); 241 buildPaymentDetailsInitForTest(), options, scope.getExceptionState());
242 EXPECT_FALSE(scope.getExceptionState().hadException()); 242 EXPECT_FALSE(scope.getExceptionState().hadException());
243 payments::mojom::blink::PaymentResponsePtr response = 243 payments::mojom::blink::PaymentResponsePtr response =
244 payments::mojom::blink::PaymentResponse::New(); 244 payments::mojom::blink::PaymentResponse::New();
245 response->payer_phone = ""; 245 response->payer_phone = "";
246 246
247 request->show(scope.getScriptState()) 247 request->show(scope.getScriptState())
248 .then(funcs.expectNoCall(), funcs.expectCall()); 248 .then(funcs.expectNoCall(), funcs.expectCall());
249 249
250 static_cast<payments::mojom::blink::PaymentRequestClient*>(request) 250 static_cast<payments::mojom::blink::PaymentRequestClient*>(request)
251 ->OnPaymentResponse(std::move(response)); 251 ->OnPaymentResponse(std::move(response));
252 } 252 }
253 253
254 // If the merchant does not request shipping information, but the browser 254 // If the merchant does not request shipping information, but the browser
255 // provides a shipping address, reject the show() promise. 255 // provides a shipping address, reject the show() promise.
256 TEST(OnPaymentResponseTest, RejectNotRequestedAddress) { 256 TEST(OnPaymentResponseTest, RejectNotRequestedAddress) {
257 V8TestingScope scope; 257 V8TestingScope scope;
258 PaymentRequestMockFunctionScope funcs(scope.getScriptState()); 258 PaymentRequestMockFunctionScope funcs(scope.getScriptState());
259 makePaymentRequestOriginSecure(scope.document()); 259 makePaymentRequestOriginSecure(scope.document());
260 PaymentOptions options; 260 PaymentOptions options;
261 options.setRequestShipping(false); 261 options.setRequestShipping(false);
262 PaymentRequest* request = PaymentRequest::create( 262 PaymentRequest* request = PaymentRequest::create(
263 scope.getExecutionContext(), buildPaymentMethodDataForTest(), 263 scope.getExecutionContext(), buildPaymentMethodDataForTest(),
264 buildPaymentDetailsForTest(), options, scope.getExceptionState()); 264 buildPaymentDetailsInitForTest(), options, scope.getExceptionState());
265 ASSERT_FALSE(scope.getExceptionState().hadException()); 265 ASSERT_FALSE(scope.getExceptionState().hadException());
266 payments::mojom::blink::PaymentResponsePtr response = 266 payments::mojom::blink::PaymentResponsePtr response =
267 payments::mojom::blink::PaymentResponse::New(); 267 payments::mojom::blink::PaymentResponse::New();
268 response->shipping_address = payments::mojom::blink::PaymentAddress::New(); 268 response->shipping_address = payments::mojom::blink::PaymentAddress::New();
269 response->shipping_address->country = "US"; 269 response->shipping_address->country = "US";
270 response->shipping_address->language_code = "en"; 270 response->shipping_address->language_code = "en";
271 response->shipping_address->script_code = "Latn"; 271 response->shipping_address->script_code = "Latn";
272 272
273 request->show(scope.getScriptState()) 273 request->show(scope.getScriptState())
274 .then(funcs.expectNoCall(), funcs.expectCall()); 274 .then(funcs.expectNoCall(), funcs.expectCall());
275 275
276 static_cast<payments::mojom::blink::PaymentRequestClient*>(request) 276 static_cast<payments::mojom::blink::PaymentRequestClient*>(request)
277 ->OnPaymentResponse(std::move(response)); 277 ->OnPaymentResponse(std::move(response));
278 } 278 }
279 279
280 // If the merchant does not request shipping information, but the browser 280 // If the merchant does not request shipping information, but the browser
281 // provides a shipping option, reject the show() promise. 281 // provides a shipping option, reject the show() promise.
282 TEST(OnPaymentResponseTest, RejectNotRequestedShippingOption) { 282 TEST(OnPaymentResponseTest, RejectNotRequestedShippingOption) {
283 V8TestingScope scope; 283 V8TestingScope scope;
284 PaymentRequestMockFunctionScope funcs(scope.getScriptState()); 284 PaymentRequestMockFunctionScope funcs(scope.getScriptState());
285 makePaymentRequestOriginSecure(scope.document()); 285 makePaymentRequestOriginSecure(scope.document());
286 PaymentOptions options; 286 PaymentOptions options;
287 options.setRequestShipping(false); 287 options.setRequestShipping(false);
288 PaymentRequest* request = PaymentRequest::create( 288 PaymentRequest* request = PaymentRequest::create(
289 scope.getExecutionContext(), buildPaymentMethodDataForTest(), 289 scope.getExecutionContext(), buildPaymentMethodDataForTest(),
290 buildPaymentDetailsForTest(), options, scope.getExceptionState()); 290 buildPaymentDetailsInitForTest(), options, scope.getExceptionState());
291 ASSERT_FALSE(scope.getExceptionState().hadException()); 291 ASSERT_FALSE(scope.getExceptionState().hadException());
292 payments::mojom::blink::PaymentResponsePtr response = 292 payments::mojom::blink::PaymentResponsePtr response =
293 payments::mojom::blink::PaymentResponse::New(); 293 payments::mojom::blink::PaymentResponse::New();
294 response->shipping_option = ""; 294 response->shipping_option = "";
295 295
296 request->show(scope.getScriptState()) 296 request->show(scope.getScriptState())
297 .then(funcs.expectNoCall(), funcs.expectCall()); 297 .then(funcs.expectNoCall(), funcs.expectCall());
298 298
299 static_cast<payments::mojom::blink::PaymentRequestClient*>(request) 299 static_cast<payments::mojom::blink::PaymentRequestClient*>(request)
300 ->OnPaymentResponse(std::move(response)); 300 ->OnPaymentResponse(std::move(response));
301 } 301 }
302 302
303 // If the merchant does not request a payer name, but the browser provides it, 303 // If the merchant does not request a payer name, but the browser provides it,
304 // reject the show() promise. 304 // reject the show() promise.
305 TEST(OnPaymentResponseTest, RejectNotRequestedName) { 305 TEST(OnPaymentResponseTest, RejectNotRequestedName) {
306 V8TestingScope scope; 306 V8TestingScope scope;
307 PaymentRequestMockFunctionScope funcs(scope.getScriptState()); 307 PaymentRequestMockFunctionScope funcs(scope.getScriptState());
308 makePaymentRequestOriginSecure(scope.document()); 308 makePaymentRequestOriginSecure(scope.document());
309 PaymentOptions options; 309 PaymentOptions options;
310 options.setRequestPayerName(false); 310 options.setRequestPayerName(false);
311 PaymentRequest* request = PaymentRequest::create( 311 PaymentRequest* request = PaymentRequest::create(
312 scope.getExecutionContext(), buildPaymentMethodDataForTest(), 312 scope.getExecutionContext(), buildPaymentMethodDataForTest(),
313 buildPaymentDetailsForTest(), options, scope.getExceptionState()); 313 buildPaymentDetailsInitForTest(), options, scope.getExceptionState());
314 EXPECT_FALSE(scope.getExceptionState().hadException()); 314 EXPECT_FALSE(scope.getExceptionState().hadException());
315 payments::mojom::blink::PaymentResponsePtr response = 315 payments::mojom::blink::PaymentResponsePtr response =
316 payments::mojom::blink::PaymentResponse::New(); 316 payments::mojom::blink::PaymentResponse::New();
317 response->payer_name = ""; 317 response->payer_name = "";
318 318
319 request->show(scope.getScriptState()) 319 request->show(scope.getScriptState())
320 .then(funcs.expectNoCall(), funcs.expectCall()); 320 .then(funcs.expectNoCall(), funcs.expectCall());
321 321
322 static_cast<payments::mojom::blink::PaymentRequestClient*>(request) 322 static_cast<payments::mojom::blink::PaymentRequestClient*>(request)
323 ->OnPaymentResponse(std::move(response)); 323 ->OnPaymentResponse(std::move(response));
324 } 324 }
325 325
326 // If the merchant does not request an email, but the browser provides it, 326 // If the merchant does not request an email, but the browser provides it,
327 // reject the show() promise. 327 // reject the show() promise.
328 TEST(OnPaymentResponseTest, RejectNotRequestedEmail) { 328 TEST(OnPaymentResponseTest, RejectNotRequestedEmail) {
329 V8TestingScope scope; 329 V8TestingScope scope;
330 PaymentRequestMockFunctionScope funcs(scope.getScriptState()); 330 PaymentRequestMockFunctionScope funcs(scope.getScriptState());
331 makePaymentRequestOriginSecure(scope.document()); 331 makePaymentRequestOriginSecure(scope.document());
332 PaymentOptions options; 332 PaymentOptions options;
333 options.setRequestPayerEmail(false); 333 options.setRequestPayerEmail(false);
334 PaymentRequest* request = PaymentRequest::create( 334 PaymentRequest* request = PaymentRequest::create(
335 scope.getExecutionContext(), buildPaymentMethodDataForTest(), 335 scope.getExecutionContext(), buildPaymentMethodDataForTest(),
336 buildPaymentDetailsForTest(), options, scope.getExceptionState()); 336 buildPaymentDetailsInitForTest(), options, scope.getExceptionState());
337 EXPECT_FALSE(scope.getExceptionState().hadException()); 337 EXPECT_FALSE(scope.getExceptionState().hadException());
338 payments::mojom::blink::PaymentResponsePtr response = 338 payments::mojom::blink::PaymentResponsePtr response =
339 payments::mojom::blink::PaymentResponse::New(); 339 payments::mojom::blink::PaymentResponse::New();
340 response->payer_email = ""; 340 response->payer_email = "";
341 341
342 request->show(scope.getScriptState()) 342 request->show(scope.getScriptState())
343 .then(funcs.expectNoCall(), funcs.expectCall()); 343 .then(funcs.expectNoCall(), funcs.expectCall());
344 344
345 static_cast<payments::mojom::blink::PaymentRequestClient*>(request) 345 static_cast<payments::mojom::blink::PaymentRequestClient*>(request)
346 ->OnPaymentResponse(std::move(response)); 346 ->OnPaymentResponse(std::move(response));
347 } 347 }
348 348
349 // If the merchant does not request a phone number, but the browser provides it, 349 // If the merchant does not request a phone number, but the browser provides it,
350 // reject the show() promise. 350 // reject the show() promise.
351 TEST(OnPaymentResponseTest, RejectNotRequestedPhone) { 351 TEST(OnPaymentResponseTest, RejectNotRequestedPhone) {
352 V8TestingScope scope; 352 V8TestingScope scope;
353 PaymentRequestMockFunctionScope funcs(scope.getScriptState()); 353 PaymentRequestMockFunctionScope funcs(scope.getScriptState());
354 makePaymentRequestOriginSecure(scope.document()); 354 makePaymentRequestOriginSecure(scope.document());
355 PaymentOptions options; 355 PaymentOptions options;
356 options.setRequestPayerPhone(false); 356 options.setRequestPayerPhone(false);
357 PaymentRequest* request = PaymentRequest::create( 357 PaymentRequest* request = PaymentRequest::create(
358 scope.getExecutionContext(), buildPaymentMethodDataForTest(), 358 scope.getExecutionContext(), buildPaymentMethodDataForTest(),
359 buildPaymentDetailsForTest(), options, scope.getExceptionState()); 359 buildPaymentDetailsInitForTest(), options, scope.getExceptionState());
360 EXPECT_FALSE(scope.getExceptionState().hadException()); 360 EXPECT_FALSE(scope.getExceptionState().hadException());
361 payments::mojom::blink::PaymentResponsePtr response = 361 payments::mojom::blink::PaymentResponsePtr response =
362 payments::mojom::blink::PaymentResponse::New(); 362 payments::mojom::blink::PaymentResponse::New();
363 response->payer_phone = ""; 363 response->payer_phone = "";
364 364
365 request->show(scope.getScriptState()) 365 request->show(scope.getScriptState())
366 .then(funcs.expectNoCall(), funcs.expectCall()); 366 .then(funcs.expectNoCall(), funcs.expectCall());
367 367
368 static_cast<payments::mojom::blink::PaymentRequestClient*>(request) 368 static_cast<payments::mojom::blink::PaymentRequestClient*>(request)
369 ->OnPaymentResponse(std::move(response)); 369 ->OnPaymentResponse(std::move(response));
370 } 370 }
371 371
372 // If the merchant requests shipping information, but the browser provides an 372 // If the merchant requests shipping information, but the browser provides an
373 // invalid shipping address, reject the show() promise. 373 // invalid shipping address, reject the show() promise.
374 TEST(OnPaymentResponseTest, RejectInvalidAddress) { 374 TEST(OnPaymentResponseTest, RejectInvalidAddress) {
375 V8TestingScope scope; 375 V8TestingScope scope;
376 PaymentRequestMockFunctionScope funcs(scope.getScriptState()); 376 PaymentRequestMockFunctionScope funcs(scope.getScriptState());
377 makePaymentRequestOriginSecure(scope.document()); 377 makePaymentRequestOriginSecure(scope.document());
378 PaymentOptions options; 378 PaymentOptions options;
379 options.setRequestShipping(true); 379 options.setRequestShipping(true);
380 PaymentRequest* request = PaymentRequest::create( 380 PaymentRequest* request = PaymentRequest::create(
381 scope.getExecutionContext(), buildPaymentMethodDataForTest(), 381 scope.getExecutionContext(), buildPaymentMethodDataForTest(),
382 buildPaymentDetailsForTest(), options, scope.getExceptionState()); 382 buildPaymentDetailsInitForTest(), options, scope.getExceptionState());
383 ASSERT_FALSE(scope.getExceptionState().hadException()); 383 ASSERT_FALSE(scope.getExceptionState().hadException());
384 payments::mojom::blink::PaymentResponsePtr response = 384 payments::mojom::blink::PaymentResponsePtr response =
385 buildPaymentResponseForTest(); 385 buildPaymentResponseForTest();
386 response->shipping_option = "standardShipping"; 386 response->shipping_option = "standardShipping";
387 response->shipping_address = payments::mojom::blink::PaymentAddress::New(); 387 response->shipping_address = payments::mojom::blink::PaymentAddress::New();
388 response->shipping_address->country = "Atlantis"; 388 response->shipping_address->country = "Atlantis";
389 389
390 request->show(scope.getScriptState()) 390 request->show(scope.getScriptState())
391 .then(funcs.expectNoCall(), funcs.expectCall()); 391 .then(funcs.expectNoCall(), funcs.expectCall());
392 392
(...skipping 28 matching lines...) Expand all
421 // If the merchant requests shipping information, the resolved show() promise 421 // If the merchant requests shipping information, the resolved show() promise
422 // should contain a shipping option and an address. 422 // should contain a shipping option and an address.
423 TEST(OnPaymentResponseTest, CanRequestShippingInformation) { 423 TEST(OnPaymentResponseTest, CanRequestShippingInformation) {
424 V8TestingScope scope; 424 V8TestingScope scope;
425 PaymentRequestMockFunctionScope funcs(scope.getScriptState()); 425 PaymentRequestMockFunctionScope funcs(scope.getScriptState());
426 makePaymentRequestOriginSecure(scope.document()); 426 makePaymentRequestOriginSecure(scope.document());
427 PaymentOptions options; 427 PaymentOptions options;
428 options.setRequestShipping(true); 428 options.setRequestShipping(true);
429 PaymentRequest* request = PaymentRequest::create( 429 PaymentRequest* request = PaymentRequest::create(
430 scope.getExecutionContext(), buildPaymentMethodDataForTest(), 430 scope.getExecutionContext(), buildPaymentMethodDataForTest(),
431 buildPaymentDetailsForTest(), options, scope.getExceptionState()); 431 buildPaymentDetailsInitForTest(), options, scope.getExceptionState());
432 ASSERT_FALSE(scope.getExceptionState().hadException()); 432 ASSERT_FALSE(scope.getExceptionState().hadException());
433 payments::mojom::blink::PaymentResponsePtr response = 433 payments::mojom::blink::PaymentResponsePtr response =
434 buildPaymentResponseForTest(); 434 buildPaymentResponseForTest();
435 response->shipping_option = "standardShipping"; 435 response->shipping_option = "standardShipping";
436 response->shipping_address = payments::mojom::blink::PaymentAddress::New(); 436 response->shipping_address = payments::mojom::blink::PaymentAddress::New();
437 response->shipping_address->country = "US"; 437 response->shipping_address->country = "US";
438 response->shipping_address->language_code = "en"; 438 response->shipping_address->language_code = "en";
439 response->shipping_address->script_code = "Latn"; 439 response->shipping_address->script_code = "Latn";
440 ScriptValue outValue; 440 ScriptValue outValue;
441 request->show(scope.getScriptState()) 441 request->show(scope.getScriptState())
(...skipping 14 matching lines...) Expand all
456 // If the merchant requests a payer name, the resolved show() promise should 456 // If the merchant requests a payer name, the resolved show() promise should
457 // contain a payer name. 457 // contain a payer name.
458 TEST(OnPaymentResponseTest, CanRequestName) { 458 TEST(OnPaymentResponseTest, CanRequestName) {
459 V8TestingScope scope; 459 V8TestingScope scope;
460 PaymentRequestMockFunctionScope funcs(scope.getScriptState()); 460 PaymentRequestMockFunctionScope funcs(scope.getScriptState());
461 makePaymentRequestOriginSecure(scope.document()); 461 makePaymentRequestOriginSecure(scope.document());
462 PaymentOptions options; 462 PaymentOptions options;
463 options.setRequestPayerName(true); 463 options.setRequestPayerName(true);
464 PaymentRequest* request = PaymentRequest::create( 464 PaymentRequest* request = PaymentRequest::create(
465 scope.getExecutionContext(), buildPaymentMethodDataForTest(), 465 scope.getExecutionContext(), buildPaymentMethodDataForTest(),
466 buildPaymentDetailsForTest(), options, scope.getExceptionState()); 466 buildPaymentDetailsInitForTest(), options, scope.getExceptionState());
467 EXPECT_FALSE(scope.getExceptionState().hadException()); 467 EXPECT_FALSE(scope.getExceptionState().hadException());
468 payments::mojom::blink::PaymentResponsePtr response = 468 payments::mojom::blink::PaymentResponsePtr response =
469 payments::mojom::blink::PaymentResponse::New(); 469 payments::mojom::blink::PaymentResponse::New();
470 response->payer_name = "Jon Doe"; 470 response->payer_name = "Jon Doe";
471 ScriptValue outValue; 471 ScriptValue outValue;
472 request->show(scope.getScriptState()) 472 request->show(scope.getScriptState())
473 .then(PaymentResponseFunction::create(scope.getScriptState(), &outValue), 473 .then(PaymentResponseFunction::create(scope.getScriptState(), &outValue),
474 funcs.expectNoCall()); 474 funcs.expectNoCall());
475 475
476 static_cast<payments::mojom::blink::PaymentRequestClient*>(request) 476 static_cast<payments::mojom::blink::PaymentRequestClient*>(request)
477 ->OnPaymentResponse(std::move(response)); 477 ->OnPaymentResponse(std::move(response));
478 478
479 v8::MicrotasksScope::PerformCheckpoint(scope.isolate()); 479 v8::MicrotasksScope::PerformCheckpoint(scope.isolate());
480 PaymentResponse* pr = V8PaymentResponse::toImplWithTypeCheck( 480 PaymentResponse* pr = V8PaymentResponse::toImplWithTypeCheck(
481 scope.isolate(), outValue.v8Value()); 481 scope.isolate(), outValue.v8Value());
482 EXPECT_EQ("Jon Doe", pr->payerName()); 482 EXPECT_EQ("Jon Doe", pr->payerName());
483 } 483 }
484 484
485 // If the merchant requests an email address, the resolved show() promise should 485 // If the merchant requests an email address, the resolved show() promise should
486 // contain an email address. 486 // contain an email address.
487 TEST(OnPaymentResponseTest, CanRequestEmail) { 487 TEST(OnPaymentResponseTest, CanRequestEmail) {
488 V8TestingScope scope; 488 V8TestingScope scope;
489 PaymentRequestMockFunctionScope funcs(scope.getScriptState()); 489 PaymentRequestMockFunctionScope funcs(scope.getScriptState());
490 makePaymentRequestOriginSecure(scope.document()); 490 makePaymentRequestOriginSecure(scope.document());
491 PaymentOptions options; 491 PaymentOptions options;
492 options.setRequestPayerEmail(true); 492 options.setRequestPayerEmail(true);
493 PaymentRequest* request = PaymentRequest::create( 493 PaymentRequest* request = PaymentRequest::create(
494 scope.getExecutionContext(), buildPaymentMethodDataForTest(), 494 scope.getExecutionContext(), buildPaymentMethodDataForTest(),
495 buildPaymentDetailsForTest(), options, scope.getExceptionState()); 495 buildPaymentDetailsInitForTest(), options, scope.getExceptionState());
496 EXPECT_FALSE(scope.getExceptionState().hadException()); 496 EXPECT_FALSE(scope.getExceptionState().hadException());
497 payments::mojom::blink::PaymentResponsePtr response = 497 payments::mojom::blink::PaymentResponsePtr response =
498 payments::mojom::blink::PaymentResponse::New(); 498 payments::mojom::blink::PaymentResponse::New();
499 response->payer_email = "abc@gmail.com"; 499 response->payer_email = "abc@gmail.com";
500 ScriptValue outValue; 500 ScriptValue outValue;
501 request->show(scope.getScriptState()) 501 request->show(scope.getScriptState())
502 .then(PaymentResponseFunction::create(scope.getScriptState(), &outValue), 502 .then(PaymentResponseFunction::create(scope.getScriptState(), &outValue),
503 funcs.expectNoCall()); 503 funcs.expectNoCall());
504 504
505 static_cast<payments::mojom::blink::PaymentRequestClient*>(request) 505 static_cast<payments::mojom::blink::PaymentRequestClient*>(request)
506 ->OnPaymentResponse(std::move(response)); 506 ->OnPaymentResponse(std::move(response));
507 507
508 v8::MicrotasksScope::PerformCheckpoint(scope.isolate()); 508 v8::MicrotasksScope::PerformCheckpoint(scope.isolate());
509 PaymentResponse* pr = V8PaymentResponse::toImplWithTypeCheck( 509 PaymentResponse* pr = V8PaymentResponse::toImplWithTypeCheck(
510 scope.isolate(), outValue.v8Value()); 510 scope.isolate(), outValue.v8Value());
511 EXPECT_EQ("abc@gmail.com", pr->payerEmail()); 511 EXPECT_EQ("abc@gmail.com", pr->payerEmail());
512 } 512 }
513 513
514 // If the merchant requests a phone number, the resolved show() promise should 514 // If the merchant requests a phone number, the resolved show() promise should
515 // contain a phone number. 515 // contain a phone number.
516 TEST(OnPaymentResponseTest, CanRequestPhone) { 516 TEST(OnPaymentResponseTest, CanRequestPhone) {
517 V8TestingScope scope; 517 V8TestingScope scope;
518 PaymentRequestMockFunctionScope funcs(scope.getScriptState()); 518 PaymentRequestMockFunctionScope funcs(scope.getScriptState());
519 makePaymentRequestOriginSecure(scope.document()); 519 makePaymentRequestOriginSecure(scope.document());
520 PaymentOptions options; 520 PaymentOptions options;
521 options.setRequestPayerPhone(true); 521 options.setRequestPayerPhone(true);
522 PaymentRequest* request = PaymentRequest::create( 522 PaymentRequest* request = PaymentRequest::create(
523 scope.getExecutionContext(), buildPaymentMethodDataForTest(), 523 scope.getExecutionContext(), buildPaymentMethodDataForTest(),
524 buildPaymentDetailsForTest(), options, scope.getExceptionState()); 524 buildPaymentDetailsInitForTest(), options, scope.getExceptionState());
525 EXPECT_FALSE(scope.getExceptionState().hadException()); 525 EXPECT_FALSE(scope.getExceptionState().hadException());
526 payments::mojom::blink::PaymentResponsePtr response = 526 payments::mojom::blink::PaymentResponsePtr response =
527 payments::mojom::blink::PaymentResponse::New(); 527 payments::mojom::blink::PaymentResponse::New();
528 response->payer_phone = "0123"; 528 response->payer_phone = "0123";
529 529
530 ScriptValue outValue; 530 ScriptValue outValue;
531 request->show(scope.getScriptState()) 531 request->show(scope.getScriptState())
532 .then(PaymentResponseFunction::create(scope.getScriptState(), &outValue), 532 .then(PaymentResponseFunction::create(scope.getScriptState(), &outValue),
533 funcs.expectNoCall()); 533 funcs.expectNoCall());
534 534
535 static_cast<payments::mojom::blink::PaymentRequestClient*>(request) 535 static_cast<payments::mojom::blink::PaymentRequestClient*>(request)
536 ->OnPaymentResponse(std::move(response)); 536 ->OnPaymentResponse(std::move(response));
537 v8::MicrotasksScope::PerformCheckpoint(scope.isolate()); 537 v8::MicrotasksScope::PerformCheckpoint(scope.isolate());
538 PaymentResponse* pr = V8PaymentResponse::toImplWithTypeCheck( 538 PaymentResponse* pr = V8PaymentResponse::toImplWithTypeCheck(
539 scope.isolate(), outValue.v8Value()); 539 scope.isolate(), outValue.v8Value());
540 540
541 EXPECT_EQ("0123", pr->payerPhone()); 541 EXPECT_EQ("0123", pr->payerPhone());
542 } 542 }
543 543
544 // If the merchant does not request shipping information, the resolved show() 544 // If the merchant does not request shipping information, the resolved show()
545 // promise should contain null shipping option and address. 545 // promise should contain null shipping option and address.
546 TEST(OnPaymentResponseTest, ShippingInformationNotRequired) { 546 TEST(OnPaymentResponseTest, ShippingInformationNotRequired) {
547 V8TestingScope scope; 547 V8TestingScope scope;
548 PaymentRequestMockFunctionScope funcs(scope.getScriptState()); 548 PaymentRequestMockFunctionScope funcs(scope.getScriptState());
549 makePaymentRequestOriginSecure(scope.document()); 549 makePaymentRequestOriginSecure(scope.document());
550 PaymentOptions options; 550 PaymentOptions options;
551 options.setRequestShipping(false); 551 options.setRequestShipping(false);
552 PaymentRequest* request = PaymentRequest::create( 552 PaymentRequest* request = PaymentRequest::create(
553 scope.getExecutionContext(), buildPaymentMethodDataForTest(), 553 scope.getExecutionContext(), buildPaymentMethodDataForTest(),
554 buildPaymentDetailsForTest(), options, scope.getExceptionState()); 554 buildPaymentDetailsInitForTest(), options, scope.getExceptionState());
555 ASSERT_FALSE(scope.getExceptionState().hadException()); 555 ASSERT_FALSE(scope.getExceptionState().hadException());
556 ScriptValue outValue; 556 ScriptValue outValue;
557 request->show(scope.getScriptState()) 557 request->show(scope.getScriptState())
558 .then(PaymentResponseFunction::create(scope.getScriptState(), &outValue), 558 .then(PaymentResponseFunction::create(scope.getScriptState(), &outValue),
559 funcs.expectNoCall()); 559 funcs.expectNoCall());
560 560
561 static_cast<payments::mojom::blink::PaymentRequestClient*>(request) 561 static_cast<payments::mojom::blink::PaymentRequestClient*>(request)
562 ->OnPaymentResponse(buildPaymentResponseForTest()); 562 ->OnPaymentResponse(buildPaymentResponseForTest());
563 563
564 v8::MicrotasksScope::PerformCheckpoint(scope.isolate()); 564 v8::MicrotasksScope::PerformCheckpoint(scope.isolate());
565 PaymentResponse* resp = V8PaymentResponse::toImplWithTypeCheck( 565 PaymentResponse* resp = V8PaymentResponse::toImplWithTypeCheck(
566 scope.isolate(), outValue.v8Value()); 566 scope.isolate(), outValue.v8Value());
567 EXPECT_TRUE(resp->shippingOption().isNull()); 567 EXPECT_TRUE(resp->shippingOption().isNull());
568 EXPECT_EQ(nullptr, resp->shippingAddress()); 568 EXPECT_EQ(nullptr, resp->shippingAddress());
569 } 569 }
570 570
571 // If the merchant does not request a phone number, the resolved show() promise 571 // If the merchant does not request a phone number, the resolved show() promise
572 // should contain null phone number. 572 // should contain null phone number.
573 TEST(OnPaymentResponseTest, PhoneNotRequred) { 573 TEST(OnPaymentResponseTest, PhoneNotRequred) {
574 V8TestingScope scope; 574 V8TestingScope scope;
575 PaymentRequestMockFunctionScope funcs(scope.getScriptState()); 575 PaymentRequestMockFunctionScope funcs(scope.getScriptState());
576 makePaymentRequestOriginSecure(scope.document()); 576 makePaymentRequestOriginSecure(scope.document());
577 PaymentOptions options; 577 PaymentOptions options;
578 options.setRequestPayerPhone(false); 578 options.setRequestPayerPhone(false);
579 PaymentRequest* request = PaymentRequest::create( 579 PaymentRequest* request = PaymentRequest::create(
580 scope.getExecutionContext(), buildPaymentMethodDataForTest(), 580 scope.getExecutionContext(), buildPaymentMethodDataForTest(),
581 buildPaymentDetailsForTest(), options, scope.getExceptionState()); 581 buildPaymentDetailsInitForTest(), options, scope.getExceptionState());
582 EXPECT_FALSE(scope.getExceptionState().hadException()); 582 EXPECT_FALSE(scope.getExceptionState().hadException());
583 payments::mojom::blink::PaymentResponsePtr response = 583 payments::mojom::blink::PaymentResponsePtr response =
584 payments::mojom::blink::PaymentResponse::New(); 584 payments::mojom::blink::PaymentResponse::New();
585 response->payer_phone = String(); 585 response->payer_phone = String();
586 ScriptValue outValue; 586 ScriptValue outValue;
587 request->show(scope.getScriptState()) 587 request->show(scope.getScriptState())
588 .then(PaymentResponseFunction::create(scope.getScriptState(), &outValue), 588 .then(PaymentResponseFunction::create(scope.getScriptState(), &outValue),
589 funcs.expectNoCall()); 589 funcs.expectNoCall());
590 590
591 static_cast<payments::mojom::blink::PaymentRequestClient*>(request) 591 static_cast<payments::mojom::blink::PaymentRequestClient*>(request)
592 ->OnPaymentResponse(std::move(response)); 592 ->OnPaymentResponse(std::move(response));
593 593
594 v8::MicrotasksScope::PerformCheckpoint(scope.isolate()); 594 v8::MicrotasksScope::PerformCheckpoint(scope.isolate());
595 PaymentResponse* pr = V8PaymentResponse::toImplWithTypeCheck( 595 PaymentResponse* pr = V8PaymentResponse::toImplWithTypeCheck(
596 scope.isolate(), outValue.v8Value()); 596 scope.isolate(), outValue.v8Value());
597 EXPECT_TRUE(pr->payerPhone().isNull()); 597 EXPECT_TRUE(pr->payerPhone().isNull());
598 } 598 }
599 599
600 // If the merchant does not request a payer name, the resolved show() promise 600 // If the merchant does not request a payer name, the resolved show() promise
601 // should contain null payer name. 601 // should contain null payer name.
602 TEST(OnPaymentResponseTest, NameNotRequired) { 602 TEST(OnPaymentResponseTest, NameNotRequired) {
603 V8TestingScope scope; 603 V8TestingScope scope;
604 PaymentRequestMockFunctionScope funcs(scope.getScriptState()); 604 PaymentRequestMockFunctionScope funcs(scope.getScriptState());
605 makePaymentRequestOriginSecure(scope.document()); 605 makePaymentRequestOriginSecure(scope.document());
606 PaymentOptions options; 606 PaymentOptions options;
607 options.setRequestPayerName(false); 607 options.setRequestPayerName(false);
608 PaymentRequest* request = PaymentRequest::create( 608 PaymentRequest* request = PaymentRequest::create(
609 scope.getExecutionContext(), buildPaymentMethodDataForTest(), 609 scope.getExecutionContext(), buildPaymentMethodDataForTest(),
610 buildPaymentDetailsForTest(), options, scope.getExceptionState()); 610 buildPaymentDetailsInitForTest(), options, scope.getExceptionState());
611 EXPECT_FALSE(scope.getExceptionState().hadException()); 611 EXPECT_FALSE(scope.getExceptionState().hadException());
612 payments::mojom::blink::PaymentResponsePtr response = 612 payments::mojom::blink::PaymentResponsePtr response =
613 payments::mojom::blink::PaymentResponse::New(); 613 payments::mojom::blink::PaymentResponse::New();
614 response->payer_name = String(); 614 response->payer_name = String();
615 ScriptValue outValue; 615 ScriptValue outValue;
616 request->show(scope.getScriptState()) 616 request->show(scope.getScriptState())
617 .then(PaymentResponseFunction::create(scope.getScriptState(), &outValue), 617 .then(PaymentResponseFunction::create(scope.getScriptState(), &outValue),
618 funcs.expectNoCall()); 618 funcs.expectNoCall());
619 619
620 static_cast<payments::mojom::blink::PaymentRequestClient*>(request) 620 static_cast<payments::mojom::blink::PaymentRequestClient*>(request)
621 ->OnPaymentResponse(std::move(response)); 621 ->OnPaymentResponse(std::move(response));
622 622
623 v8::MicrotasksScope::PerformCheckpoint(scope.isolate()); 623 v8::MicrotasksScope::PerformCheckpoint(scope.isolate());
624 PaymentResponse* pr = V8PaymentResponse::toImplWithTypeCheck( 624 PaymentResponse* pr = V8PaymentResponse::toImplWithTypeCheck(
625 scope.isolate(), outValue.v8Value()); 625 scope.isolate(), outValue.v8Value());
626 EXPECT_TRUE(pr->payerName().isNull()); 626 EXPECT_TRUE(pr->payerName().isNull());
627 } 627 }
628 628
629 // If the merchant does not request an email address, the resolved show() 629 // If the merchant does not request an email address, the resolved show()
630 // promise should contain null email address. 630 // promise should contain null email address.
631 TEST(OnPaymentResponseTest, EmailNotRequired) { 631 TEST(OnPaymentResponseTest, EmailNotRequired) {
632 V8TestingScope scope; 632 V8TestingScope scope;
633 PaymentRequestMockFunctionScope funcs(scope.getScriptState()); 633 PaymentRequestMockFunctionScope funcs(scope.getScriptState());
634 makePaymentRequestOriginSecure(scope.document()); 634 makePaymentRequestOriginSecure(scope.document());
635 PaymentOptions options; 635 PaymentOptions options;
636 options.setRequestPayerEmail(false); 636 options.setRequestPayerEmail(false);
637 PaymentRequest* request = PaymentRequest::create( 637 PaymentRequest* request = PaymentRequest::create(
638 scope.getExecutionContext(), buildPaymentMethodDataForTest(), 638 scope.getExecutionContext(), buildPaymentMethodDataForTest(),
639 buildPaymentDetailsForTest(), options, scope.getExceptionState()); 639 buildPaymentDetailsInitForTest(), options, scope.getExceptionState());
640 EXPECT_FALSE(scope.getExceptionState().hadException()); 640 EXPECT_FALSE(scope.getExceptionState().hadException());
641 payments::mojom::blink::PaymentResponsePtr response = 641 payments::mojom::blink::PaymentResponsePtr response =
642 payments::mojom::blink::PaymentResponse::New(); 642 payments::mojom::blink::PaymentResponse::New();
643 response->payer_email = String(); 643 response->payer_email = String();
644 ScriptValue outValue; 644 ScriptValue outValue;
645 request->show(scope.getScriptState()) 645 request->show(scope.getScriptState())
646 .then(PaymentResponseFunction::create(scope.getScriptState(), &outValue), 646 .then(PaymentResponseFunction::create(scope.getScriptState(), &outValue),
647 funcs.expectNoCall()); 647 funcs.expectNoCall());
648 648
649 static_cast<payments::mojom::blink::PaymentRequestClient*>(request) 649 static_cast<payments::mojom::blink::PaymentRequestClient*>(request)
650 ->OnPaymentResponse(std::move(response)); 650 ->OnPaymentResponse(std::move(response));
651 651
652 v8::MicrotasksScope::PerformCheckpoint(scope.isolate()); 652 v8::MicrotasksScope::PerformCheckpoint(scope.isolate());
653 PaymentResponse* pr = V8PaymentResponse::toImplWithTypeCheck( 653 PaymentResponse* pr = V8PaymentResponse::toImplWithTypeCheck(
654 scope.isolate(), outValue.v8Value()); 654 scope.isolate(), outValue.v8Value());
655 EXPECT_TRUE(pr->payerEmail().isNull()); 655 EXPECT_TRUE(pr->payerEmail().isNull());
656 } 656 }
657 657
658 } // namespace 658 } // namespace
659 } // namespace blink 659 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698