# Copyright (C) 2015-2019 Apple Inc. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in the
#    documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
# THE POSSIBILITY OF SUCH DAMAGE.
#/

#if ENABLE(APPLE_PAY)

// Currently DispatchedTo=Networking when APPLE_PAY_REMOTE_UI and DispatchedTo=UI when !APPLE_PAY_REMOTE_UI
[
    DispatchedFrom=WebContent,
    ExceptionForDispatchedTo,
    EnabledBy=ApplePayEnabled
]
messages -> WebPaymentCoordinatorProxy {

    CanMakePayments() -> (bool result) Synchronous
    CanMakePaymentsWithActiveCard(String merchantIdentifier, String domainName) -> (bool canMakePayments)
    OpenPaymentSetup(String merchantIdentifier, String domainName) -> (bool result)

    ShowPaymentUI(WebCore::PageIdentifier destinationID, WebKit::WebPageProxyIdentifier webPageProxyIdentifier, URL originatingURL, Vector<URL> linkIconURLs, WebCore::ApplePaySessionPaymentRequest paymentRequest) -> (bool result) Synchronous
    CompleteMerchantValidation(WebCore::PaymentMerchantSession paymentMerchantSession)
    CompleteShippingMethodSelection(struct std::optional<WebCore::ApplePayShippingMethodUpdate> update)
    CompleteShippingContactSelection(struct std::optional<WebCore::ApplePayShippingContactUpdate> update)
    CompletePaymentMethodSelection(struct std::optional<WebCore::ApplePayPaymentMethodUpdate> update)
#if ENABLE(APPLE_PAY_COUPON_CODE)
    CompleteCouponCodeChange(struct std::optional<WebCore::ApplePayCouponCodeUpdate> update)
#endif
    CompletePaymentSession(struct WebCore::ApplePayPaymentAuthorizationResult result)
    AbortPaymentSession()
    CancelPaymentSession()

    GetSetupFeatures(WebKit::PaymentSetupConfiguration configuration) -> (WebKit::PaymentSetupFeatures features)
    BeginApplePaySetup(WebKit::PaymentSetupConfiguration configuration, WebKit::PaymentSetupFeatures features) -> (bool result)
    EndApplePaySetup()
}

#endif
