dom/interfaces/payments/nsIPaymentRequestService.idl
author Eden Chuang <echuang@mozilla.com>
Tue, 12 Dec 2017 15:12:23 +0800
changeset 450377 5076095da2ac64cb1260d32c84ed1501c72b1e8a
parent 417124 acd8a6411e8d2fbb93993f713079c778e2b90f9d
child 494090 ead0d6dcd6f07f4722fb20c2eb4628840343c4d9
permissions -rw-r--r--
Bug 1423124 - add comments on nsIPaymentActionResponse.idl and nsIPaymentRequestService.idl. r=MattN DONTBUILD

/* -*- 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 "nsIVariant.idl"
#include "nsIPaymentRequest.idl"
#include "nsIPaymentActionRequest.idl"
#include "nsIPaymentActionResponse.idl"
#include "nsIPaymentAddress.idl"
#include "nsISimpleEnumerator.idl"
#include "nsIPaymentUIService.idl"

/**
 *  nsPaymentRequestService is used to manage the created PaymentRequest in the
 *  chrome process. It is also the IPC agent for payment UI to communicate with
 *  merchant side.
 */
[scriptable, builtinclass, uuid(cccd665f-edf3-41fc-ab9b-fc55b37340aa)]
interface nsIPaymentRequestService : nsISupports
{
  /**
   *  Get the nsIPaymentRequest through the given payment request identifier.
   *  @param aRequestId - the payment request identifier.
   *                      This is an internal id generated by Gecko.
   *  @return           - the requested payment request. null if there is no
   *                      coressponding nsIPaymentRequest for aRequestId.
   */
  nsIPaymentRequest getPaymentRequestById(in AString aRequestId);

  /**
   *  Get the enumerator for all managed nsIPaymentRequests.
   *  @return - an enumerator for all managed nsIPaymentRequests.
   */
  nsISimpleEnumerator enumerate();

  /**
   *  Send the user's response to the merchant.
   *  @param aResponse - the user's response.
   */
  void respondPayment(in nsIPaymentActionResponse aResponse);

  /**
   *  Inform the merchant the shipping addres has changed.
   *  @param requestId - the request identifier of the payment request.
   *  @param aAddress - the new payment address.
   */
  void changeShippingAddress(in AString requestId, in nsIPaymentAddress aAddress);

  /**
   *  Inform the merchant the shipping option has changed.
   *  @param requestId - the request identifier of the payment request.
   *  @param option - the shipping option ID string.
   */
  void changeShippingOption(in AString requestId, in AString option);

  /**
   *  Following APIs are for testing or platform code only. UI implementation
   *  should not use them.
   */
  /**
   *  Clean up the all managed payment requests.
   *  This API is for testing only.
   */
  void cleanup();

  /**
   *  Setup the customized nsIPaymentUIService.
   *  This API is for testing only.
   */
  void setTestingUIService(in nsIPaymentUIService aUIService);

  /**
   *  Request a specified action on the specified PaymentRequest.
   *  @param aRequest - the requested action.
   */
  void requestPayment(in nsIPaymentActionRequest aRequest);

  /**
   *  This is a cleanup function to break the association between
   *  nsIPaymentRequestService and nsIPaymentActionCallback.
   *  nsIPaymentActionCallback is an interface that registered to
   *  nsIPaymentRequestService when the merchant asks to perform actions, and it
   *  will be called when user's response send back to nsIPaymentRequestService.
   *  @param aCallback - the specified nsIPaymentActionCallback.
   */
  void removeActionCallback(in nsIPaymentActionCallback aCallback);
};

%{C++
#define NS_PAYMENT_REQUEST_SERVICE_CID \
  { 0xcccd665f, 0xedf3, 0x41fc, { 0xab, 0x9b, 0xfc, 0x55, 0xb3, 0x73, 0x40, 0xaa } }
#define NS_PAYMENT_REQUEST_SERVICE_CONTRACT_ID \
  "@mozilla.org/dom/payments/payment-request-service;1"
%}