Line data Source code
1 : /* vim:set ts=2 sw=2 sts=2 et cindent: */
2 : /* This Source Code Form is subject to the terms of the Mozilla Public
3 : * License, v. 2.0. If a copy of the MPL was not distributed with this
4 : * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5 :
6 : #include "nsArrayUtils.h"
7 : #include "nsIMutableArray.h"
8 : #include "nsISupportsPrimitives.h"
9 : #include "PaymentRequestData.h"
10 : #include "PaymentRequestUtils.h"
11 :
12 : namespace mozilla {
13 : namespace dom {
14 : namespace payments {
15 :
16 : /* PaymentMethodData */
17 :
18 0 : NS_IMPL_ISUPPORTS(PaymentMethodData,
19 : nsIPaymentMethodData)
20 :
21 0 : PaymentMethodData::PaymentMethodData(const nsAString& aSupportedMethods,
22 0 : const nsAString& aData)
23 : : mSupportedMethods(aSupportedMethods)
24 0 : , mData(aData)
25 : {
26 0 : }
27 :
28 : nsresult
29 0 : PaymentMethodData::Create(const IPCPaymentMethodData& aIPCMethodData,
30 : nsIPaymentMethodData** aMethodData)
31 : {
32 0 : NS_ENSURE_ARG_POINTER(aMethodData);
33 : nsCOMPtr<nsIPaymentMethodData> methodData =
34 0 : new PaymentMethodData(aIPCMethodData.supportedMethods(), aIPCMethodData.data());
35 0 : methodData.forget(aMethodData);
36 0 : return NS_OK;
37 : }
38 :
39 : NS_IMETHODIMP
40 0 : PaymentMethodData::GetSupportedMethods(nsAString& aSupportedMethods)
41 : {
42 0 : aSupportedMethods = mSupportedMethods;
43 0 : return NS_OK;
44 : }
45 :
46 : NS_IMETHODIMP
47 0 : PaymentMethodData::GetData(nsAString& aData)
48 : {
49 0 : aData = mData;
50 0 : return NS_OK;
51 : }
52 :
53 : /* PaymentCurrencyAmount */
54 :
55 0 : NS_IMPL_ISUPPORTS(PaymentCurrencyAmount,
56 : nsIPaymentCurrencyAmount)
57 :
58 0 : PaymentCurrencyAmount::PaymentCurrencyAmount(const nsAString& aCurrency,
59 0 : const nsAString& aValue)
60 : : mCurrency(aCurrency)
61 0 : , mValue(aValue)
62 : {
63 0 : }
64 :
65 : nsresult
66 0 : PaymentCurrencyAmount::Create(const IPCPaymentCurrencyAmount& aIPCAmount,
67 : nsIPaymentCurrencyAmount** aAmount)
68 : {
69 0 : NS_ENSURE_ARG_POINTER(aAmount);
70 : nsCOMPtr<nsIPaymentCurrencyAmount> amount =
71 0 : new PaymentCurrencyAmount(aIPCAmount.currency(), aIPCAmount.value());
72 0 : amount.forget(aAmount);
73 0 : return NS_OK;
74 : }
75 :
76 : NS_IMETHODIMP
77 0 : PaymentCurrencyAmount::GetCurrency(nsAString& aCurrency)
78 : {
79 0 : aCurrency = mCurrency;
80 0 : return NS_OK;
81 : }
82 :
83 : NS_IMETHODIMP
84 0 : PaymentCurrencyAmount::GetValue(nsAString& aValue)
85 : {
86 0 : aValue = mValue;
87 0 : return NS_OK;
88 : }
89 :
90 : /* PaymentItem */
91 :
92 0 : NS_IMPL_ISUPPORTS(PaymentItem,
93 : nsIPaymentItem)
94 :
95 0 : PaymentItem::PaymentItem(const nsAString& aLabel,
96 : nsIPaymentCurrencyAmount* aAmount,
97 0 : const bool aPending)
98 : : mLabel(aLabel)
99 : , mAmount(aAmount)
100 0 : , mPending(aPending)
101 : {
102 0 : }
103 :
104 : nsresult
105 0 : PaymentItem::Create(const IPCPaymentItem& aIPCItem, nsIPaymentItem** aItem)
106 : {
107 0 : NS_ENSURE_ARG_POINTER(aItem);
108 0 : nsCOMPtr<nsIPaymentCurrencyAmount> amount;
109 0 : nsresult rv = PaymentCurrencyAmount::Create(aIPCItem.amount(),
110 0 : getter_AddRefs(amount));
111 0 : if (NS_WARN_IF(NS_FAILED(rv))) {
112 0 : return rv;
113 : }
114 : nsCOMPtr<nsIPaymentItem> item =
115 0 : new PaymentItem(aIPCItem.label(), amount, aIPCItem.pending());
116 0 : item.forget(aItem);
117 0 : return NS_OK;
118 : }
119 :
120 : NS_IMETHODIMP
121 0 : PaymentItem::GetLabel(nsAString& aLabel)
122 : {
123 0 : aLabel = mLabel;
124 0 : return NS_OK;
125 : }
126 :
127 : NS_IMETHODIMP
128 0 : PaymentItem::GetAmount(nsIPaymentCurrencyAmount** aAmount)
129 : {
130 0 : NS_ENSURE_ARG_POINTER(aAmount);
131 0 : MOZ_ASSERT(mAmount);
132 0 : nsCOMPtr<nsIPaymentCurrencyAmount> amount = mAmount;
133 0 : amount.forget(aAmount);
134 0 : return NS_OK;
135 : }
136 :
137 : NS_IMETHODIMP
138 0 : PaymentItem::GetPending(bool* aPending)
139 : {
140 0 : NS_ENSURE_ARG_POINTER(aPending);
141 0 : *aPending = mPending;
142 0 : return NS_OK;
143 : }
144 :
145 : /* PaymentDetailsModifier */
146 :
147 0 : NS_IMPL_ISUPPORTS(PaymentDetailsModifier,
148 : nsIPaymentDetailsModifier)
149 :
150 0 : PaymentDetailsModifier::PaymentDetailsModifier(const nsAString& aSupportedMethods,
151 : nsIPaymentItem* aTotal,
152 : nsIArray* aAdditionalDisplayItems,
153 0 : const nsAString& aData)
154 : : mSupportedMethods(aSupportedMethods)
155 : , mTotal(aTotal)
156 : , mAdditionalDisplayItems(aAdditionalDisplayItems)
157 0 : , mData(aData)
158 : {
159 0 : }
160 :
161 : nsresult
162 0 : PaymentDetailsModifier::Create(const IPCPaymentDetailsModifier& aIPCModifier,
163 : nsIPaymentDetailsModifier** aModifier)
164 : {
165 0 : NS_ENSURE_ARG_POINTER(aModifier);
166 0 : nsCOMPtr<nsIPaymentItem> total;
167 0 : nsresult rv = PaymentItem::Create(aIPCModifier.total(), getter_AddRefs(total));
168 0 : if (NS_WARN_IF(NS_FAILED(rv))) {
169 0 : return rv;
170 : }
171 :
172 0 : nsCOMPtr<nsIArray> displayItems;
173 0 : if (aIPCModifier.additionalDisplayItemsPassed()) {
174 0 : nsCOMPtr<nsIMutableArray> items = do_CreateInstance(NS_ARRAY_CONTRACTID);
175 0 : MOZ_ASSERT(items);
176 0 : for (const IPCPaymentItem& item : aIPCModifier.additionalDisplayItems()) {
177 0 : nsCOMPtr<nsIPaymentItem> additionalItem;
178 0 : rv = PaymentItem::Create(item, getter_AddRefs(additionalItem));
179 0 : if (NS_WARN_IF(NS_FAILED(rv))) {
180 0 : return rv;
181 : }
182 0 : rv = items->AppendElement(additionalItem, false);
183 0 : if (NS_WARN_IF(NS_FAILED(rv))) {
184 0 : return rv;
185 : }
186 : }
187 0 : displayItems = items.forget();
188 : }
189 : nsCOMPtr<nsIPaymentDetailsModifier> modifier =
190 0 : new PaymentDetailsModifier(aIPCModifier.supportedMethods(),
191 : total,
192 : displayItems,
193 0 : aIPCModifier.data());
194 0 : modifier.forget(aModifier);
195 0 : return NS_OK;
196 : }
197 :
198 : NS_IMETHODIMP
199 0 : PaymentDetailsModifier::GetSupportedMethods(nsAString& aSupportedMethods)
200 : {
201 0 : aSupportedMethods = mSupportedMethods;
202 0 : return NS_OK;
203 : }
204 :
205 : NS_IMETHODIMP
206 0 : PaymentDetailsModifier::GetTotal(nsIPaymentItem** aTotal)
207 : {
208 0 : NS_ENSURE_ARG_POINTER(aTotal);
209 0 : MOZ_ASSERT(mTotal);
210 0 : nsCOMPtr<nsIPaymentItem> total = mTotal;
211 0 : total.forget(aTotal);
212 0 : return NS_OK;
213 : }
214 :
215 : NS_IMETHODIMP
216 0 : PaymentDetailsModifier::GetAdditionalDisplayItems(nsIArray** aAdditionalDisplayItems)
217 : {
218 0 : NS_ENSURE_ARG_POINTER(aAdditionalDisplayItems);
219 0 : nsCOMPtr<nsIArray> additionalItems = mAdditionalDisplayItems;
220 0 : additionalItems.forget(aAdditionalDisplayItems);
221 0 : return NS_OK;
222 : }
223 :
224 : NS_IMETHODIMP
225 0 : PaymentDetailsModifier::GetData(nsAString& aData)
226 : {
227 0 : aData = mData;
228 0 : return NS_OK;
229 : }
230 :
231 : /* PaymentShippingOption */
232 :
233 0 : NS_IMPL_ISUPPORTS(PaymentShippingOption,
234 : nsIPaymentShippingOption)
235 :
236 0 : PaymentShippingOption::PaymentShippingOption(const nsAString& aId,
237 : const nsAString& aLabel,
238 : nsIPaymentCurrencyAmount* aAmount,
239 0 : const bool aSelected)
240 : : mId(aId)
241 : , mLabel(aLabel)
242 : , mAmount(aAmount)
243 0 : , mSelected(aSelected)
244 : {
245 0 : }
246 :
247 : nsresult
248 0 : PaymentShippingOption::Create(const IPCPaymentShippingOption& aIPCOption,
249 : nsIPaymentShippingOption** aOption)
250 : {
251 0 : NS_ENSURE_ARG_POINTER(aOption);
252 0 : nsCOMPtr<nsIPaymentCurrencyAmount> amount;
253 0 : nsresult rv = PaymentCurrencyAmount::Create(aIPCOption.amount(), getter_AddRefs(amount));
254 0 : if (NS_WARN_IF(NS_FAILED(rv))) {
255 0 : return rv;
256 : }
257 : nsCOMPtr<nsIPaymentShippingOption> option =
258 0 : new PaymentShippingOption(aIPCOption.id(), aIPCOption.label(), amount, aIPCOption.selected());
259 0 : option.forget(aOption);
260 0 : return NS_OK;
261 : }
262 :
263 : NS_IMETHODIMP
264 0 : PaymentShippingOption::GetId(nsAString& aId)
265 : {
266 0 : aId = mId;
267 0 : return NS_OK;
268 : }
269 :
270 : NS_IMETHODIMP
271 0 : PaymentShippingOption::GetLabel(nsAString& aLabel)
272 : {
273 0 : aLabel = mLabel;
274 0 : return NS_OK;
275 : }
276 :
277 : NS_IMETHODIMP
278 0 : PaymentShippingOption::GetAmount(nsIPaymentCurrencyAmount** aAmount)
279 : {
280 0 : NS_ENSURE_ARG_POINTER(aAmount);
281 0 : MOZ_ASSERT(mAmount);
282 0 : nsCOMPtr<nsIPaymentCurrencyAmount> amount = mAmount;
283 0 : amount.forget(aAmount);
284 0 : return NS_OK;
285 : }
286 :
287 : NS_IMETHODIMP
288 0 : PaymentShippingOption::GetSelected(bool* aSelected)
289 : {
290 0 : NS_ENSURE_ARG_POINTER(aSelected);
291 0 : *aSelected = mSelected;
292 0 : return NS_OK;
293 : }
294 :
295 : NS_IMETHODIMP
296 0 : PaymentShippingOption::SetSelected(bool aSelected)
297 : {
298 0 : mSelected = aSelected;
299 0 : return NS_OK;
300 : }
301 :
302 : /* PaymentDetails */
303 :
304 0 : NS_IMPL_ISUPPORTS(PaymentDetails,
305 : nsIPaymentDetails)
306 :
307 0 : PaymentDetails::PaymentDetails(const nsAString& aId,
308 : nsIPaymentItem* aTotalItem,
309 : nsIArray* aDisplayItems,
310 : nsIArray* aShippingOptions,
311 : nsIArray* aModifiers,
312 0 : const nsAString& aError)
313 : : mId(aId)
314 : , mTotalItem(aTotalItem)
315 : , mDisplayItems(aDisplayItems)
316 : , mShippingOptions(aShippingOptions)
317 : , mModifiers(aModifiers)
318 0 : , mError(aError)
319 : {
320 0 : }
321 :
322 : nsresult
323 0 : PaymentDetails::Create(const IPCPaymentDetails& aIPCDetails,
324 : nsIPaymentDetails** aDetails)
325 : {
326 0 : NS_ENSURE_ARG_POINTER(aDetails);
327 :
328 0 : nsCOMPtr<nsIPaymentItem> total;
329 0 : nsresult rv = PaymentItem::Create(aIPCDetails.total(), getter_AddRefs(total));
330 0 : if (NS_WARN_IF(NS_FAILED(rv))) {
331 0 : return rv;
332 : }
333 :
334 0 : nsCOMPtr<nsIArray> displayItems;
335 0 : if (aIPCDetails.displayItemsPassed()) {
336 0 : nsCOMPtr<nsIMutableArray> items = do_CreateInstance(NS_ARRAY_CONTRACTID);
337 0 : MOZ_ASSERT(items);
338 0 : for (const IPCPaymentItem& displayItem : aIPCDetails.displayItems()) {
339 0 : nsCOMPtr<nsIPaymentItem> item;
340 0 : rv = PaymentItem::Create(displayItem, getter_AddRefs(item));
341 0 : if (NS_WARN_IF(NS_FAILED(rv))) {
342 0 : return rv;
343 : }
344 0 : rv = items->AppendElement(item, false);
345 0 : if (NS_WARN_IF(NS_FAILED(rv))) {
346 0 : return rv;
347 : }
348 : }
349 0 : displayItems = items.forget();
350 : }
351 :
352 0 : nsCOMPtr<nsIArray> shippingOptions;
353 0 : if (aIPCDetails.shippingOptionsPassed()) {
354 0 : nsCOMPtr<nsIMutableArray> options = do_CreateInstance(NS_ARRAY_CONTRACTID);
355 0 : MOZ_ASSERT(options);
356 0 : for (const IPCPaymentShippingOption& shippingOption : aIPCDetails.shippingOptions()) {
357 0 : nsCOMPtr<nsIPaymentShippingOption> option;
358 0 : rv = PaymentShippingOption::Create(shippingOption, getter_AddRefs(option));
359 0 : if (NS_WARN_IF(NS_FAILED(rv))) {
360 0 : return rv;
361 : }
362 0 : rv = options->AppendElement(option, false);
363 0 : if (NS_WARN_IF(NS_FAILED(rv))) {
364 0 : return rv;
365 : }
366 : }
367 0 : shippingOptions = options.forget();
368 : }
369 :
370 0 : nsCOMPtr<nsIArray> modifiers;
371 0 : if (aIPCDetails.modifiersPassed()) {
372 0 : nsCOMPtr<nsIMutableArray> detailsModifiers = do_CreateInstance(NS_ARRAY_CONTRACTID);
373 0 : MOZ_ASSERT(detailsModifiers);
374 0 : for (const IPCPaymentDetailsModifier& modifier : aIPCDetails.modifiers()) {
375 0 : nsCOMPtr<nsIPaymentDetailsModifier> detailsModifier;
376 0 : rv = PaymentDetailsModifier::Create(modifier, getter_AddRefs(detailsModifier));
377 0 : if (NS_WARN_IF(NS_FAILED(rv))) {
378 0 : return rv;
379 : }
380 0 : rv = detailsModifiers->AppendElement(detailsModifier, false);
381 0 : if (NS_WARN_IF(NS_FAILED(rv))) {
382 0 : return rv;
383 : }
384 : }
385 0 : modifiers = detailsModifiers.forget();
386 : }
387 :
388 : nsCOMPtr<nsIPaymentDetails> details =
389 0 : new PaymentDetails(aIPCDetails.id(), total, displayItems, shippingOptions,
390 0 : modifiers, aIPCDetails.error());
391 :
392 0 : details.forget(aDetails);
393 0 : return NS_OK;
394 : }
395 :
396 : NS_IMETHODIMP
397 0 : PaymentDetails::GetId(nsAString& aId)
398 : {
399 0 : aId = mId;
400 0 : return NS_OK;
401 : }
402 :
403 : NS_IMETHODIMP
404 0 : PaymentDetails::GetTotalItem(nsIPaymentItem** aTotalItem)
405 : {
406 0 : NS_ENSURE_ARG_POINTER(aTotalItem);
407 0 : MOZ_ASSERT(mTotalItem);
408 0 : nsCOMPtr<nsIPaymentItem> total = mTotalItem;
409 0 : total.forget(aTotalItem);
410 0 : return NS_OK;
411 : }
412 :
413 : NS_IMETHODIMP
414 0 : PaymentDetails::GetDisplayItems(nsIArray** aDisplayItems)
415 : {
416 0 : NS_ENSURE_ARG_POINTER(aDisplayItems);
417 0 : nsCOMPtr<nsIArray> displayItems = mDisplayItems;
418 0 : displayItems.forget(aDisplayItems);
419 0 : return NS_OK;
420 : }
421 :
422 : NS_IMETHODIMP
423 0 : PaymentDetails::GetShippingOptions(nsIArray** aShippingOptions)
424 : {
425 0 : NS_ENSURE_ARG_POINTER(aShippingOptions);
426 0 : nsCOMPtr<nsIArray> options = mShippingOptions;
427 0 : options.forget(aShippingOptions);
428 0 : return NS_OK;
429 : }
430 :
431 : NS_IMETHODIMP
432 0 : PaymentDetails::GetModifiers(nsIArray** aModifiers)
433 : {
434 0 : NS_ENSURE_ARG_POINTER(aModifiers);
435 0 : nsCOMPtr<nsIArray> modifiers = mModifiers;
436 0 : modifiers.forget(aModifiers);
437 0 : return NS_OK;
438 : }
439 :
440 : NS_IMETHODIMP
441 0 : PaymentDetails::GetError(nsAString& aError)
442 : {
443 0 : aError = mError;
444 0 : return NS_OK;
445 : }
446 :
447 : NS_IMETHODIMP
448 0 : PaymentDetails::Update(nsIPaymentDetails* aDetails)
449 : {
450 0 : MOZ_ASSERT(aDetails);
451 : /*
452 : * According to the spec [1], update the attributes if they present in new
453 : * details (i.e., PaymentDetailsUpdate); otherwise, keep original value.
454 : * Note |id| comes only from initial details (i.e., PaymentDetailsInit) and
455 : * |error| only from new details.
456 : *
457 : * [1] https://www.w3.org/TR/payment-request/#updatewith-method
458 : */
459 :
460 0 : nsresult rv = aDetails->GetTotalItem(getter_AddRefs(mTotalItem));
461 0 : if (NS_WARN_IF(NS_FAILED(rv))) {
462 0 : return rv;
463 : }
464 :
465 0 : nsCOMPtr<nsIArray> displayItems;
466 0 : rv = aDetails->GetDisplayItems(getter_AddRefs(displayItems));
467 0 : if (NS_WARN_IF(NS_FAILED(rv))) {
468 0 : return rv;
469 : }
470 0 : if (displayItems) {
471 0 : mDisplayItems = displayItems;
472 : }
473 :
474 0 : nsCOMPtr<nsIArray> shippingOptions;
475 0 : rv = aDetails->GetShippingOptions(getter_AddRefs(shippingOptions));
476 0 : if (NS_WARN_IF(NS_FAILED(rv))) {
477 0 : return rv;
478 : }
479 0 : if (shippingOptions) {
480 0 : mShippingOptions = shippingOptions;
481 : }
482 :
483 0 : nsCOMPtr<nsIArray> modifiers;
484 0 : rv = aDetails->GetModifiers(getter_AddRefs(modifiers));
485 0 : if (NS_WARN_IF(NS_FAILED(rv))) {
486 0 : return rv;
487 : }
488 0 : if (modifiers) {
489 0 : mModifiers = modifiers;
490 : }
491 :
492 0 : rv = aDetails->GetError(mError);
493 0 : if (NS_WARN_IF(NS_FAILED(rv))) {
494 0 : return rv;
495 : }
496 0 : return NS_OK;
497 :
498 : }
499 : /* PaymentOptions */
500 :
501 0 : NS_IMPL_ISUPPORTS(PaymentOptions,
502 : nsIPaymentOptions)
503 :
504 0 : PaymentOptions::PaymentOptions(const bool aRequestPayerName,
505 : const bool aRequestPayerEmail,
506 : const bool aRequestPayerPhone,
507 : const bool aRequestShipping,
508 0 : const nsAString& aShippingType)
509 : : mRequestPayerName(aRequestPayerName)
510 : , mRequestPayerEmail(aRequestPayerEmail)
511 : , mRequestPayerPhone(aRequestPayerPhone)
512 : , mRequestShipping(aRequestShipping)
513 0 : , mShippingType(aShippingType)
514 : {
515 0 : }
516 :
517 : nsresult
518 0 : PaymentOptions::Create(const IPCPaymentOptions& aIPCOptions,
519 : nsIPaymentOptions** aOptions)
520 : {
521 0 : NS_ENSURE_ARG_POINTER(aOptions);
522 :
523 : nsCOMPtr<nsIPaymentOptions> options =
524 0 : new PaymentOptions(aIPCOptions.requestPayerName(),
525 0 : aIPCOptions.requestPayerEmail(),
526 0 : aIPCOptions.requestPayerPhone(),
527 0 : aIPCOptions.requestShipping(),
528 0 : aIPCOptions.shippingType());
529 0 : options.forget(aOptions);
530 0 : return NS_OK;
531 : }
532 :
533 : NS_IMETHODIMP
534 0 : PaymentOptions::GetRequestPayerName(bool* aRequestPayerName)
535 : {
536 0 : NS_ENSURE_ARG_POINTER(aRequestPayerName);
537 0 : *aRequestPayerName = mRequestPayerName;
538 0 : return NS_OK;
539 : }
540 :
541 : NS_IMETHODIMP
542 0 : PaymentOptions::GetRequestPayerEmail(bool* aRequestPayerEmail)
543 : {
544 0 : NS_ENSURE_ARG_POINTER(aRequestPayerEmail);
545 0 : *aRequestPayerEmail = mRequestPayerEmail;
546 0 : return NS_OK;
547 : }
548 :
549 : NS_IMETHODIMP
550 0 : PaymentOptions::GetRequestPayerPhone(bool* aRequestPayerPhone)
551 : {
552 0 : NS_ENSURE_ARG_POINTER(aRequestPayerPhone);
553 0 : *aRequestPayerPhone = mRequestPayerPhone;
554 0 : return NS_OK;
555 : }
556 :
557 : NS_IMETHODIMP
558 0 : PaymentOptions::GetRequestShipping(bool* aRequestShipping)
559 : {
560 0 : NS_ENSURE_ARG_POINTER(aRequestShipping);
561 0 : *aRequestShipping = mRequestShipping;
562 0 : return NS_OK;
563 : }
564 :
565 : NS_IMETHODIMP
566 0 : PaymentOptions::GetShippingType(nsAString& aShippingType)
567 : {
568 0 : aShippingType = mShippingType;
569 0 : return NS_OK;
570 : }
571 :
572 : /* PaymentReqeust */
573 :
574 0 : NS_IMPL_ISUPPORTS(PaymentRequest,
575 : nsIPaymentRequest)
576 :
577 0 : PaymentRequest::PaymentRequest(const uint64_t aTabId,
578 : const nsAString& aRequestId,
579 : nsIArray* aPaymentMethods,
580 : nsIPaymentDetails* aPaymentDetails,
581 0 : nsIPaymentOptions* aPaymentOptions)
582 : : mTabId(aTabId)
583 : , mRequestId(aRequestId)
584 : , mPaymentMethods(aPaymentMethods)
585 : , mPaymentDetails(aPaymentDetails)
586 0 : , mPaymentOptions(aPaymentOptions)
587 : {
588 0 : }
589 :
590 : NS_IMETHODIMP
591 0 : PaymentRequest::GetTabId(uint64_t* aTabId)
592 : {
593 0 : NS_ENSURE_ARG_POINTER(aTabId);
594 0 : *aTabId = mTabId;
595 0 : return NS_OK;
596 : }
597 :
598 : NS_IMETHODIMP
599 0 : PaymentRequest::GetRequestId(nsAString& aRequestId)
600 : {
601 0 : aRequestId = mRequestId;
602 0 : return NS_OK;
603 : }
604 :
605 : NS_IMETHODIMP
606 0 : PaymentRequest::GetPaymentMethods(nsIArray** aPaymentMethods)
607 : {
608 0 : NS_ENSURE_ARG_POINTER(aPaymentMethods);
609 0 : MOZ_ASSERT(mPaymentMethods);
610 0 : nsCOMPtr<nsIArray> methods = mPaymentMethods;
611 0 : methods.forget(aPaymentMethods);
612 0 : return NS_OK;
613 : }
614 :
615 : NS_IMETHODIMP
616 0 : PaymentRequest::GetPaymentDetails(nsIPaymentDetails** aPaymentDetails)
617 : {
618 0 : NS_ENSURE_ARG_POINTER(aPaymentDetails);
619 0 : MOZ_ASSERT(mPaymentDetails);
620 0 : nsCOMPtr<nsIPaymentDetails> details = mPaymentDetails;
621 0 : details.forget(aPaymentDetails);
622 0 : return NS_OK;
623 : }
624 :
625 : NS_IMETHODIMP
626 0 : PaymentRequest::GetPaymentOptions(nsIPaymentOptions** aPaymentOptions)
627 : {
628 0 : NS_ENSURE_ARG_POINTER(aPaymentOptions);
629 0 : MOZ_ASSERT(mPaymentOptions);
630 0 : nsCOMPtr<nsIPaymentOptions> options = mPaymentOptions;
631 0 : options.forget(aPaymentOptions);
632 0 : return NS_OK;
633 : }
634 :
635 : NS_IMETHODIMP
636 0 : PaymentRequest::UpdatePaymentDetails(nsIPaymentDetails* aPaymentDetails)
637 : {
638 0 : MOZ_ASSERT(aPaymentDetails);
639 0 : return mPaymentDetails->Update(aPaymentDetails);
640 : }
641 :
642 : /* PaymentAddress */
643 :
644 0 : NS_IMPL_ISUPPORTS(PaymentAddress, nsIPaymentAddress)
645 :
646 : NS_IMETHODIMP
647 0 : PaymentAddress::Init(const nsAString& aCountry,
648 : nsIArray* aAddressLine,
649 : const nsAString& aRegion,
650 : const nsAString& aCity,
651 : const nsAString& aDependentLocality,
652 : const nsAString& aPostalCode,
653 : const nsAString& aSortingCode,
654 : const nsAString& aLanguageCode,
655 : const nsAString& aOrganization,
656 : const nsAString& aRecipient,
657 : const nsAString& aPhone)
658 : {
659 0 : mCountry = aCountry;
660 0 : mAddressLine = aAddressLine;
661 0 : mRegion = aRegion;
662 0 : mCity = aCity;
663 0 : mDependentLocality = aDependentLocality;
664 0 : mPostalCode = aPostalCode;
665 0 : mSortingCode = aSortingCode;
666 0 : mLanguageCode = aLanguageCode;
667 0 : mOrganization = aOrganization;
668 0 : mRecipient = aRecipient;
669 0 : mPhone = aPhone;
670 0 : return NS_OK;
671 : }
672 :
673 : NS_IMETHODIMP
674 0 : PaymentAddress::GetCountry(nsAString& aCountry)
675 : {
676 0 : aCountry = mCountry;
677 0 : return NS_OK;
678 : }
679 :
680 : NS_IMETHODIMP
681 0 : PaymentAddress::GetAddressLine(nsIArray** aAddressLine)
682 : {
683 0 : NS_ENSURE_ARG_POINTER(aAddressLine);
684 0 : nsCOMPtr<nsIArray> addressLine = mAddressLine;
685 0 : addressLine.forget(aAddressLine);
686 0 : return NS_OK;
687 : }
688 :
689 : NS_IMETHODIMP
690 0 : PaymentAddress::GetRegion(nsAString& aRegion)
691 : {
692 0 : aRegion = mRegion;
693 0 : return NS_OK;
694 : }
695 :
696 : NS_IMETHODIMP
697 0 : PaymentAddress::GetCity(nsAString& aCity)
698 : {
699 0 : aCity = mCity;
700 0 : return NS_OK;
701 : }
702 :
703 : NS_IMETHODIMP
704 0 : PaymentAddress::GetDependentLocality(nsAString& aDependentLocality)
705 : {
706 0 : aDependentLocality = mDependentLocality;
707 0 : return NS_OK;
708 : }
709 :
710 : NS_IMETHODIMP
711 0 : PaymentAddress::GetPostalCode(nsAString& aPostalCode)
712 : {
713 0 : aPostalCode = mPostalCode;
714 0 : return NS_OK;
715 : }
716 :
717 : NS_IMETHODIMP
718 0 : PaymentAddress::GetSortingCode(nsAString& aSortingCode)
719 : {
720 0 : aSortingCode = mSortingCode;
721 0 : return NS_OK;
722 : }
723 :
724 : NS_IMETHODIMP
725 0 : PaymentAddress::GetLanguageCode(nsAString& aLanguageCode)
726 : {
727 0 : aLanguageCode = mLanguageCode;
728 0 : return NS_OK;
729 : }
730 :
731 : NS_IMETHODIMP
732 0 : PaymentAddress::GetOrganization(nsAString& aOrganization)
733 : {
734 0 : aOrganization = mOrganization;
735 0 : return NS_OK;
736 : }
737 :
738 : NS_IMETHODIMP
739 0 : PaymentAddress::GetRecipient(nsAString& aRecipient)
740 : {
741 0 : aRecipient = mRecipient;
742 0 : return NS_OK;
743 : }
744 :
745 : NS_IMETHODIMP
746 0 : PaymentAddress::GetPhone(nsAString& aPhone)
747 : {
748 0 : aPhone = mPhone;
749 0 : return NS_OK;
750 : }
751 :
752 : } // end of namespace payment
753 : } // end of namespace dom
754 : } // end of namespace mozilla
|