summaryrefslogtreecommitdiffstats
path: root/dom/interfaces/payments/nsIPaymentUIService.idl
blob: b5213d98681d61f5d2097f57db7eb3493e7e3980 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* 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 "nsISupports.idl"
#include "nsIPaymentActionResponse.idl"

/**
 * nsIPaymentUIService is the interface used by Gecko to communicate with the
 * payment UI.
 * In general, the implementation of this interface should be a service that
 * manages all payment UI components and receives the requested payment actions
 * from Gecko and perform the corresponding UI behavior.
 */
[scriptable, uuid(01f8bd55-9017-438b-85ec-7c15d2b35cdc)]
interface nsIPaymentUIService : nsISupports
{
  /**
   *  Show the payment UI to users.
   *  The implementation gets the payment data through nsIPaymentRequestService
   *  by the passed in requestId, then shows the payment UI and start to interact
   *  with users.
   *  According to user's action, nsIPaymentRequestService's APIs respondPayment,
   *  changeShippingAddress, or changeShippingOtpion is possible to called in the
   *  implementation.
   *  @param requestId - the request identify of the payment request.
   *                     Notice that this requestId is an internal request Id
   *                     generated by Gecko
   */
  void showPayment(in AString requestId);

  /**
   *  Abort the payment.
   *  The implementation must abort and close the showing payment UI then call
   *  nsIPaymentRequestService respondPayment with nsIPaymentAbortActionResponse
   *  to inform Gecko of the abort status.
   *  @param requestId - the request identify of the payment request.
   *                     Notice that this requestId is an internal request Id
   *                     generated by Gecko
   */
  void abortPayment(in AString requestId);

  /**
   *  Complete the payment.
   *  The implementation should close the showing payment UI, then call
   *  nsIPaymentRequestService respondPayment with nsIPaymentCompleteActionResponse
   *  to inform Gecko of the complete status.
   *  @param requestId - the request identify of the payment request.
   *                     Notice that this requestId is an internal request Id
   *                     generated by Gecko
   */
  void completePayment(in AString requestId);

  /**
   *  Update the payment data in the payment UI.
   *  The implementation should get the updated payment data through the
   *  nsIPaymentRequestService again, and update the UI.
   *  @param requestId - the request identify of the payment request.
   *                     Notice that this requestId is an internal request Id
   *                     generated by Gecko
   */
  void updatePayment(in AString requestId);

  /**
   *  Close the payment UI for the specified PaymentRequest.
   *  The implementation should clean up the PaymentRequest data saved in the UI
   *  component and close the UI if the specified PaymentRequest is showing to
   *  the user.
   *  Notice when the method is called, that means the PaymentRequest is invalid
   *  in nsIPaymentRequestService.
   *  @param requestId - the request identify of the payment request.
   *                     Notice that this requestId is an internal request Id
   *                     generated by Gecko
   */
  void closePayment(in AString requestId);

};

%{C++
#define NS_PAYMENT_UI_SERVICE_CONTRACT_ID \
  "@mozilla.org/dom/payments/payment-ui-service;1"
%}