Commit bb7503ea authored by rouslan's avatar rouslan Committed by Commit bot

Log PaymentResponse.complete() timeout.

Before this patch, if the merchant website never calls
PaymentResponse.complete(), then the UI shows a generic error dialog to
the user and aborts payment, but nothing indicates to the web developer
that it was a timeout that causes the closing of the web payment UI.

The fix is to add a console error message "Timed out waiting for a
PaymentResponse.complete() call" when the timer expires.

After this patch, the console error message will indicate to the web
developer that it was a timeout that causes the closing of the web
payment UI.

To test manually:
1) Open https://rsolomakhin.github.io/pr/ko/complete/.
2) Click [Buy] on the page.
3) Click [Pay] in the web payment UI.
Observe: Console prints an error message after 60 seconds.

BUG=711027

Review-Url: https://codereview.chromium.org/2827963002
Cr-Commit-Position: refs/heads/master@{#465694}
parent 074e7cf1
...@@ -45,19 +45,23 @@ ...@@ -45,19 +45,23 @@
#include "public/platform/Platform.h" #include "public/platform/Platform.h"
#include "public/platform/WebTraceLocation.h" #include "public/platform/WebTraceLocation.h"
using payments::mojom::blink::CanMakePaymentQueryResult; namespace {
using payments::mojom::blink::PaymentAddressPtr;
using payments::mojom::blink::PaymentCurrencyAmount; using ::payments::mojom::blink::CanMakePaymentQueryResult;
using payments::mojom::blink::PaymentCurrencyAmountPtr; using ::payments::mojom::blink::PaymentAddressPtr;
using payments::mojom::blink::PaymentDetailsModifierPtr; using ::payments::mojom::blink::PaymentCurrencyAmount;
using payments::mojom::blink::PaymentDetailsPtr; using ::payments::mojom::blink::PaymentCurrencyAmountPtr;
using payments::mojom::blink::PaymentErrorReason; using ::payments::mojom::blink::PaymentDetailsModifierPtr;
using payments::mojom::blink::PaymentItemPtr; using ::payments::mojom::blink::PaymentDetailsPtr;
using payments::mojom::blink::PaymentMethodDataPtr; using ::payments::mojom::blink::PaymentErrorReason;
using payments::mojom::blink::PaymentOptionsPtr; using ::payments::mojom::blink::PaymentItemPtr;
using payments::mojom::blink::PaymentResponsePtr; using ::payments::mojom::blink::PaymentMethodDataPtr;
using payments::mojom::blink::PaymentShippingOptionPtr; using ::payments::mojom::blink::PaymentOptionsPtr;
using payments::mojom::blink::PaymentShippingType; using ::payments::mojom::blink::PaymentResponsePtr;
using ::payments::mojom::blink::PaymentShippingOptionPtr;
using ::payments::mojom::blink::PaymentShippingType;
} // namespace
namespace mojo { namespace mojo {
...@@ -255,7 +259,7 @@ void SetAndroidPayMethodData(const ScriptValue& input, ...@@ -255,7 +259,7 @@ void SetAndroidPayMethodData(const ScriptValue& input,
} }
if (android_pay.hasAllowedCardNetworks()) { if (android_pay.hasAllowedCardNetworks()) {
using payments::mojom::blink::AndroidPayCardNetwork; using ::payments::mojom::blink::AndroidPayCardNetwork;
const struct { const struct {
const AndroidPayCardNetwork code; const AndroidPayCardNetwork code;
...@@ -282,7 +286,7 @@ void SetAndroidPayMethodData(const ScriptValue& input, ...@@ -282,7 +286,7 @@ void SetAndroidPayMethodData(const ScriptValue& input,
output->tokenization_type = output->tokenization_type =
payments::mojom::blink::AndroidPayTokenization::UNSPECIFIED; payments::mojom::blink::AndroidPayTokenization::UNSPECIFIED;
if (tokenization.hasTokenizationType()) { if (tokenization.hasTokenizationType()) {
using payments::mojom::blink::AndroidPayTokenization; using ::payments::mojom::blink::AndroidPayTokenization;
const struct { const struct {
const AndroidPayTokenization code; const AndroidPayTokenization code;
...@@ -330,7 +334,7 @@ void SetBasicCardMethodData(const ScriptValue& input, ...@@ -330,7 +334,7 @@ void SetBasicCardMethodData(const ScriptValue& input,
return; return;
if (basic_card.hasSupportedNetworks()) { if (basic_card.hasSupportedNetworks()) {
using payments::mojom::blink::BasicCardNetwork; using ::payments::mojom::blink::BasicCardNetwork;
const struct { const struct {
const BasicCardNetwork code; const BasicCardNetwork code;
...@@ -355,7 +359,7 @@ void SetBasicCardMethodData(const ScriptValue& input, ...@@ -355,7 +359,7 @@ void SetBasicCardMethodData(const ScriptValue& input,
} }
if (basic_card.hasSupportedTypes()) { if (basic_card.hasSupportedTypes()) {
using payments::mojom::blink::BasicCardType; using ::payments::mojom::blink::BasicCardType;
const struct { const struct {
const BasicCardType code; const BasicCardType code;
...@@ -1070,6 +1074,9 @@ void PaymentRequest::OnCanMakePayment(CanMakePaymentQueryResult result) { ...@@ -1070,6 +1074,9 @@ void PaymentRequest::OnCanMakePayment(CanMakePaymentQueryResult result) {
} }
void PaymentRequest::OnCompleteTimeout(TimerBase*) { void PaymentRequest::OnCompleteTimeout(TimerBase*) {
GetExecutionContext()->AddConsoleMessage(ConsoleMessage::Create(
kJSMessageSource, kErrorMessageLevel,
"Timed out waiting for a PaymentResponse.complete() call."));
payment_provider_->Complete(payments::mojom::blink::PaymentComplete(kFail)); payment_provider_->Complete(payments::mojom::blink::PaymentComplete(kFail));
ClearResolversAndCloseMojoConnection(); ClearResolversAndCloseMojoConnection();
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment