OLD | NEW |
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 #include "modules/payments/PaymentRequest.h" | 5 #include "modules/payments/PaymentRequest.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <utility> | 8 #include <utility> |
9 #include "bindings/core/v8/ExceptionState.h" | 9 #include "bindings/core/v8/ExceptionState.h" |
10 #include "bindings/core/v8/ScriptPromiseResolver.h" | 10 #include "bindings/core/v8/ScriptPromiseResolver.h" |
(...skipping 27 matching lines...) Expand all Loading... |
38 #include "modules/payments/PaymentShippingOption.h" | 38 #include "modules/payments/PaymentShippingOption.h" |
39 #include "modules/payments/PaymentsValidators.h" | 39 #include "modules/payments/PaymentsValidators.h" |
40 #include "mojo/public/cpp/bindings/interface_request.h" | 40 #include "mojo/public/cpp/bindings/interface_request.h" |
41 #include "platform/RuntimeEnabledFeatures.h" | 41 #include "platform/RuntimeEnabledFeatures.h" |
42 #include "platform/mojo/MojoHelper.h" | 42 #include "platform/mojo/MojoHelper.h" |
43 #include "platform/wtf/HashSet.h" | 43 #include "platform/wtf/HashSet.h" |
44 #include "public/platform/InterfaceProvider.h" | 44 #include "public/platform/InterfaceProvider.h" |
45 #include "public/platform/Platform.h" | 45 #include "public/platform/Platform.h" |
46 #include "public/platform/WebTraceLocation.h" | 46 #include "public/platform/WebTraceLocation.h" |
47 | 47 |
48 using payments::mojom::blink::CanMakePaymentQueryResult; | 48 namespace { |
49 using payments::mojom::blink::PaymentAddressPtr; | 49 |
50 using payments::mojom::blink::PaymentCurrencyAmount; | 50 using ::payments::mojom::blink::CanMakePaymentQueryResult; |
51 using payments::mojom::blink::PaymentCurrencyAmountPtr; | 51 using ::payments::mojom::blink::PaymentAddressPtr; |
52 using payments::mojom::blink::PaymentDetailsModifierPtr; | 52 using ::payments::mojom::blink::PaymentCurrencyAmount; |
53 using payments::mojom::blink::PaymentDetailsPtr; | 53 using ::payments::mojom::blink::PaymentCurrencyAmountPtr; |
54 using payments::mojom::blink::PaymentErrorReason; | 54 using ::payments::mojom::blink::PaymentDetailsModifierPtr; |
55 using payments::mojom::blink::PaymentItemPtr; | 55 using ::payments::mojom::blink::PaymentDetailsPtr; |
56 using payments::mojom::blink::PaymentMethodDataPtr; | 56 using ::payments::mojom::blink::PaymentErrorReason; |
57 using payments::mojom::blink::PaymentOptionsPtr; | 57 using ::payments::mojom::blink::PaymentItemPtr; |
58 using payments::mojom::blink::PaymentResponsePtr; | 58 using ::payments::mojom::blink::PaymentMethodDataPtr; |
59 using payments::mojom::blink::PaymentShippingOptionPtr; | 59 using ::payments::mojom::blink::PaymentOptionsPtr; |
60 using payments::mojom::blink::PaymentShippingType; | 60 using ::payments::mojom::blink::PaymentResponsePtr; |
| 61 using ::payments::mojom::blink::PaymentShippingOptionPtr; |
| 62 using ::payments::mojom::blink::PaymentShippingType; |
| 63 |
| 64 } // namespace |
61 | 65 |
62 namespace mojo { | 66 namespace mojo { |
63 | 67 |
64 template <> | 68 template <> |
65 struct TypeConverter<PaymentCurrencyAmountPtr, blink::PaymentCurrencyAmount> { | 69 struct TypeConverter<PaymentCurrencyAmountPtr, blink::PaymentCurrencyAmount> { |
66 static PaymentCurrencyAmountPtr Convert( | 70 static PaymentCurrencyAmountPtr Convert( |
67 const blink::PaymentCurrencyAmount& input) { | 71 const blink::PaymentCurrencyAmount& input) { |
68 PaymentCurrencyAmountPtr output = PaymentCurrencyAmount::New(); | 72 PaymentCurrencyAmountPtr output = PaymentCurrencyAmount::New(); |
69 output->currency = input.currency(); | 73 output->currency = input.currency(); |
70 output->value = input.value(); | 74 output->value = input.value(); |
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
248 bool ok = false; | 252 bool ok = false; |
249 int min_google_play_services_version = | 253 int min_google_play_services_version = |
250 android_pay.minGooglePlayServicesVersion().ToIntStrict(&ok); | 254 android_pay.minGooglePlayServicesVersion().ToIntStrict(&ok); |
251 if (ok) { | 255 if (ok) { |
252 output->min_google_play_services_version = | 256 output->min_google_play_services_version = |
253 min_google_play_services_version; | 257 min_google_play_services_version; |
254 } | 258 } |
255 } | 259 } |
256 | 260 |
257 if (android_pay.hasAllowedCardNetworks()) { | 261 if (android_pay.hasAllowedCardNetworks()) { |
258 using payments::mojom::blink::AndroidPayCardNetwork; | 262 using ::payments::mojom::blink::AndroidPayCardNetwork; |
259 | 263 |
260 const struct { | 264 const struct { |
261 const AndroidPayCardNetwork code; | 265 const AndroidPayCardNetwork code; |
262 const char* const name; | 266 const char* const name; |
263 } kAndroidPayNetwork[] = {{AndroidPayCardNetwork::AMEX, "AMEX"}, | 267 } kAndroidPayNetwork[] = {{AndroidPayCardNetwork::AMEX, "AMEX"}, |
264 {AndroidPayCardNetwork::DISCOVER, "DISCOVER"}, | 268 {AndroidPayCardNetwork::DISCOVER, "DISCOVER"}, |
265 {AndroidPayCardNetwork::MASTERCARD, "MASTERCARD"}, | 269 {AndroidPayCardNetwork::MASTERCARD, "MASTERCARD"}, |
266 {AndroidPayCardNetwork::VISA, "VISA"}}; | 270 {AndroidPayCardNetwork::VISA, "VISA"}}; |
267 | 271 |
268 for (const String& allowed_card_network : | 272 for (const String& allowed_card_network : |
269 android_pay.allowedCardNetworks()) { | 273 android_pay.allowedCardNetworks()) { |
270 for (size_t i = 0; i < arraysize(kAndroidPayNetwork); ++i) { | 274 for (size_t i = 0; i < arraysize(kAndroidPayNetwork); ++i) { |
271 if (allowed_card_network == kAndroidPayNetwork[i].name) { | 275 if (allowed_card_network == kAndroidPayNetwork[i].name) { |
272 output->allowed_card_networks.push_back(kAndroidPayNetwork[i].code); | 276 output->allowed_card_networks.push_back(kAndroidPayNetwork[i].code); |
273 break; | 277 break; |
274 } | 278 } |
275 } | 279 } |
276 } | 280 } |
277 } | 281 } |
278 | 282 |
279 if (android_pay.hasPaymentMethodTokenizationParameters()) { | 283 if (android_pay.hasPaymentMethodTokenizationParameters()) { |
280 const blink::AndroidPayTokenization& tokenization = | 284 const blink::AndroidPayTokenization& tokenization = |
281 android_pay.paymentMethodTokenizationParameters(); | 285 android_pay.paymentMethodTokenizationParameters(); |
282 output->tokenization_type = | 286 output->tokenization_type = |
283 payments::mojom::blink::AndroidPayTokenization::UNSPECIFIED; | 287 payments::mojom::blink::AndroidPayTokenization::UNSPECIFIED; |
284 if (tokenization.hasTokenizationType()) { | 288 if (tokenization.hasTokenizationType()) { |
285 using payments::mojom::blink::AndroidPayTokenization; | 289 using ::payments::mojom::blink::AndroidPayTokenization; |
286 | 290 |
287 const struct { | 291 const struct { |
288 const AndroidPayTokenization code; | 292 const AndroidPayTokenization code; |
289 const char* const name; | 293 const char* const name; |
290 } kAndroidPayTokenization[] = { | 294 } kAndroidPayTokenization[] = { |
291 {AndroidPayTokenization::GATEWAY_TOKEN, "GATEWAY_TOKEN"}, | 295 {AndroidPayTokenization::GATEWAY_TOKEN, "GATEWAY_TOKEN"}, |
292 {AndroidPayTokenization::NETWORK_TOKEN, "NETWORK_TOKEN"}}; | 296 {AndroidPayTokenization::NETWORK_TOKEN, "NETWORK_TOKEN"}}; |
293 | 297 |
294 for (size_t i = 0; i < arraysize(kAndroidPayTokenization); ++i) { | 298 for (size_t i = 0; i < arraysize(kAndroidPayTokenization); ++i) { |
295 if (tokenization.tokenizationType() == | 299 if (tokenization.tokenizationType() == |
(...skipping 27 matching lines...) Expand all Loading... |
323 PaymentMethodDataPtr& output, | 327 PaymentMethodDataPtr& output, |
324 ExecutionContext& execution_context, | 328 ExecutionContext& execution_context, |
325 ExceptionState& exception_state) { | 329 ExceptionState& exception_state) { |
326 BasicCardRequest basic_card; | 330 BasicCardRequest basic_card; |
327 V8BasicCardRequest::toImpl(input.GetIsolate(), input.V8Value(), basic_card, | 331 V8BasicCardRequest::toImpl(input.GetIsolate(), input.V8Value(), basic_card, |
328 exception_state); | 332 exception_state); |
329 if (exception_state.HadException()) | 333 if (exception_state.HadException()) |
330 return; | 334 return; |
331 | 335 |
332 if (basic_card.hasSupportedNetworks()) { | 336 if (basic_card.hasSupportedNetworks()) { |
333 using payments::mojom::blink::BasicCardNetwork; | 337 using ::payments::mojom::blink::BasicCardNetwork; |
334 | 338 |
335 const struct { | 339 const struct { |
336 const BasicCardNetwork code; | 340 const BasicCardNetwork code; |
337 const char* const name; | 341 const char* const name; |
338 } kBasicCardNetworks[] = {{BasicCardNetwork::AMEX, "amex"}, | 342 } kBasicCardNetworks[] = {{BasicCardNetwork::AMEX, "amex"}, |
339 {BasicCardNetwork::DINERS, "diners"}, | 343 {BasicCardNetwork::DINERS, "diners"}, |
340 {BasicCardNetwork::DISCOVER, "discover"}, | 344 {BasicCardNetwork::DISCOVER, "discover"}, |
341 {BasicCardNetwork::JCB, "jcb"}, | 345 {BasicCardNetwork::JCB, "jcb"}, |
342 {BasicCardNetwork::MASTERCARD, "mastercard"}, | 346 {BasicCardNetwork::MASTERCARD, "mastercard"}, |
343 {BasicCardNetwork::MIR, "mir"}, | 347 {BasicCardNetwork::MIR, "mir"}, |
344 {BasicCardNetwork::UNIONPAY, "unionpay"}, | 348 {BasicCardNetwork::UNIONPAY, "unionpay"}, |
345 {BasicCardNetwork::VISA, "visa"}}; | 349 {BasicCardNetwork::VISA, "visa"}}; |
346 | 350 |
347 for (const String& network : basic_card.supportedNetworks()) { | 351 for (const String& network : basic_card.supportedNetworks()) { |
348 for (size_t i = 0; i < arraysize(kBasicCardNetworks); ++i) { | 352 for (size_t i = 0; i < arraysize(kBasicCardNetworks); ++i) { |
349 if (network == kBasicCardNetworks[i].name) { | 353 if (network == kBasicCardNetworks[i].name) { |
350 output->supported_networks.push_back(kBasicCardNetworks[i].code); | 354 output->supported_networks.push_back(kBasicCardNetworks[i].code); |
351 break; | 355 break; |
352 } | 356 } |
353 } | 357 } |
354 } | 358 } |
355 } | 359 } |
356 | 360 |
357 if (basic_card.hasSupportedTypes()) { | 361 if (basic_card.hasSupportedTypes()) { |
358 using payments::mojom::blink::BasicCardType; | 362 using ::payments::mojom::blink::BasicCardType; |
359 | 363 |
360 const struct { | 364 const struct { |
361 const BasicCardType code; | 365 const BasicCardType code; |
362 const char* const name; | 366 const char* const name; |
363 } kBasicCardTypes[] = {{BasicCardType::CREDIT, "credit"}, | 367 } kBasicCardTypes[] = {{BasicCardType::CREDIT, "credit"}, |
364 {BasicCardType::DEBIT, "debit"}, | 368 {BasicCardType::DEBIT, "debit"}, |
365 {BasicCardType::PREPAID, "prepaid"}}; | 369 {BasicCardType::PREPAID, "prepaid"}}; |
366 | 370 |
367 for (const String& type : basic_card.supportedTypes()) { | 371 for (const String& type : basic_card.supportedTypes()) { |
368 for (size_t i = 0; i < arraysize(kBasicCardTypes); ++i) { | 372 for (size_t i = 0; i < arraysize(kBasicCardTypes); ++i) { |
(...skipping 694 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1063 case CanMakePaymentQueryResult::QUERY_QUOTA_EXCEEDED: | 1067 case CanMakePaymentQueryResult::QUERY_QUOTA_EXCEEDED: |
1064 can_make_payment_resolver_->Reject(DOMException::Create( | 1068 can_make_payment_resolver_->Reject(DOMException::Create( |
1065 kNotAllowedError, "Not allowed to check whether can make payment")); | 1069 kNotAllowedError, "Not allowed to check whether can make payment")); |
1066 break; | 1070 break; |
1067 } | 1071 } |
1068 | 1072 |
1069 can_make_payment_resolver_.Clear(); | 1073 can_make_payment_resolver_.Clear(); |
1070 } | 1074 } |
1071 | 1075 |
1072 void PaymentRequest::OnCompleteTimeout(TimerBase*) { | 1076 void PaymentRequest::OnCompleteTimeout(TimerBase*) { |
| 1077 GetExecutionContext()->AddConsoleMessage(ConsoleMessage::Create( |
| 1078 kJSMessageSource, kErrorMessageLevel, |
| 1079 "Timed out waiting for a PaymentResponse.complete() call.")); |
1073 payment_provider_->Complete(payments::mojom::blink::PaymentComplete(kFail)); | 1080 payment_provider_->Complete(payments::mojom::blink::PaymentComplete(kFail)); |
1074 ClearResolversAndCloseMojoConnection(); | 1081 ClearResolversAndCloseMojoConnection(); |
1075 } | 1082 } |
1076 | 1083 |
1077 void PaymentRequest::ClearResolversAndCloseMojoConnection() { | 1084 void PaymentRequest::ClearResolversAndCloseMojoConnection() { |
1078 complete_timer_.Stop(); | 1085 complete_timer_.Stop(); |
1079 complete_resolver_.Clear(); | 1086 complete_resolver_.Clear(); |
1080 show_resolver_.Clear(); | 1087 show_resolver_.Clear(); |
1081 abort_resolver_.Clear(); | 1088 abort_resolver_.Clear(); |
1082 can_make_payment_resolver_.Clear(); | 1089 can_make_payment_resolver_.Clear(); |
1083 if (client_binding_.is_bound()) | 1090 if (client_binding_.is_bound()) |
1084 client_binding_.Close(); | 1091 client_binding_.Close(); |
1085 payment_provider_.reset(); | 1092 payment_provider_.reset(); |
1086 } | 1093 } |
1087 | 1094 |
1088 } // namespace blink | 1095 } // namespace blink |
OLD | NEW |