tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

nsIPaymentActionResponse.idl (10981B)


      1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
      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 "nsISupports.idl"
      7 #include "nsIVariant.idl"
      8 #include "nsIPaymentAddress.idl"
      9 
     10 /**
     11 *  The base interface of response data for the specified payment method.
     12 *  The response data is the content of the PaymentResponse's detail attribute.
     13 */
     14 [builtinclass, scriptable, uuid(2a338575-c688-40ee-a157-7488ab292ef2)]
     15 interface nsIPaymentResponseData: nsISupports
     16 {
     17  /**
     18   *  The consts for representing the response data type.
     19   *  GENERAL_RESPONSE is the general purpose response data type. Except basic
     20   *  card response data, all response data should belong to this type.
     21   *  BASICCARD_RESPONSE is a special response data type for basic card response.
     22   */
     23  const uint32_t GENERAL_RESPONSE = 0;
     24  const uint32_t BASICCARD_RESPONSE = 1;
     25 
     26  /**
     27   *  The response data type.
     28   *  Using the above defined consts(GENERAL_RESPONSE or BASICCARD_RESPONSE).
     29   */
     30  readonly attribute uint32_t type;
     31 
     32  /**
     33   *  The initial method.
     34   *  @param aType - the response data type.
     35   */
     36  void init(in uint32_t aType);
     37 };
     38 
     39 /**
     40 * The general purpose response data.
     41 */
     42 [builtinclass, scriptable, uuid(b986773e-2b30-4ed2-b8fe-6a96631c8000)]
     43 interface nsIGeneralResponseData : nsIPaymentResponseData
     44 {
     45  /**
     46   *  The stringified response data.
     47   */
     48  readonly attribute AString data;
     49 
     50  /**
     51   *  The initial method for nsIGeneralResponseData.
     52   *  @param aData - the javascript object of the content.
     53   */
     54  [implicit_jscontext]
     55  void initData(in jsval aData);
     56 };
     57 
     58 /**
     59 *  The basic card response data.
     60 *  Since PaymentAddress is an no constructor interface type, UI code can not
     61 *  easy create PaymentAddress by calling new PaymentAddress().
     62 *  Unfortunately, BasicCardResponse has a PaymentAddress attribute, billingAddress
     63 *  , it means UI can not create BsaicCardResponse by calling the init() with a
     64 *  given JSObject directly, because PaymentAddress creation in JS code is hard.
     65 *  To let UI code can create BasicCardResponse easier, nsIBasicCardResponse is
     66 *  provided for UI by passing the raw data of BasicCardResponse,
     67 */
     68 [builtinclass, scriptable, uuid(0d55a5e6-d185-44f0-b992-a8e1321e4bce)]
     69 interface nsIBasicCardResponseData : nsIPaymentResponseData
     70 {
     71  /**
     72   *  The cardholder name.
     73   */
     74  readonly attribute AString cardholderName;
     75 
     76  /**
     77   *  The card number.
     78   */
     79  readonly attribute AString cardNumber;
     80 
     81  /**
     82   *  The expiry month.
     83   */
     84  readonly attribute AString expiryMonth;
     85 
     86  /**
     87   *  The expiry year.
     88   */
     89  readonly attribute AString expiryYear;
     90 
     91  /**
     92   *  The card security number.
     93   */
     94  readonly attribute AString cardSecurityCode;
     95 
     96  /**
     97   *  The billing address.
     98   */
     99  readonly attribute nsIPaymentAddress billingAddress;
    100 
    101  /**
    102   *  The initial method for nsIBasicCardResponseData.
    103   *  @param aCardholderName   - the cardholder name.
    104   *  @param aCardNumber       - the card number.
    105   *  @param aExpiryMonth      - the expiry month.
    106   *  @param aExpiryYear       - the expiry year.
    107   *  @param aCardSecurityCode - the card security code.
    108   *  @param aBillingAddreess  - the billing address.
    109   */
    110  void initData(in AString aCardholderName,
    111                in AString aCardNumber,
    112                in AString aExpiryMonth,
    113                in AString aExpiryYear,
    114                in AString aCardSecurityCode,
    115                in nsIPaymentAddress billingAddress);
    116 };
    117 
    118 /**
    119 *  The base interface of user's response.
    120 *  Payment UI should create different sub-interface of nsIPaymentActionResponse
    121 *  according to user's action, and call nsIPaymentRequestService::respondPayment
    122 *  with the created action to inform the merchant.
    123 */
    124 [builtinclass, scriptable, uuid(a607c095-ef60-4a9b-a3d0-0506c60728b3)]
    125 interface nsIPaymentActionResponse : nsISupports
    126 {
    127  /**
    128   *  The response type.
    129   *  Align type to nsIPaymentActionRequest types,
    130   *  where 1 is for payment request creation.
    131   *  the action expects no response from UI module.
    132   */
    133  const uint32_t NO_TYPE = 0;
    134  // const uint32_t CREATE_ACTION = 1;
    135  const uint32_t CANMAKE_ACTION = 2;
    136  const uint32_t SHOW_ACTION = 3;
    137  const uint32_t ABORT_ACTION = 4;
    138  const uint32_t COMPLETE_ACTION = 5;
    139 
    140  /**
    141   *  The abort status.
    142   */
    143  const uint32_t ABORT_SUCCEEDED = 1;
    144  const uint32_t ABORT_FAILED = 0;
    145 
    146  /**
    147   *  The payment status.
    148   */
    149  const uint32_t PAYMENT_REJECTED = 0;
    150  const uint32_t PAYMENT_ACCEPTED = 1;
    151  const uint32_t PAYMENT_NOTSUPPORTED = 2;
    152 
    153  /**
    154   *  The complete status.
    155   */
    156  const uint32_t COMPLETE_SUCCEEDED = 1;
    157  const uint32_t COMPLETE_FAILED = 0;
    158 
    159  /*
    160   *  The payment request identity.
    161   */
    162  readonly attribute AString requestId;
    163 
    164  /*
    165   *  The response type.
    166   */
    167  readonly attribute uint32_t type;
    168 };
    169 
    170 /**
    171 *  The response for canMakePayment action.
    172 */
    173 [builtinclass, scriptable, uuid(52fc3f9f-c0cb-4874-b3d4-ee4b6e9cbe9c)]
    174 interface nsIPaymentCanMakeActionResponse : nsIPaymentActionResponse
    175 {
    176  /**
    177   *  The result of canMakePayment action.
    178   */
    179  readonly attribute boolean result;
    180 
    181  /**
    182   *  The initial method.
    183   *  @param aRequestId - the request identifier of the payment request.
    184   *  @param aResult - the canMakePayment result.
    185   */
    186  void init(in AString aRequestId, in boolean aResult);
    187 };
    188 
    189 /**
    190 *  The response for show action.
    191 *  Notice that to represent user's cancel, we should use nsIPaymentShowActionResponse
    192 *  with PAYMENT_REJECTED status, not nsIPaymentAbortActionResponse.
    193 */
    194 [builtinclass, scriptable, uuid(184385cb-2d35-4b99-a9a3-7c780bf66b9b)]
    195 interface nsIPaymentShowActionResponse : nsIPaymentActionResponse
    196 {
    197  /**
    198   *  Accept status of the payment.
    199   *  Using the defined consts(PAYMENT_XXX) in nsIPaymentActionResponse.
    200   */
    201  readonly attribute uint32_t acceptStatus;
    202 
    203  /**
    204   *  The decided payment method name. i.e. "basic-card".
    205   */
    206  readonly attribute AString methodName;
    207 
    208  /**
    209   *  The data needed by the payment method. (it must be serializable)
    210   */
    211  readonly attribute nsIPaymentResponseData data;
    212 
    213  /**
    214   *  The payer name information.
    215   */
    216  readonly attribute AString payerName;
    217 
    218  /**
    219   *  The payer email information.
    220   */
    221  readonly attribute AString payerEmail;
    222 
    223  /**
    224   *  The payer phone information.
    225   */
    226  readonly attribute AString payerPhone;
    227 
    228  /**
    229   *  The initial method.
    230   *  @param aRequestId - the request identifier of the payment request.
    231   *  @param aAcceptStatus - the payment status.
    232   *  @param aMethodName - the decided method name.
    233   *  @param aData - the response data for the decided payment method.
    234   *  @param aPayerName - the payer's name.
    235   *  @param aPayerEmail - the payer's email.
    236   *  @param aPayerPhone - the payer's phone.
    237   */
    238  void init(in AString aRequestId,
    239            in uint32_t aAcceptStatus,
    240            in AString aMethodName,
    241            in nsIPaymentResponseData aData,
    242            in AString aPayerName,
    243            in AString aPayerEmail,
    244            in AString aPayerPhone);
    245 };
    246 
    247 /**
    248 *  The response for abort action.
    249 */
    250 [builtinclass, scriptable, uuid(8c72bcdb-0c37-4786-a9e5-510afa2f8ede)]
    251 interface nsIPaymentAbortActionResponse : nsIPaymentActionResponse
    252 {
    253  /**
    254   *  The abort action status.
    255   *  Using the defined consts(ABORT_XXX) in nsIPaymentActionResponse.
    256   */
    257  readonly attribute uint32_t abortStatus;
    258 
    259  /**
    260   *  The Initial method.
    261   *  @param aRequestId - the request identifier of payment request.
    262   *  @param aAbortStatus - the abort action result.
    263   */
    264  void init(in AString aRequestId, in uint32_t aAbortStatus);
    265 
    266  /**
    267   *  Check if the abort action is succeeded
    268   */
    269  boolean isSucceeded();
    270 };
    271 
    272 [builtinclass, scriptable, uuid(62c01e69-9ca4-4060-99e4-b95f628c8e6d)]
    273 interface nsIPaymentCompleteActionResponse : nsIPaymentActionResponse
    274 {
    275  /**
    276   *  The complete action status.
    277   *  Using the defined consts(COMPLETE_XXX) in nsIPaymentActionResponse.
    278   */
    279  readonly attribute uint32_t completeStatus;
    280 
    281  /**
    282   *  The Initial method.
    283   *  @param aRequestId - the request identifier of payment request.
    284   *  @param aCompleteStatus - the complete action result.
    285   */
    286  void init(in AString aRequestId,
    287            in uint32_t aCompleteStatus);
    288 
    289  /**
    290   *  Check if the complete action is succeeded.
    291   */
    292  boolean isCompleted();
    293 };
    294 
    295 [builtinclass, scriptable, uuid(2035e0a9-c9ab-4c9f-b8e9-28b2ed61548c)]
    296 interface nsIMethodChangeDetails : nsISupports
    297 {
    298  /**
    299   *  The consts for representing the method change details data type.
    300   *  GENERAL_DETAILS is the general purpose details data type. Except basic
    301   *  card details, all details should belong to this type.
    302   *  BASICCARD_DETAILS is a special details data type for basic card change
    303   *  details.
    304   */
    305  const uint32_t GENERAL_DETAILS = 0;
    306  const uint32_t BASICCARD_DETAILS = 1;
    307 
    308  /**
    309   *  The method change details data type.
    310   *  Using the above defined consts(GENERAL_DETAILS or BASICCARD_DETAILS).
    311   */
    312  readonly attribute uint32_t type;
    313 
    314  /**
    315   *  The initial method.
    316   *  @param aType - the method change details data type.
    317   */
    318  void init(in uint32_t aType);
    319 };
    320 
    321 /**
    322 * The general purpose method change details.
    323 */
    324 [builtinclass, scriptable, uuid(e031267e-bec8-4f3c-b0b1-396b77ca260c)]
    325 interface nsIGeneralChangeDetails : nsIMethodChangeDetails
    326 {
    327  /**
    328   *  The stringified change details.
    329   */
    330  readonly attribute AString details;
    331 
    332  /**
    333   *  The initial method for nsIGeneralChangeDetails.
    334   *  @param aData - the javascript object of the content.
    335   */
    336  [implicit_jscontext]
    337  void initData(in jsval aDetails);
    338 };
    339 
    340 /**
    341 *  The basic card change details.
    342 *  Since PaymentAddress is an no constructor interface type, UI code can not
    343 *  easy create PaymentAddress by calling new PaymentAddress().
    344 *  Unfortunately, BasicCardResponse has a PaymentAddress attribute, billingAddress
    345 *  , it means UI can not create BsaicCardChangeDetails by calling the init() with a
    346 *  given JSObject directly, because PaymentAddress creation in JS code is hard.
    347 *  To let UI code can create BasicCardResponse easier, nsIBasicCardResponse is
    348 *  provided for UI by passing the raw data of BasicCardResponse,
    349 */
    350 [builtinclass, scriptable, uuid(5296f79e-15ea-40c3-8196-19cfa64d328c)]
    351 interface nsIBasicCardChangeDetails : nsIMethodChangeDetails
    352 {
    353  /**
    354   *  The billing address.
    355   */
    356  readonly attribute nsIPaymentAddress billingAddress;
    357 
    358  /**
    359   *  The initial method for nsIBasicCardChangeDetails.
    360   *  @param aBillingAddreess  - the billing address.
    361   */
    362  void initData(in nsIPaymentAddress billingAddress);
    363 };
    364 
    365 
    366 %{C++
    367 #define NS_PAYMENT_CANMAKE_ACTION_RESPONSE_CONTRACT_ID \
    368  "@mozilla.org/dom/payments/payment-canmake-action-response;1"
    369 
    370 #define NS_PAYMENT_SHOW_ACTION_RESPONSE_CONTRACT_ID \
    371  "@mozilla.org/dom/payments/payment-show-action-response;1"
    372 %}