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

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

Issue 2827963002: Log PaymentResponse.complete() timeout. (Closed)
Patch Set: 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 #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
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
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
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
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
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698