summaryrefslogtreecommitdiffstats
path: root/dom/payments/ipc/PPaymentRequest.ipdl
diff options
context:
space:
mode:
Diffstat (limited to 'dom/payments/ipc/PPaymentRequest.ipdl')
-rw-r--r--dom/payments/ipc/PPaymentRequest.ipdl256
1 files changed, 256 insertions, 0 deletions
diff --git a/dom/payments/ipc/PPaymentRequest.ipdl b/dom/payments/ipc/PPaymentRequest.ipdl
new file mode 100644
index 0000000000..1ac968887c
--- /dev/null
+++ b/dom/payments/ipc/PPaymentRequest.ipdl
@@ -0,0 +1,256 @@
+/* -*- Mode: C++; c-basic-offset: 2; indent-tabs-mode: nil; tab-width: 8 -*- */
+/* vim: set sw=4 ts=8 et tw=80 ft=cpp : */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+include protocol PBrowser;
+
+include "mozilla/dom/PermissionMessageUtils.h";
+
+[RefCounted] using class nsIPrincipal from "nsIPrincipal.h";
+
+namespace mozilla {
+namespace dom {
+
+struct IPCPaymentMethodData
+{
+ nsString supportedMethods;
+ nsString data;
+};
+
+struct IPCPaymentCurrencyAmount
+{
+ nsString currency;
+ nsString value;
+};
+
+struct IPCPaymentItem
+{
+ nsString label;
+ IPCPaymentCurrencyAmount amount;
+ bool pending;
+};
+
+struct IPCPaymentDetailsModifier
+{
+ nsString supportedMethods;
+ IPCPaymentItem total;
+ IPCPaymentItem[] additionalDisplayItems;
+ nsString data;
+ bool additionalDisplayItemsPassed;
+};
+
+struct IPCPaymentShippingOption
+{
+ nsString id;
+ nsString label;
+ IPCPaymentCurrencyAmount amount;
+ bool selected;
+};
+
+struct IPCPaymentDetails
+{
+ nsString id;
+ IPCPaymentItem total;
+ IPCPaymentItem[] displayItems;
+ IPCPaymentShippingOption[] shippingOptions;
+ IPCPaymentDetailsModifier[] modifiers;
+ nsString error;
+ nsString shippingAddressErrors;
+ nsString payerErrors;
+ nsString paymentMethodErrors;
+};
+
+struct IPCPaymentOptions
+{
+ bool requestPayerName;
+ bool requestPayerEmail;
+ bool requestPayerPhone;
+ bool requestShipping;
+ bool requestBillingAddress;
+ nsString shippingType;
+};
+
+struct IPCPaymentCreateActionRequest
+{
+ uint64_t topOuterWindowId;
+ nsString requestId;
+ nullable nsIPrincipal topLevelPrincipal;
+ IPCPaymentMethodData[] methodData;
+ IPCPaymentDetails details;
+ IPCPaymentOptions options;
+ nsString shippingOption;
+};
+
+struct IPCPaymentCanMakeActionRequest
+{
+ nsString requestId;
+};
+
+struct IPCPaymentShowActionRequest
+{
+ nsString requestId;
+ bool isUpdating;
+};
+
+struct IPCPaymentAbortActionRequest
+{
+ nsString requestId;
+};
+
+struct IPCPaymentCompleteActionRequest
+{
+ nsString requestId;
+ nsString completeStatus;
+};
+
+struct IPCPaymentUpdateActionRequest
+{
+ nsString requestId;
+ IPCPaymentDetails details;
+ nsString shippingOption;
+};
+
+struct IPCPaymentCloseActionRequest
+{
+ nsString requestId;
+};
+
+struct IPCPaymentRetryActionRequest
+{
+ nsString requestId;
+ nsString error;
+ nsString payerErrors;
+ nsString paymentMethodErrors;
+ nsString shippingAddressErrors;
+};
+
+union IPCPaymentActionRequest
+{
+ IPCPaymentCreateActionRequest;
+ IPCPaymentCanMakeActionRequest;
+ IPCPaymentShowActionRequest;
+ IPCPaymentAbortActionRequest;
+ IPCPaymentCompleteActionRequest;
+ IPCPaymentUpdateActionRequest;
+ IPCPaymentCloseActionRequest;
+ IPCPaymentRetryActionRequest;
+};
+
+struct IPCPaymentCanMakeActionResponse
+{
+ nsString requestId;
+ bool result;
+};
+
+struct IPCPaymentAddress
+{
+ nsString country;
+ nsString[] addressLine;
+ nsString region;
+ nsString regionCode;
+ nsString city;
+ nsString dependentLocality;
+ nsString postalCode;
+ nsString sortingCode;
+ nsString organization;
+ nsString recipient;
+ nsString phone;
+};
+
+struct IPCGeneralResponse
+{
+ nsString data;
+};
+
+struct IPCBasicCardResponse
+{
+ nsString cardholderName;
+ nsString cardNumber;
+ nsString expiryMonth;
+ nsString expiryYear;
+ nsString cardSecurityCode;
+ IPCPaymentAddress billingAddress;
+};
+
+union IPCPaymentResponseData
+{
+ IPCGeneralResponse;
+ IPCBasicCardResponse;
+};
+
+struct IPCPaymentShowActionResponse
+{
+ nsString requestId;
+ uint32_t status;
+ nsString methodName;
+ IPCPaymentResponseData data;
+ nsString payerName;
+ nsString payerEmail;
+ nsString payerPhone;
+};
+
+struct IPCPaymentAbortActionResponse
+{
+ nsString requestId;
+ bool isSucceeded;
+};
+
+struct IPCPaymentCompleteActionResponse
+{
+ nsString requestId;
+ bool isCompleted;
+};
+
+union IPCPaymentActionResponse
+{
+ IPCPaymentCanMakeActionResponse;
+ IPCPaymentShowActionResponse;
+ IPCPaymentAbortActionResponse;
+ IPCPaymentCompleteActionResponse;
+};
+
+struct IPCGeneralChangeDetails
+{
+ nsString details;
+};
+
+struct IPCBasicCardChangeDetails
+{
+ IPCPaymentAddress billingAddress;
+};
+
+union IPCMethodChangeDetails
+{
+ IPCGeneralChangeDetails;
+ IPCBasicCardChangeDetails;
+};
+
+[ManualDealloc]
+sync protocol PPaymentRequest
+{
+ manager PBrowser;
+
+parent:
+ async __delete__();
+
+ async RequestPayment(IPCPaymentActionRequest aAction);
+
+child:
+ async RespondPayment(IPCPaymentActionResponse aResponse);
+ async ChangeShippingAddress(nsString aRequestId,
+ IPCPaymentAddress aAddress);
+ async ChangeShippingOption(nsString aRequestId,
+ nsString aOption);
+ async ChangePayerDetail(nsString aRequestId,
+ nsString aPayerName,
+ nsString aPayerEmail,
+ nsString aPayerPhone);
+ async ChangePaymentMethod(nsString aRequestId,
+ nsString aMethodName,
+ IPCMethodChangeDetails aMethodDetails);
+};
+
+} // end of namespace dom
+} // end of namespace mozilla