2017-10-27 01:08:41 +03:00
|
|
|
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
|
|
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
|
2017-05-25 20:50:32 +03:00
|
|
|
/* 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/. */
|
|
|
|
|
|
|
|
#ifndef mozilla_dom_PaymentRequestData_h
|
|
|
|
#define mozilla_dom_PaymentRequestData_h
|
|
|
|
|
2017-06-23 12:15:51 +03:00
|
|
|
#include "nsIPaymentAddress.h"
|
2017-05-25 20:50:32 +03:00
|
|
|
#include "nsIPaymentRequest.h"
|
|
|
|
#include "nsCOMPtr.h"
|
|
|
|
#include "mozilla/dom/PPaymentRequest.h"
|
|
|
|
|
|
|
|
namespace mozilla {
|
|
|
|
namespace dom {
|
|
|
|
namespace payments {
|
|
|
|
|
|
|
|
class PaymentMethodData final : public nsIPaymentMethodData
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
NS_DECL_ISUPPORTS
|
|
|
|
NS_DECL_NSIPAYMENTMETHODDATA
|
|
|
|
|
|
|
|
static nsresult Create(const IPCPaymentMethodData& aIPCMethodData,
|
|
|
|
nsIPaymentMethodData** aMethodData);
|
|
|
|
|
|
|
|
private:
|
2017-06-30 20:17:12 +03:00
|
|
|
PaymentMethodData(const nsAString& aSupportedMethods,
|
2017-05-25 20:50:32 +03:00
|
|
|
const nsAString& aData);
|
|
|
|
|
|
|
|
~PaymentMethodData() = default;
|
|
|
|
|
2017-06-30 20:17:12 +03:00
|
|
|
nsString mSupportedMethods;
|
2017-05-25 20:50:32 +03:00
|
|
|
nsString mData;
|
|
|
|
};
|
|
|
|
|
|
|
|
class PaymentCurrencyAmount final : public nsIPaymentCurrencyAmount
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
NS_DECL_ISUPPORTS
|
|
|
|
NS_DECL_NSIPAYMENTCURRENCYAMOUNT
|
|
|
|
|
|
|
|
static nsresult Create(const IPCPaymentCurrencyAmount& aIPCAmount,
|
|
|
|
nsIPaymentCurrencyAmount** aAmount);
|
|
|
|
|
|
|
|
private:
|
|
|
|
PaymentCurrencyAmount(const nsAString& aCurrency,
|
|
|
|
const nsAString& aValue);
|
|
|
|
|
|
|
|
~PaymentCurrencyAmount() = default;
|
|
|
|
|
|
|
|
nsString mCurrency;
|
|
|
|
nsString mValue;
|
|
|
|
};
|
|
|
|
|
|
|
|
class PaymentItem final : public nsIPaymentItem
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
NS_DECL_ISUPPORTS
|
|
|
|
NS_DECL_NSIPAYMENTITEM
|
|
|
|
|
|
|
|
static nsresult Create(const IPCPaymentItem& aIPCItem, nsIPaymentItem** aItem);
|
|
|
|
|
|
|
|
private:
|
|
|
|
PaymentItem(const nsAString& aLabel,
|
|
|
|
nsIPaymentCurrencyAmount* aAmount,
|
2018-02-28 16:00:05 +03:00
|
|
|
const bool aPending,
|
|
|
|
const nsAString& aType);
|
2017-05-25 20:50:32 +03:00
|
|
|
|
|
|
|
~PaymentItem() = default;
|
|
|
|
|
|
|
|
nsString mLabel;
|
|
|
|
nsCOMPtr<nsIPaymentCurrencyAmount> mAmount;
|
|
|
|
bool mPending;
|
2018-02-28 16:00:05 +03:00
|
|
|
nsString mType;
|
2017-05-25 20:50:32 +03:00
|
|
|
};
|
|
|
|
|
|
|
|
class PaymentDetailsModifier final : public nsIPaymentDetailsModifier
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
NS_DECL_ISUPPORTS
|
|
|
|
NS_DECL_NSIPAYMENTDETAILSMODIFIER
|
|
|
|
|
|
|
|
static nsresult Create(const IPCPaymentDetailsModifier& aIPCModifier,
|
|
|
|
nsIPaymentDetailsModifier** aModifier);
|
|
|
|
|
|
|
|
private:
|
2017-06-30 20:17:12 +03:00
|
|
|
PaymentDetailsModifier(const nsAString& aSupportedMethods,
|
2017-05-25 20:50:32 +03:00
|
|
|
nsIPaymentItem* aTotal,
|
|
|
|
nsIArray* aAdditionalDisplayItems,
|
|
|
|
const nsAString& aData);
|
|
|
|
|
|
|
|
~PaymentDetailsModifier() = default;
|
|
|
|
|
2017-06-30 20:17:12 +03:00
|
|
|
nsString mSupportedMethods;
|
2017-05-25 20:50:32 +03:00
|
|
|
nsCOMPtr<nsIPaymentItem> mTotal;
|
|
|
|
nsCOMPtr<nsIArray> mAdditionalDisplayItems;
|
|
|
|
nsString mData;
|
|
|
|
};
|
|
|
|
|
|
|
|
class PaymentShippingOption final : public nsIPaymentShippingOption
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
NS_DECL_ISUPPORTS
|
|
|
|
NS_DECL_NSIPAYMENTSHIPPINGOPTION
|
|
|
|
|
|
|
|
static nsresult Create(const IPCPaymentShippingOption& aIPCOption,
|
|
|
|
nsIPaymentShippingOption** aOption);
|
|
|
|
|
|
|
|
private:
|
|
|
|
PaymentShippingOption(const nsAString& aId,
|
|
|
|
const nsAString& aLabel,
|
|
|
|
nsIPaymentCurrencyAmount* aAmount,
|
|
|
|
const bool aSelected=false);
|
|
|
|
|
|
|
|
~PaymentShippingOption() = default;
|
|
|
|
|
|
|
|
nsString mId;
|
|
|
|
nsString mLabel;
|
|
|
|
nsCOMPtr<nsIPaymentCurrencyAmount> mAmount;
|
|
|
|
bool mSelected;
|
|
|
|
};
|
|
|
|
|
|
|
|
class PaymentDetails final : public nsIPaymentDetails
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
NS_DECL_ISUPPORTS
|
|
|
|
NS_DECL_NSIPAYMENTDETAILS
|
|
|
|
|
|
|
|
|
|
|
|
static nsresult Create(const IPCPaymentDetails& aIPCDetails,
|
|
|
|
nsIPaymentDetails** aDetails);
|
|
|
|
private:
|
|
|
|
PaymentDetails(const nsAString& aId,
|
|
|
|
nsIPaymentItem* aTotalItem,
|
|
|
|
nsIArray* aDisplayItems,
|
|
|
|
nsIArray* aShippingOptions,
|
|
|
|
nsIArray* aModifiers,
|
2018-05-17 14:59:16 +03:00
|
|
|
const nsAString& aError,
|
|
|
|
const nsAString& aShippingAddressError);
|
2017-05-25 20:50:32 +03:00
|
|
|
|
|
|
|
~PaymentDetails() = default;
|
|
|
|
|
|
|
|
nsString mId;
|
|
|
|
nsCOMPtr<nsIPaymentItem> mTotalItem;
|
|
|
|
nsCOMPtr<nsIArray> mDisplayItems;
|
|
|
|
nsCOMPtr<nsIArray> mShippingOptions;
|
|
|
|
nsCOMPtr<nsIArray> mModifiers;
|
|
|
|
nsString mError;
|
2018-05-17 14:59:16 +03:00
|
|
|
nsString mShippingAddressErrors;
|
2017-05-25 20:50:32 +03:00
|
|
|
};
|
|
|
|
|
|
|
|
class PaymentOptions final : public nsIPaymentOptions
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
NS_DECL_ISUPPORTS
|
|
|
|
NS_DECL_NSIPAYMENTOPTIONS
|
|
|
|
|
|
|
|
static nsresult Create(const IPCPaymentOptions& aIPCOptions,
|
|
|
|
nsIPaymentOptions** aOptions);
|
|
|
|
|
|
|
|
private:
|
|
|
|
PaymentOptions(const bool aRequestPayerName,
|
|
|
|
const bool aRequestPayerEmail,
|
|
|
|
const bool aRequestPayerPhone,
|
|
|
|
const bool aRequestShipping,
|
|
|
|
const nsAString& aShippintType);
|
|
|
|
~PaymentOptions() = default;
|
|
|
|
|
|
|
|
bool mRequestPayerName;
|
|
|
|
bool mRequestPayerEmail;
|
|
|
|
bool mRequestPayerPhone;
|
|
|
|
bool mRequestShipping;
|
|
|
|
nsString mShippingType;
|
|
|
|
};
|
|
|
|
|
|
|
|
class PaymentRequest final : public nsIPaymentRequest
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
NS_DECL_ISUPPORTS
|
|
|
|
NS_DECL_NSIPAYMENTREQUEST
|
|
|
|
|
|
|
|
PaymentRequest(const uint64_t aTabId,
|
|
|
|
const nsAString& aRequestId,
|
2017-08-23 09:26:51 +03:00
|
|
|
nsIPrincipal* aPrincipal,
|
2017-05-25 20:50:32 +03:00
|
|
|
nsIArray* aPaymentMethods,
|
|
|
|
nsIPaymentDetails* aPaymentDetails,
|
2018-04-14 04:47:20 +03:00
|
|
|
nsIPaymentOptions* aPaymentOptions,
|
2018-05-17 14:59:16 +03:00
|
|
|
const nsAString& aShippingOption);
|
2017-05-25 20:50:32 +03:00
|
|
|
|
|
|
|
private:
|
|
|
|
~PaymentRequest() = default;
|
|
|
|
|
|
|
|
uint64_t mTabId;
|
|
|
|
nsString mRequestId;
|
2018-03-13 17:30:08 +03:00
|
|
|
nsString mCompleteStatus;
|
2017-08-23 09:26:51 +03:00
|
|
|
nsCOMPtr<nsIPrincipal> mTopLevelPrincipal;
|
2017-05-25 20:50:32 +03:00
|
|
|
nsCOMPtr<nsIArray> mPaymentMethods;
|
|
|
|
nsCOMPtr<nsIPaymentDetails> mPaymentDetails;
|
|
|
|
nsCOMPtr<nsIPaymentOptions> mPaymentOptions;
|
2018-04-14 04:47:20 +03:00
|
|
|
nsString mShippingOption;
|
2017-05-25 20:50:32 +03:00
|
|
|
};
|
|
|
|
|
2017-06-23 12:15:51 +03:00
|
|
|
class PaymentAddress final : public nsIPaymentAddress
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
NS_DECL_ISUPPORTS
|
|
|
|
NS_DECL_NSIPAYMENTADDRESS
|
|
|
|
|
|
|
|
PaymentAddress() = default;
|
|
|
|
|
|
|
|
private:
|
|
|
|
~PaymentAddress() = default;
|
|
|
|
|
|
|
|
nsString mCountry;
|
|
|
|
nsCOMPtr<nsIArray> mAddressLine;
|
|
|
|
nsString mRegion;
|
|
|
|
nsString mCity;
|
|
|
|
nsString mDependentLocality;
|
|
|
|
nsString mPostalCode;
|
|
|
|
nsString mSortingCode;
|
|
|
|
nsString mLanguageCode;
|
|
|
|
nsString mOrganization;
|
|
|
|
nsString mRecipient;
|
|
|
|
nsString mPhone;
|
|
|
|
};
|
|
|
|
|
2017-05-25 20:50:32 +03:00
|
|
|
} // end of namespace payment
|
|
|
|
} // end of namespace dom
|
|
|
|
} // end of namespace mozilla
|
|
|
|
|
|
|
|
#endif
|