Bug 1483470 - Handling PaymentRequestService::RespondPayment() to a closed PaymentRequest. r=baku

1. Returning NS_ERROR_FAILURE in PaymentRequestService::RespondPayment() when
       the specified PaymentRequest does not exist in PaymentRequestService.
    2. Renaming "cleanup" to "close" in DOM::WebPayment codes to fit the actual
       behavior.
This commit is contained in:
Eden Chuang 2018-08-16 14:27:24 +02:00
Родитель 568fc35f0d
Коммит 68bb5bfa3c
7 изменённых файлов: 15 добавлений и 12 удалений

Просмотреть файл

@ -29,7 +29,7 @@ interface nsIPaymentActionRequest : nsISupports
const uint32_t ABORT_ACTION = 4;
const uint32_t COMPLETE_ACTION = 5;
const uint32_t UPDATE_ACTION = 6;
const uint32_t CLEANUP_ACTION = 7;
const uint32_t CLOSE_ACTION = 7;
/*
* The payment request identifier.

Просмотреть файл

@ -1094,7 +1094,7 @@ PaymentRequest::NotifyOwnerDocumentActivityChanged()
if (!doc->IsCurrentActiveDocument()) {
RefPtr<PaymentRequestManager> mgr = PaymentRequestManager::GetSingleton();
mgr->CleanupPayment(this);
mgr->ClosePayment(this);
}
}

Просмотреть файл

@ -524,7 +524,7 @@ PaymentRequestManager::UpdatePayment(JSContext* aCx,
}
nsresult
PaymentRequestManager::CleanupPayment(PaymentRequest* aRequest)
PaymentRequestManager::ClosePayment(PaymentRequest* aRequest)
{
// for the case, the payment request is waiting for response from user.
if (auto entry = mActivePayments.Lookup(aRequest)) {
@ -535,7 +535,7 @@ PaymentRequestManager::CleanupPayment(PaymentRequest* aRequest)
}
nsAutoString requestId;
aRequest->GetInternalId(requestId);
IPCPaymentCleanupActionRequest action(requestId);
IPCPaymentCloseActionRequest action(requestId);
return SendRequestPayment(aRequest, action, false);
}

Просмотреть файл

@ -57,7 +57,7 @@ public:
const PaymentDetailsUpdate& aDetails,
bool aRequestShipping,
bool aDeferredShow);
nsresult CleanupPayment(PaymentRequest* aRequest);
nsresult ClosePayment(PaymentRequest* aRequest);
nsresult RespondPayment(PaymentRequest* aRequest,
const IPCPaymentActionResponse& aResponse);

Просмотреть файл

@ -382,7 +382,7 @@ PaymentRequestService::RequestPayment(nsIPaymentActionRequest* aRequest)
}
break;
}
case nsIPaymentActionRequest::CLEANUP_ACTION: {
case nsIPaymentActionRequest::CLOSE_ACTION: {
nsCOMPtr<nsIPaymentRequest> payment;
rv = GetPaymentRequestById(requestId, getter_AddRefs(payment));
if (NS_WARN_IF(NS_FAILED(rv))) {
@ -393,7 +393,6 @@ PaymentRequestService::RequestPayment(nsIPaymentActionRequest* aRequest)
mShowingRequest = nullptr;
}
mRequestQueue.RemoveElement(payment);
//RemoveActionCallback(requestId);
break;
}
default: {
@ -417,6 +416,10 @@ PaymentRequestService::RespondPayment(nsIPaymentActionResponse* aResponse)
return rv;
}
if (!request) {
return NS_ERROR_FAILURE;
}
nsCOMPtr<nsIPaymentActionCallback> callback;
if (!mCallbackHashtable.Get(requestId, getter_AddRefs(callback))) {
return NS_ERROR_FAILURE;

Просмотреть файл

@ -105,7 +105,7 @@ struct IPCPaymentUpdateActionRequest
nsString shippingOption;
};
struct IPCPaymentCleanupActionRequest
struct IPCPaymentCloseActionRequest
{
nsString requestId;
};
@ -118,7 +118,7 @@ union IPCPaymentActionRequest
IPCPaymentAbortActionRequest;
IPCPaymentCompleteActionRequest;
IPCPaymentUpdateActionRequest;
IPCPaymentCleanupActionRequest;
IPCPaymentCloseActionRequest;
};
struct IPCPaymentCanMakeActionResponse

Просмотреть файл

@ -147,10 +147,10 @@ PaymentRequestParent::RecvRequestPayment(const IPCPaymentActionRequest& aRequest
MOZ_ASSERT(action);
break;
}
case IPCPaymentActionRequest::TIPCPaymentCleanupActionRequest: {
const IPCPaymentCleanupActionRequest& request = aRequest;
case IPCPaymentActionRequest::TIPCPaymentCloseActionRequest: {
const IPCPaymentCloseActionRequest& request = aRequest;
rv = CreateActionRequest(request.requestId(),
nsIPaymentActionRequest::CLEANUP_ACTION,
nsIPaymentActionRequest::CLOSE_ACTION,
getter_AddRefs(action));
if (NS_WARN_IF(NS_FAILED(rv))) {
return IPC_FAIL_NO_REASON(this);