Line data Source code
1 : /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 : /* vim:set ts=2 sw=2 sts=2 et cindent: */
3 : /* This Source Code Form is subject to the terms of the Mozilla Public
4 : * License, v. 2.0. If a copy of the MPL was not distributed with this
5 : * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 :
7 : #ifndef mozilla_dom_PaymentRequestData_h
8 : #define mozilla_dom_PaymentRequestData_h
9 :
10 : #include "nsIPaymentAddress.h"
11 : #include "nsIPaymentRequest.h"
12 : #include "nsCOMPtr.h"
13 : #include "mozilla/dom/PPaymentRequest.h"
14 :
15 : namespace mozilla {
16 : namespace dom {
17 : namespace payments {
18 :
19 : class PaymentMethodData final : public nsIPaymentMethodData
20 : {
21 : public:
22 : NS_DECL_ISUPPORTS
23 : NS_DECL_NSIPAYMENTMETHODDATA
24 :
25 : static nsresult Create(const IPCPaymentMethodData& aIPCMethodData,
26 : nsIPaymentMethodData** aMethodData);
27 :
28 : private:
29 : PaymentMethodData(const nsAString& aSupportedMethods,
30 : const nsAString& aData);
31 :
32 0 : ~PaymentMethodData() = default;
33 :
34 : nsString mSupportedMethods;
35 : nsString mData;
36 : };
37 :
38 : class PaymentCurrencyAmount final : public nsIPaymentCurrencyAmount
39 : {
40 : public:
41 : NS_DECL_ISUPPORTS
42 : NS_DECL_NSIPAYMENTCURRENCYAMOUNT
43 :
44 : static nsresult Create(const IPCPaymentCurrencyAmount& aIPCAmount,
45 : nsIPaymentCurrencyAmount** aAmount);
46 :
47 : private:
48 : PaymentCurrencyAmount(const nsAString& aCurrency,
49 : const nsAString& aValue);
50 :
51 0 : ~PaymentCurrencyAmount() = default;
52 :
53 : nsString mCurrency;
54 : nsString mValue;
55 : };
56 :
57 : class PaymentItem final : public nsIPaymentItem
58 : {
59 : public:
60 : NS_DECL_ISUPPORTS
61 : NS_DECL_NSIPAYMENTITEM
62 :
63 : static nsresult Create(const IPCPaymentItem& aIPCItem, nsIPaymentItem** aItem);
64 :
65 : private:
66 : PaymentItem(const nsAString& aLabel,
67 : nsIPaymentCurrencyAmount* aAmount,
68 : const bool aPending);
69 :
70 0 : ~PaymentItem() = default;
71 :
72 : nsString mLabel;
73 : nsCOMPtr<nsIPaymentCurrencyAmount> mAmount;
74 : bool mPending;
75 : };
76 :
77 : class PaymentDetailsModifier final : public nsIPaymentDetailsModifier
78 : {
79 : public:
80 : NS_DECL_ISUPPORTS
81 : NS_DECL_NSIPAYMENTDETAILSMODIFIER
82 :
83 : static nsresult Create(const IPCPaymentDetailsModifier& aIPCModifier,
84 : nsIPaymentDetailsModifier** aModifier);
85 :
86 : private:
87 : PaymentDetailsModifier(const nsAString& aSupportedMethods,
88 : nsIPaymentItem* aTotal,
89 : nsIArray* aAdditionalDisplayItems,
90 : const nsAString& aData);
91 :
92 0 : ~PaymentDetailsModifier() = default;
93 :
94 : nsString mSupportedMethods;
95 : nsCOMPtr<nsIPaymentItem> mTotal;
96 : nsCOMPtr<nsIArray> mAdditionalDisplayItems;
97 : nsString mData;
98 : };
99 :
100 : class PaymentShippingOption final : public nsIPaymentShippingOption
101 : {
102 : public:
103 : NS_DECL_ISUPPORTS
104 : NS_DECL_NSIPAYMENTSHIPPINGOPTION
105 :
106 : static nsresult Create(const IPCPaymentShippingOption& aIPCOption,
107 : nsIPaymentShippingOption** aOption);
108 :
109 : private:
110 : PaymentShippingOption(const nsAString& aId,
111 : const nsAString& aLabel,
112 : nsIPaymentCurrencyAmount* aAmount,
113 : const bool aSelected=false);
114 :
115 0 : ~PaymentShippingOption() = default;
116 :
117 : nsString mId;
118 : nsString mLabel;
119 : nsCOMPtr<nsIPaymentCurrencyAmount> mAmount;
120 : bool mSelected;
121 : };
122 :
123 : class PaymentDetails final : public nsIPaymentDetails
124 : {
125 : public:
126 : NS_DECL_ISUPPORTS
127 : NS_DECL_NSIPAYMENTDETAILS
128 :
129 :
130 : static nsresult Create(const IPCPaymentDetails& aIPCDetails,
131 : nsIPaymentDetails** aDetails);
132 : private:
133 : PaymentDetails(const nsAString& aId,
134 : nsIPaymentItem* aTotalItem,
135 : nsIArray* aDisplayItems,
136 : nsIArray* aShippingOptions,
137 : nsIArray* aModifiers,
138 : const nsAString& aError);
139 :
140 0 : ~PaymentDetails() = default;
141 :
142 : nsString mId;
143 : nsCOMPtr<nsIPaymentItem> mTotalItem;
144 : nsCOMPtr<nsIArray> mDisplayItems;
145 : nsCOMPtr<nsIArray> mShippingOptions;
146 : nsCOMPtr<nsIArray> mModifiers;
147 : nsString mError;
148 : };
149 :
150 : class PaymentOptions final : public nsIPaymentOptions
151 : {
152 : public:
153 : NS_DECL_ISUPPORTS
154 : NS_DECL_NSIPAYMENTOPTIONS
155 :
156 : static nsresult Create(const IPCPaymentOptions& aIPCOptions,
157 : nsIPaymentOptions** aOptions);
158 :
159 : private:
160 : PaymentOptions(const bool aRequestPayerName,
161 : const bool aRequestPayerEmail,
162 : const bool aRequestPayerPhone,
163 : const bool aRequestShipping,
164 : const nsAString& aShippintType);
165 0 : ~PaymentOptions() = default;
166 :
167 : bool mRequestPayerName;
168 : bool mRequestPayerEmail;
169 : bool mRequestPayerPhone;
170 : bool mRequestShipping;
171 : nsString mShippingType;
172 : };
173 :
174 : class PaymentRequest final : public nsIPaymentRequest
175 : {
176 : public:
177 : NS_DECL_ISUPPORTS
178 : NS_DECL_NSIPAYMENTREQUEST
179 :
180 : PaymentRequest(const uint64_t aTabId,
181 : const nsAString& aRequestId,
182 : nsIArray* aPaymentMethods,
183 : nsIPaymentDetails* aPaymentDetails,
184 : nsIPaymentOptions* aPaymentOptions);
185 :
186 : private:
187 0 : ~PaymentRequest() = default;
188 :
189 : uint64_t mTabId;
190 : nsString mRequestId;
191 : nsCOMPtr<nsIArray> mPaymentMethods;
192 : nsCOMPtr<nsIPaymentDetails> mPaymentDetails;
193 : nsCOMPtr<nsIPaymentOptions> mPaymentOptions;
194 : };
195 :
196 : class PaymentAddress final : public nsIPaymentAddress
197 : {
198 : public:
199 : NS_DECL_ISUPPORTS
200 : NS_DECL_NSIPAYMENTADDRESS
201 :
202 0 : PaymentAddress() = default;
203 :
204 : private:
205 0 : ~PaymentAddress() = default;
206 :
207 : nsString mCountry;
208 : nsCOMPtr<nsIArray> mAddressLine;
209 : nsString mRegion;
210 : nsString mCity;
211 : nsString mDependentLocality;
212 : nsString mPostalCode;
213 : nsString mSortingCode;
214 : nsString mLanguageCode;
215 : nsString mOrganization;
216 : nsString mRecipient;
217 : nsString mPhone;
218 : };
219 :
220 : } // end of namespace payment
221 : } // end of namespace dom
222 : } // end of namespace mozilla
223 :
224 : #endif
|