Changeset 262069 in webkit


Ignore:
Timestamp:
May 22, 2020 1:10:01 PM (4 years ago)
Author:
aestes@apple.com
Message:

[Apple Pay] Add new ApplePayInstallmentConfiguration members
https://bugs.webkit.org/show_bug.cgi?id=212160
<rdar://problem/60703650>

Reviewed by Alex Christensen.

Source/WebCore:

Test: http/tests/ssl/applepay/ApplePayInstallmentItems.https.html

  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj: Added IDLs, headers, and derived sources for

ApplePayInstallment{Item,ItemType,RetailChannel}.

  • Modules/applepay/ApplePayInstallmentConfiguration.idl:
  • Modules/applepay/ApplePayInstallmentConfigurationWebCore.h: Added items,

applicationMetadata, and retailChannel members. Added missing conditionals to
merchantIdentifier and referrerIdentifier.

  • Modules/applepay/ApplePayInstallmentItem.h:
  • Modules/applepay/ApplePayInstallmentItem.idl:
  • Modules/applepay/ApplePayInstallmentItemType.h:
  • Modules/applepay/ApplePayInstallmentItemType.idl:
  • Modules/applepay/ApplePayInstallmentRetailChannel.h:
  • Modules/applepay/ApplePayInstallmentRetailChannel.idl: Added.
  • Modules/applepay/ApplePayRequestBase.cpp:

(WebCore::convertAndValidate): Changed to call PaymentInstallmentConfiguration::create,
returning an exception if present.

  • Modules/applepay/PaymentInstallmentConfiguration.mm:

(WebCore::fromDecimalNumber): Allowed for a large maximum number of fractional digits to
support formatting high-precision currency and APRs (note that this formatter is only used
for test support).

(WebCore::applePayItemType):
(WebCore::platformItemType): Added to convert between PKInstallmentItemType and
ApplePayInstallmentItemType.

(WebCore::applePayRetailChannel):
(WebCore::platformRetailChannel): Added to convert between PKInstallmentRetailChannel and
ApplePayInstallmentRetailChannel.

(WebCore::makeNSArrayElement):
(WebCore::makeVectorElement): Added to convert between NSArray<PKPaymentInstallmentItem *>
and Vector<ApplePayInstallmentItem>.

(WebCore::createPlatformConfiguration): Added a parameter for passing in applicationMetadata
as an NSDictionary. Set properties on PKPaymentInstallmentConfiguration for new
ApplePayInstallmentConfiguration members.
(WebCore::PaymentInstallmentConfiguration::create): Added; converts the applicationMetadata
JSON string (if present) to an NSDictionary, returning a TypeError if the JSON string does
not deserialize to an NSDictionary (as PassKit requires).
(WebCore::PaymentInstallmentConfiguration::PaymentInstallmentConfiguration): Added a
parameter for passing in applicationMetadata as an NSDictionary. Made private.
(WebCore::PaymentInstallmentConfiguration::applePayInstallmentConfiguration const): Set
members on ApplePayInstallmentConfiguration for new PKPaymentInstallmentConfiguration
properties.

  • Modules/applepay/PaymentInstallmentConfigurationWebCore.h:

Source/WebCore/PAL:

  • pal/cocoa/PassKitSoftLink.h:
  • pal/cocoa/PassKitSoftLink.mm: Added soft-linking macros for PKPaymentInstallmentItem.

Source/WTF:

  • wtf/PlatformEnableCocoa.h: Defined ENABLE_APPLE_PAY_INSTALLMENT_IDENTIFIERS.

LayoutTests:

  • http/tests/ssl/applepay/ApplePayInstallmentItems.https-expected.txt:
  • http/tests/ssl/applepay/ApplePayInstallmentItems.https.html: Added.
  • platform/mac-wk2/TestExpectations: Skipped test on Mojave and Catalina.
Location:
trunk
Files:
2 added
18 edited
6 copied

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r262062 r262069  
     12020-05-22  Andy Estes  <aestes@apple.com>
     2
     3        [Apple Pay] Add new ApplePayInstallmentConfiguration members
     4        https://bugs.webkit.org/show_bug.cgi?id=212160
     5        <rdar://problem/60703650>
     6
     7        Reviewed by Alex Christensen.
     8
     9        * http/tests/ssl/applepay/ApplePayInstallmentItems.https-expected.txt:
     10        * http/tests/ssl/applepay/ApplePayInstallmentItems.https.html: Added.
     11        * platform/mac-wk2/TestExpectations: Skipped test on Mojave and Catalina.
     12
    1132020-05-22  Carlos Alberto Lopez Perez  <clopez@igalia.com>
    214
  • trunk/LayoutTests/platform/mac-wk2/TestExpectations

    r261969 r262069  
    3939# ApplePayInstallmentConfiguration was first available in Catalina.
    4040[ Mojave ] http/tests/ssl/applepay/ApplePayInstallmentConfiguration.https.html [ Skip ]
     41
     42# ApplePayInstallmentItem is not available in Mojave or Catalina.
     43[ Mojave Catalina ] http/tests/ssl/applepay/ApplePayInstallmentItems.https.html [ Skip ]
    4144
    4245fast/visual-viewport/rubberbanding-viewport-rects.html [ Pass ]
  • trunk/Source/WTF/ChangeLog

    r262040 r262069  
     12020-05-22  Andy Estes  <aestes@apple.com>
     2
     3        [Apple Pay] Add new ApplePayInstallmentConfiguration members
     4        https://bugs.webkit.org/show_bug.cgi?id=212160
     5        <rdar://problem/60703650>
     6
     7        Reviewed by Alex Christensen.
     8
     9        * wtf/PlatformEnableCocoa.h: Defined ENABLE_APPLE_PAY_INSTALLMENT_IDENTIFIERS.
     10
    1112020-05-21  Robin Morisset  <rmorisset@apple.com>
    212
  • trunk/Source/WTF/wtf/PlatformEnableCocoa.h

    r261845 r262069  
    4444#endif
    4545
     46#if HAVE(PASSKIT_INSTALLMENT_IDENTIFIERS)
     47#if !defined(ENABLE_APPLE_PAY_INSTALLMENT_IDENTIFIERS)
     48#define ENABLE_APPLE_PAY_INSTALLMENT_IDENTIFIERS 1
     49#endif
     50#endif
     51
    4652#if HAVE(PASSKIT_INSTALLMENT_ITEMS)
    4753#if !defined(ENABLE_APPLE_PAY_INSTALLMENT_ITEMS)
     
    5763#define ENABLE_APPLE_PAY_SESSION_V8 1
    5864#endif
    59 
    6065#endif
    6166
  • trunk/Source/WebCore/ChangeLog

    r262066 r262069  
     12020-05-22  Andy Estes  <aestes@apple.com>
     2
     3        [Apple Pay] Add new ApplePayInstallmentConfiguration members
     4        https://bugs.webkit.org/show_bug.cgi?id=212160
     5        <rdar://problem/60703650>
     6
     7        Reviewed by Alex Christensen.
     8
     9        Test: http/tests/ssl/applepay/ApplePayInstallmentItems.https.html
     10
     11        * DerivedSources-input.xcfilelist:
     12        * DerivedSources-output.xcfilelist:
     13        * DerivedSources.make:
     14        * SourcesCocoa.txt:
     15        * WebCore.xcodeproj/project.pbxproj: Added IDLs, headers, and derived sources for
     16        ApplePayInstallment{Item,ItemType,RetailChannel}.
     17
     18        * Modules/applepay/ApplePayInstallmentConfiguration.idl:
     19        * Modules/applepay/ApplePayInstallmentConfigurationWebCore.h: Added items,
     20        applicationMetadata, and retailChannel members. Added missing conditionals to
     21        merchantIdentifier and referrerIdentifier.
     22
     23        * Modules/applepay/ApplePayInstallmentItem.h:
     24        * Modules/applepay/ApplePayInstallmentItem.idl:
     25        * Modules/applepay/ApplePayInstallmentItemType.h:
     26        * Modules/applepay/ApplePayInstallmentItemType.idl:
     27        * Modules/applepay/ApplePayInstallmentRetailChannel.h:
     28        * Modules/applepay/ApplePayInstallmentRetailChannel.idl: Added.
     29
     30        * Modules/applepay/ApplePayRequestBase.cpp:
     31        (WebCore::convertAndValidate): Changed to call PaymentInstallmentConfiguration::create,
     32        returning an exception if present.
     33
     34        * Modules/applepay/PaymentInstallmentConfiguration.mm:
     35        (WebCore::fromDecimalNumber): Allowed for a large maximum number of fractional digits to
     36        support formatting high-precision currency and APRs (note that this formatter is only used
     37        for test support).
     38
     39        (WebCore::applePayItemType):
     40        (WebCore::platformItemType): Added to convert between PKInstallmentItemType and
     41        ApplePayInstallmentItemType.
     42
     43        (WebCore::applePayRetailChannel):
     44        (WebCore::platformRetailChannel): Added to convert between PKInstallmentRetailChannel and
     45        ApplePayInstallmentRetailChannel.
     46
     47        (WebCore::makeNSArrayElement):
     48        (WebCore::makeVectorElement): Added to convert between NSArray<PKPaymentInstallmentItem *>
     49        and Vector<ApplePayInstallmentItem>.
     50
     51        (WebCore::createPlatformConfiguration): Added a parameter for passing in applicationMetadata
     52        as an NSDictionary. Set properties on PKPaymentInstallmentConfiguration for new
     53        ApplePayInstallmentConfiguration members.
     54        (WebCore::PaymentInstallmentConfiguration::create): Added; converts the applicationMetadata
     55        JSON string (if present) to an NSDictionary, returning a TypeError if the JSON string does
     56        not deserialize to an NSDictionary (as PassKit requires).
     57        (WebCore::PaymentInstallmentConfiguration::PaymentInstallmentConfiguration): Added a
     58        parameter for passing in applicationMetadata as an NSDictionary. Made private.
     59        (WebCore::PaymentInstallmentConfiguration::applePayInstallmentConfiguration const): Set
     60        members on ApplePayInstallmentConfiguration for new PKPaymentInstallmentConfiguration
     61        properties.
     62
     63        * Modules/applepay/PaymentInstallmentConfigurationWebCore.h:
     64
    1652020-05-22  Alex Christensen  <achristensen@webkit.org>
    266
  • trunk/Source/WebCore/DerivedSources-input.xcfilelist

    r261883 r262069  
    2626$(PROJECT_DIR)/Modules/applepay/ApplePayErrorContactField.idl
    2727$(PROJECT_DIR)/Modules/applepay/ApplePayInstallmentConfiguration.idl
     28$(PROJECT_DIR)/Modules/applepay/ApplePayInstallmentItem.idl
     29$(PROJECT_DIR)/Modules/applepay/ApplePayInstallmentItemType.idl
     30$(PROJECT_DIR)/Modules/applepay/ApplePayInstallmentRetailChannel.idl
    2831$(PROJECT_DIR)/Modules/applepay/ApplePayLineItem.idl
    2932$(PROJECT_DIR)/Modules/applepay/ApplePayMerchantCapability.idl
  • trunk/Source/WebCore/DerivedSources-output.xcfilelist

    r261883 r262069  
    8080$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayInstallmentConfiguration.cpp
    8181$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayInstallmentConfiguration.h
     82$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayInstallmentItem.cpp
     83$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayInstallmentItem.h
     84$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayInstallmentItemType.cpp
     85$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayInstallmentItemType.h
     86$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayInstallmentRetailChannel.cpp
     87$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayInstallmentRetailChannel.h
    8288$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayLineItem.cpp
    8389$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayLineItem.h
  • trunk/Source/WebCore/DerivedSources.make

    r261883 r262069  
    105105    $(WebCore)/Modules/applepay/ApplePayErrorContactField.idl \
    106106    $(WebCore)/Modules/applepay/ApplePayInstallmentConfiguration.idl \
     107        $(WebCore)/Modules/applepay/ApplePayInstallmentItem.idl \
     108        $(WebCore)/Modules/applepay/ApplePayInstallmentItemType.idl \
     109        $(WebCore)/Modules/applepay/ApplePayInstallmentRetailChannel.idl \
    107110    $(WebCore)/Modules/applepay/ApplePayLineItem.idl \
    108111    $(WebCore)/Modules/applepay/ApplePayMerchantCapability.idl \
  • trunk/Source/WebCore/Modules/applepay/ApplePayInstallmentConfiguration.idl

    r261785 r262069  
    3434    DOMString bindingTotalAmount;
    3535    DOMString currencyCode;
    36     DOMString merchantIdentifier;
    37     DOMString referrerIdentifier;
    3836    boolean isInStorePurchase;
     37    [Conditional=APPLE_PAY_INSTALLMENT_IDENTIFIERS] DOMString merchantIdentifier;
     38    [Conditional=APPLE_PAY_INSTALLMENT_IDENTIFIERS] DOMString referrerIdentifier;
     39    [Conditional=APPLE_PAY_INSTALLMENT_ITEMS] sequence<ApplePayInstallmentItem> items;
     40    [Conditional=APPLE_PAY_INSTALLMENT_ITEMS] JSON applicationMetadata;
     41    [Conditional=APPLE_PAY_INSTALLMENT_ITEMS] ApplePayInstallmentRetailChannel retailChannel = "unknown";
    3942};
  • trunk/Source/WebCore/Modules/applepay/ApplePayInstallmentConfigurationWebCore.h

    r260718 r262069  
    2828#if ENABLE(APPLE_PAY_INSTALLMENTS)
    2929
     30#include "ApplePayInstallmentItem.h"
     31#include "ApplePayInstallmentRetailChannel.h"
    3032#include "ApplePaySetupFeatureTypeWebCore.h"
     33#include <wtf/Vector.h>
    3134#include <wtf/text/WTFString.h>
    3235
     
    3942    String bindingTotalAmount;
    4043    String currencyCode;
     44    bool isInStorePurchase { false };
     45#if ENABLE(APPLE_PAY_INSTALLMENT_IDENTIFIERS)
    4146    String merchantIdentifier;
    4247    String referrerIdentifier;
    43     bool isInStorePurchase { false };
     48#endif
     49#if ENABLE(APPLE_PAY_INSTALLMENT_ITEMS)
     50    Vector<ApplePayInstallmentItem> items;
     51    String applicationMetadata;
     52    ApplePayInstallmentRetailChannel retailChannel { ApplePayInstallmentRetailChannel::Unknown };
     53#endif
    4454};
    4555
  • trunk/Source/WebCore/Modules/applepay/ApplePayInstallmentItem.h

    r262068 r262069  
    11/*
    2  * Copyright (C) 2019 Apple Inc. All rights reserved.
     2 * Copyright (C) 2020 Apple Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    2626#pragma once
    2727
    28 #if ENABLE(APPLE_PAY_INSTALLMENTS)
     28#if ENABLE(APPLE_PAY_INSTALLMENT_ITEMS)
    2929
    30 #include "ApplePaySetupFeatureTypeWebCore.h"
     30#include "ApplePayInstallmentItemType.h"
    3131#include <wtf/text/WTFString.h>
    3232
    3333namespace WebCore {
    3434
    35 struct ApplePayInstallmentConfiguration {
    36     ApplePaySetupFeatureType featureType { ApplePaySetupFeatureType::AppleCard };
    37     String merchandisingImageData;
    38     String openToBuyThresholdAmount;
    39     String bindingTotalAmount;
     35struct ApplePayInstallmentItem {
     36    ApplePayInstallmentItemType type { ApplePayInstallmentItemType::Generic };
     37    String amount;
    4038    String currencyCode;
    41     String merchantIdentifier;
    42     String referrerIdentifier;
    43     bool isInStorePurchase { false };
     39    String programIdentifier;
     40    String apr;
     41    String programTerms;
    4442};
    4543
    4644} // namespace WebCore
    4745
    48 #endif // ENABLE(APPLE_PAY_INSTALLMENTS)
     46#endif // ENABLE(APPLE_PAY_INSTALLMENT_ITEMS)
  • trunk/Source/WebCore/Modules/applepay/ApplePayInstallmentItem.idl

    r262068 r262069  
    11/*
    2  * Copyright (C) 2019 Apple Inc. All rights reserved.
     2 * Copyright (C) 2020 Apple Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    2525
    2626[
    27     Conditional=APPLE_PAY_INSTALLMENTS,
    28     ExportMacro=WEBCORE_EXPORT,
     27    Conditional=APPLE_PAY_INSTALLMENT_ITEMS,
    2928    JSGenerateToJSObject,
    30 ] dictionary ApplePayInstallmentConfiguration {
    31     ApplePaySetupFeatureType featureType = "appleCard";
    32     DOMString merchandisingImageData;
    33     DOMString openToBuyThresholdAmount;
    34     DOMString bindingTotalAmount;
     29] dictionary ApplePayInstallmentItem {
     30    ApplePayInstallmentItemType type = "generic";
     31    DOMString amount;
    3532    DOMString currencyCode;
    36     DOMString merchantIdentifier;
    37     DOMString referrerIdentifier;
    38     boolean isInStorePurchase;
     33    DOMString programIdentifier;
     34    DOMString apr;
     35    DOMString programTerms;
    3936};
  • trunk/Source/WebCore/Modules/applepay/ApplePayInstallmentItemType.h

    r262068 r262069  
    11/*
    2  * Copyright (C) 2019 Apple Inc. All rights reserved.
     2 * Copyright (C) 2020 Apple Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    2424 */
    2525
    26 [
    27     Conditional=APPLE_PAY_INSTALLMENTS,
    28     ExportMacro=WEBCORE_EXPORT,
    29     JSGenerateToJSObject,
    30 ] dictionary ApplePayInstallmentConfiguration {
    31     ApplePaySetupFeatureType featureType = "appleCard";
    32     DOMString merchandisingImageData;
    33     DOMString openToBuyThresholdAmount;
    34     DOMString bindingTotalAmount;
    35     DOMString currencyCode;
    36     DOMString merchantIdentifier;
    37     DOMString referrerIdentifier;
    38     boolean isInStorePurchase;
     26#pragma once
     27
     28#if ENABLE(APPLE_PAY_INSTALLMENT_ITEMS)
     29
     30namespace WebCore {
     31
     32enum class ApplePayInstallmentItemType : uint8_t {
     33    Generic,
     34    Phone,
     35    Pad,
     36    Watch,
     37    Mac,
    3938};
     39
     40} // namespace WebCore
     41
     42#endif // ENABLE(APPLE_PAY_INSTALLMENT_ITEMS)
  • trunk/Source/WebCore/Modules/applepay/ApplePayInstallmentItemType.idl

    r262068 r262069  
    11/*
    2  * Copyright (C) 2019 Apple Inc. All rights reserved.
     2 * Copyright (C) 2020 Apple Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    2525
    2626[
    27     Conditional=APPLE_PAY_INSTALLMENTS,
    28     ExportMacro=WEBCORE_EXPORT,
    29     JSGenerateToJSObject,
    30 ] dictionary ApplePayInstallmentConfiguration {
    31     ApplePaySetupFeatureType featureType = "appleCard";
    32     DOMString merchandisingImageData;
    33     DOMString openToBuyThresholdAmount;
    34     DOMString bindingTotalAmount;
    35     DOMString currencyCode;
    36     DOMString merchantIdentifier;
    37     DOMString referrerIdentifier;
    38     boolean isInStorePurchase;
     27    Conditional=APPLE_PAY_INSTALLMENT_ITEMS,
     28] enum ApplePayInstallmentItemType {
     29    "generic",
     30    "phone",
     31    "pad",
     32    "watch",
     33    "mac"
    3934};
  • trunk/Source/WebCore/Modules/applepay/ApplePayInstallmentRetailChannel.h

    r262068 r262069  
    11/*
    2  * Copyright (C) 2019 Apple Inc. All rights reserved.
     2 * Copyright (C) 2020 Apple Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    2424 */
    2525
    26 [
    27     Conditional=APPLE_PAY_INSTALLMENTS,
    28     ExportMacro=WEBCORE_EXPORT,
    29     JSGenerateToJSObject,
    30 ] dictionary ApplePayInstallmentConfiguration {
    31     ApplePaySetupFeatureType featureType = "appleCard";
    32     DOMString merchandisingImageData;
    33     DOMString openToBuyThresholdAmount;
    34     DOMString bindingTotalAmount;
    35     DOMString currencyCode;
    36     DOMString merchantIdentifier;
    37     DOMString referrerIdentifier;
    38     boolean isInStorePurchase;
     26#pragma once
     27
     28#if ENABLE(APPLE_PAY_INSTALLMENT_ITEMS)
     29
     30namespace WebCore {
     31
     32enum class ApplePayInstallmentRetailChannel : uint8_t {
     33    Unknown,
     34    App,
     35    Web,
     36    InStore,
    3937};
     38
     39} // namespace WebCore
     40
     41#endif // ENABLE(APPLE_PAY_INSTALLMENT_ITEMS)
  • trunk/Source/WebCore/Modules/applepay/ApplePayInstallmentRetailChannel.idl

    r262068 r262069  
    11/*
    2  * Copyright (C) 2019 Apple Inc. All rights reserved.
     2 * Copyright (C) 2020 Apple Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    2525
    2626[
    27     Conditional=APPLE_PAY_INSTALLMENTS,
    28     ExportMacro=WEBCORE_EXPORT,
    29     JSGenerateToJSObject,
    30 ] dictionary ApplePayInstallmentConfiguration {
    31     ApplePaySetupFeatureType featureType = "appleCard";
    32     DOMString merchandisingImageData;
    33     DOMString openToBuyThresholdAmount;
    34     DOMString bindingTotalAmount;
    35     DOMString currencyCode;
    36     DOMString merchantIdentifier;
    37     DOMString referrerIdentifier;
    38     boolean isInStorePurchase;
     27    Conditional=APPLE_PAY_INSTALLMENT_ITEMS,
     28] enum ApplePayInstallmentRetailChannel {
     29    "unknown",
     30    "app",
     31    "web",
     32    "inStore"
    3933};
  • trunk/Source/WebCore/Modules/applepay/ApplePayRequestBase.cpp

    r261785 r262069  
    107107
    108108#if ENABLE(APPLE_PAY_INSTALLMENTS)
    109     if (request.installmentConfiguration)
    110         result.setInstallmentConfiguration(WTFMove(*request.installmentConfiguration));
     109    if (request.installmentConfiguration) {
     110        auto installmentConfiguration = PaymentInstallmentConfiguration::create(*request.installmentConfiguration);
     111        if (installmentConfiguration.hasException())
     112            return installmentConfiguration.releaseException();
     113        result.setInstallmentConfiguration(installmentConfiguration.releaseReturnValue());
     114    }
    111115#endif
    112116
  • trunk/Source/WebCore/Modules/applepay/PaymentInstallmentConfiguration.mm

    r261789 r262069  
    3030
    3131#import "ApplePayInstallmentConfigurationWebCore.h"
     32#import "ApplePayInstallmentItemType.h"
     33#import "ApplePayInstallmentRetailChannel.h"
     34#import "ExceptionOr.h"
     35#import <wtf/cocoa/VectorCocoa.h>
     36
    3237#import <pal/cocoa/PassKitSoftLink.h>
    3338
     
    4853    [numberFormatter setMinimumIntegerDigits:1];
    4954    [numberFormatter setMinimumFractionDigits:2];
     55    [numberFormatter setMaximumFractionDigits:[numberFormatter maximumIntegerDigits]];
    5056    return [numberFormatter stringFromNumber:number];
    5157}
    5258
    53 static PKPaymentSetupFeatureType platformFeatureType(const ApplePaySetupFeatureType& featureType)
     59static ApplePaySetupFeatureType applePaySetupFeatureType(PKPaymentSetupFeatureType featureType)
     60{
     61    switch (featureType) {
     62    case PKPaymentSetupFeatureTypeApplePay:
     63        return ApplePaySetupFeatureType::ApplePay;
     64    ALLOW_DEPRECATED_DECLARATIONS_BEGIN
     65    case PKPaymentSetupFeatureTypeApplePay_X:
     66    ALLOW_DEPRECATED_DECLARATIONS_END
     67        return ApplePaySetupFeatureType::AppleCard;
     68    }
     69}
     70
     71static PKPaymentSetupFeatureType platformFeatureType(ApplePaySetupFeatureType featureType)
    5472{
    5573    switch (featureType) {
     
    6381}
    6482
    65 static ApplePaySetupFeatureType applePaySetupFeatureType(PKPaymentSetupFeatureType featureType)
    66 {
    67     switch (featureType) {
    68     case PKPaymentSetupFeatureTypeApplePay:
    69         return ApplePaySetupFeatureType::ApplePay;
    70     ALLOW_DEPRECATED_DECLARATIONS_BEGIN
    71     case PKPaymentSetupFeatureTypeApplePay_X:
    72     ALLOW_DEPRECATED_DECLARATIONS_END
    73         return ApplePaySetupFeatureType::AppleCard;
    74     }
    75 }
    76 
    77 static RetainPtr<PKPaymentInstallmentConfiguration> createPlatformConfiguration(const ApplePayInstallmentConfiguration& coreConfiguration)
     83static ApplePayInstallmentItemType applePayItemType(PKInstallmentItemType itemType)
     84{
     85    switch (itemType) {
     86    case PKInstallmentItemTypeGeneric:
     87        return ApplePayInstallmentItemType::Generic;
     88    case PKInstallmentItemTypePhone:
     89        return ApplePayInstallmentItemType::Phone;
     90    case PKInstallmentItemTypePad:
     91        return ApplePayInstallmentItemType::Pad;
     92    case PKInstallmentItemTypeWatch:
     93        return ApplePayInstallmentItemType::Watch;
     94    case PKInstallmentItemTypeMac:
     95        return ApplePayInstallmentItemType::Mac;
     96    }
     97}
     98
     99static PKInstallmentItemType platformItemType(ApplePayInstallmentItemType itemType)
     100{
     101    switch (itemType) {
     102    case ApplePayInstallmentItemType::Generic:
     103        return PKInstallmentItemTypeGeneric;
     104    case ApplePayInstallmentItemType::Phone:
     105        return PKInstallmentItemTypePhone;
     106    case ApplePayInstallmentItemType::Pad:
     107        return PKInstallmentItemTypePad;
     108    case ApplePayInstallmentItemType::Watch:
     109        return PKInstallmentItemTypeWatch;
     110    case ApplePayInstallmentItemType::Mac:
     111        return PKInstallmentItemTypeMac;
     112    }
     113}
     114
     115static ApplePayInstallmentRetailChannel applePayRetailChannel(PKInstallmentRetailChannel retailChannel)
     116{
     117    switch (retailChannel) {
     118    case PKInstallmentRetailChannelUnknown:
     119        return ApplePayInstallmentRetailChannel::Unknown;
     120    case PKInstallmentRetailChannelApp:
     121        return ApplePayInstallmentRetailChannel::App;
     122    case PKInstallmentRetailChannelWeb:
     123        return ApplePayInstallmentRetailChannel::Web;
     124    case PKInstallmentRetailChannelInStore:
     125        return ApplePayInstallmentRetailChannel::InStore;
     126    }
     127}
     128
     129static PKInstallmentRetailChannel platformRetailChannel(ApplePayInstallmentRetailChannel retailChannel)
     130{
     131    switch (retailChannel) {
     132    case ApplePayInstallmentRetailChannel::Unknown:
     133        return PKInstallmentRetailChannelUnknown;
     134    case ApplePayInstallmentRetailChannel::App:
     135        return PKInstallmentRetailChannelApp;
     136    case ApplePayInstallmentRetailChannel::Web:
     137        return PKInstallmentRetailChannelWeb;
     138    case ApplePayInstallmentRetailChannel::InStore:
     139        return PKInstallmentRetailChannelInStore;
     140    }
     141}
     142
     143static RetainPtr<id> makeNSArrayElement(const ApplePayInstallmentItem& item)
     144{
     145    auto installmentItem = adoptNS([PAL::allocPKPaymentInstallmentItemInstance() init]);
     146    [installmentItem setInstallmentItemType:platformItemType(item.type)];
     147    [installmentItem setAmount:toDecimalNumber(item.amount)];
     148    [installmentItem setCurrencyCode:item.currencyCode];
     149    [installmentItem setProgramIdentifier:item.programIdentifier];
     150    [installmentItem setApr:toDecimalNumber(item.apr)];
     151    [installmentItem setProgramTerms:item.programTerms];
     152    return installmentItem;
     153}
     154
     155static Optional<ApplePayInstallmentItem> makeVectorElement(const ApplePayInstallmentItem*, id arrayElement)
     156{
     157    if (![arrayElement isKindOfClass:PAL::getPKPaymentInstallmentItemClass()])
     158        return WTF::nullopt;
     159
     160    PKPaymentInstallmentItem *item = arrayElement;
     161    return ApplePayInstallmentItem {
     162        applePayItemType([item installmentItemType]),
     163        fromDecimalNumber([item amount]),
     164        [item currencyCode],
     165        [item programIdentifier],
     166        fromDecimalNumber([item apr]),
     167        [item programTerms],
     168    };
     169}
     170
     171static RetainPtr<PKPaymentInstallmentConfiguration> createPlatformConfiguration(const ApplePayInstallmentConfiguration& coreConfiguration, NSDictionary *applicationMetadata)
    78172{
    79173    auto configuration = adoptNS([PAL::allocPKPaymentInstallmentConfigurationInstance() init]);
     
    97191    [configuration setReferrerIdentifier:coreConfiguration.referrerIdentifier];
    98192#endif
     193   
     194#if HAVE(PASSKIT_INSTALLMENT_ITEMS)
     195#if PLATFORM(MAC)
     196    if (![configuration respondsToSelector:@selector(setInstallmentItems:)]
     197        || ![configuration respondsToSelector:@selector(setApplicationMetadata:)]
     198        || ![configuration respondsToSelector:@selector(setRetailChannel:)])
     199        return configuration;
     200#endif
     201    [configuration setInstallmentItems:createNSArray(coreConfiguration.items).get()];
     202    [configuration setApplicationMetadata:applicationMetadata];
     203    [configuration setRetailChannel:platformRetailChannel(coreConfiguration.retailChannel)];
     204#else
     205    UNUSED_PARAM(applicationMetadata);
     206#endif
    99207
    100208    return configuration;
    101209}
    102210
    103 PaymentInstallmentConfiguration::PaymentInstallmentConfiguration(const ApplePayInstallmentConfiguration& configuration)
    104     : m_configuration { createPlatformConfiguration(configuration) }
     211ExceptionOr<PaymentInstallmentConfiguration> PaymentInstallmentConfiguration::create(const ApplePayInstallmentConfiguration& configuration)
     212{
     213    NSDictionary *applicationMetadataDictionary = nil;
     214#if ENABLE(APPLE_PAY_INSTALLMENT_ITEMS)
     215    if (!configuration.applicationMetadata.isNull()) {
     216        NSData *applicationMetadata = [configuration.applicationMetadata dataUsingEncoding:NSUTF8StringEncoding];
     217        applicationMetadataDictionary = dynamic_objc_cast<NSDictionary>([NSJSONSerialization JSONObjectWithData:applicationMetadata options:0 error:nil]);
     218        if (!applicationMetadataDictionary)
     219            return Exception { TypeError, "applicationMetadata must be a JSON object" };
     220    }
     221#endif
     222
     223    return PaymentInstallmentConfiguration(configuration, applicationMetadataDictionary);
     224}
     225
     226PaymentInstallmentConfiguration::PaymentInstallmentConfiguration(const ApplePayInstallmentConfiguration& configuration, NSDictionary *applicationMetadata)
     227    : m_configuration { createPlatformConfiguration(configuration, applicationMetadata) }
    105228{
    106229}
     
    137260    installmentConfiguration.referrerIdentifier = [m_configuration referrerIdentifier];
    138261#endif
    139    
     262
     263#if ENABLE(APPLE_PAY_INSTALLMENT_ITEMS)
     264#if PLATFORM(MAC)
     265    if (![m_configuration respondsToSelector:@selector(installmentItems)]
     266        || ![m_configuration respondsToSelector:@selector(applicationMetadata)]
     267        || ![m_configuration respondsToSelector:@selector(retailChannel)])
     268        return installmentConfiguration;
     269#endif
     270    RetainPtr<NSString> applicationMetadataString;
     271    if (NSDictionary *applicationMetadataDictionary = [m_configuration applicationMetadata]) {
     272        if (NSData *applicationMetadata = [NSJSONSerialization dataWithJSONObject:applicationMetadataDictionary options:NSJSONWritingSortedKeys error:nil])
     273            applicationMetadataString = adoptNS([[NSString alloc] initWithData:applicationMetadata encoding:NSUTF8StringEncoding]);
     274    }
     275
     276    installmentConfiguration.items = makeVector<ApplePayInstallmentItem>([m_configuration installmentItems]);
     277    installmentConfiguration.applicationMetadata = applicationMetadataString.get();
     278    installmentConfiguration.retailChannel = applePayRetailChannel([m_configuration retailChannel]);
     279#endif
     280
    140281    return installmentConfiguration;
    141282}
  • trunk/Source/WebCore/Modules/applepay/PaymentInstallmentConfigurationWebCore.h

    r261785 r262069  
    3030#include <wtf/RetainPtr.h>
    3131
     32OBJC_CLASS NSDictionary;
    3233OBJC_CLASS PKPaymentInstallmentConfiguration;
    3334
    3435namespace WebCore {
    3536
     37class Document;
    3638struct ApplePayInstallmentConfiguration;
     39template<typename> class ExceptionOr;
    3740
    3841class WEBCORE_EXPORT PaymentInstallmentConfiguration {
    3942public:
     43    static ExceptionOr<PaymentInstallmentConfiguration> create(const ApplePayInstallmentConfiguration&);
     44
    4045    PaymentInstallmentConfiguration() = default;
    41     PaymentInstallmentConfiguration(const ApplePayInstallmentConfiguration&);
    4246    PaymentInstallmentConfiguration(RetainPtr<PKPaymentInstallmentConfiguration>&&);
    4347
     
    4650
    4751private:
     52    PaymentInstallmentConfiguration(const ApplePayInstallmentConfiguration&, NSDictionary *applicationMetadata);
     53
    4854    RetainPtr<PKPaymentInstallmentConfiguration> m_configuration;
    4955};
  • trunk/Source/WebCore/PAL/ChangeLog

    r261921 r262069  
     12020-05-22  Andy Estes  <aestes@apple.com>
     2
     3        [Apple Pay] Add new ApplePayInstallmentConfiguration members
     4        https://bugs.webkit.org/show_bug.cgi?id=212160
     5        <rdar://problem/60703650>
     6
     7        Reviewed by Alex Christensen.
     8
     9        * pal/cocoa/PassKitSoftLink.h:
     10        * pal/cocoa/PassKitSoftLink.mm: Added soft-linking macros for PKPaymentInstallmentItem.
     11
    1122020-05-20  Andy Estes  <aestes@apple.com>
    213
  • trunk/Source/WebCore/PAL/pal/cocoa/PassKitSoftLink.h

    r260717 r262069  
    5252#endif
    5353
     54#if HAVE(PASSKIT_INSTALLMENT_ITEMS)
     55SOFT_LINK_CLASS_FOR_HEADER(PAL, PKPaymentInstallmentItem)
     56#endif
     57
    5458#if PLATFORM(IOS_FAMILY)
    5559SOFT_LINK_CLASS_FOR_HEADER(PAL, PKPaymentAuthorizationController)
  • trunk/Source/WebCore/PAL/pal/cocoa/PassKitSoftLink.mm

    r260717 r262069  
    4343#endif
    4444
     45#if HAVE(PASSKIT_INSTALLMENT_ITEMS)
     46SOFT_LINK_CLASS_FOR_SOURCE_OPTIONAL_WITH_EXPORT(PAL, PassKit, PKPaymentInstallmentItem, PAL_EXPORT)
     47#endif
     48
    4549#else // PLATFORM(MAC)
    4650
     
    5559#if HAVE(PASSKIT_INSTALLMENTS)
    5660SOFT_LINK_CLASS_FOR_SOURCE_WITH_EXPORT(PAL, PassKit, PKPaymentInstallmentConfiguration, PAL_EXPORT)
     61#endif
     62
     63#if HAVE(PASSKIT_INSTALLMENT_ITEMS)
     64SOFT_LINK_CLASS_FOR_SOURCE_WITH_EXPORT(PAL, PassKit, PKPaymentInstallmentItem, PAL_EXPORT)
    5765#endif
    5866
  • trunk/Source/WebCore/SourcesCocoa.txt

    r261883 r262069  
    624624    JSApplePayErrorContactField.cpp
    625625    JSApplePayInstallmentConfiguration.cpp
     626    JSApplePayInstallmentItem.cpp
     627    JSApplePayInstallmentItemType.cpp
     628    JSApplePayInstallmentRetailChannel.cpp
    626629    JSApplePayLineItem.cpp
    627630    JSApplePayMerchantCapability.cpp
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r262066 r262069  
    29632963                A113E02823318293009C33A0 /* PaymentSessionError.h in Headers */ = {isa = PBXBuildFile; fileRef = A113E02723318293009C33A0 /* PaymentSessionError.h */; settings = {ATTRIBUTES = (Private, ); }; };
    29642964                A113E02E2331A134009C33A0 /* ApplePayCancelEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = A113E02B2331A0E4009C33A0 /* ApplePayCancelEvent.h */; };
     2965                A117509A247468D600D4D26C /* ApplePayInstallmentConfigurationWebCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C53DCD02446449A00A93124 /* ApplePayInstallmentConfigurationWebCore.h */; };
     2966                A11750A0247468F300D4D26C /* ApplePayInstallmentItem.h in Headers */ = {isa = PBXBuildFile; fileRef = A117509C247468E500D4D26C /* ApplePayInstallmentItem.h */; };
     2967                A11750A1247468F700D4D26C /* ApplePayInstallmentItemType.h in Headers */ = {isa = PBXBuildFile; fileRef = A117509D247468E600D4D26C /* ApplePayInstallmentItemType.h */; };
    29652968                A11AE0CC1FFD60530047348B /* MerchantValidationEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = A11AE0C91FFD60530047348B /* MerchantValidationEvent.h */; };
    29662969                A11AE0D31FFD61DF0047348B /* JSMerchantValidationEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = A11AE0D11FFD61DF0047348B /* JSMerchantValidationEvent.h */; };
     
    29842987                A12C59FE20360B4A0012236B /* JSApplePayShippingMethodUpdate.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ADFDFEA1E71DCA0008F5D34 /* JSApplePayShippingMethodUpdate.h */; };
    29852988                A136A00D1134DBD200CC8D50 /* XMLHttpRequestProgressEventThrottle.h in Headers */ = {isa = PBXBuildFile; fileRef = A136A00B1134DBD200CC8D50 /* XMLHttpRequestProgressEventThrottle.h */; };
     2989                A13B616B2475E04800BBE6DE /* ApplePayInstallmentRetailChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = A13B61672475DFC500BBE6DE /* ApplePayInstallmentRetailChannel.h */; };
     2990                A13B61742475E34200BBE6DE /* JSApplePayInstallmentConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = A13B61722475E31500BBE6DE /* JSApplePayInstallmentConfiguration.h */; };
     2991                A13B61752475E35F00BBE6DE /* JSApplePayInstallmentItem.h in Headers */ = {isa = PBXBuildFile; fileRef = A13B61712475E31400BBE6DE /* JSApplePayInstallmentItem.h */; };
     2992                A13B61762475E37A00BBE6DE /* JSApplePayInstallmentItemType.h in Headers */ = {isa = PBXBuildFile; fileRef = A13B616E2475E31100BBE6DE /* JSApplePayInstallmentItemType.h */; };
     2993                A13B61772475E3A300BBE6DE /* JSApplePayInstallmentRetailChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = A13B616F2475E31200BBE6DE /* JSApplePayInstallmentRetailChannel.h */; };
    29862994                A140618B1E2ECA0A0032B34E /* MockPreviewLoaderClient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A14061891E2ECA0A0032B34E /* MockPreviewLoaderClient.cpp */; };
    29872995                A140618C1E2ECA0A0032B34E /* MockPreviewLoaderClient.h in Headers */ = {isa = PBXBuildFile; fileRef = A140618A1E2ECA0A0032B34E /* MockPreviewLoaderClient.h */; };
     
    1147811486                A113E02B2331A0E4009C33A0 /* ApplePayCancelEvent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ApplePayCancelEvent.h; sourceTree = "<group>"; };
    1147911487                A113E02C2331A0E4009C33A0 /* ApplePayCancelEvent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ApplePayCancelEvent.cpp; sourceTree = "<group>"; };
     11488                A117509C247468E500D4D26C /* ApplePayInstallmentItem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ApplePayInstallmentItem.h; sourceTree = "<group>"; };
     11489                A117509D247468E600D4D26C /* ApplePayInstallmentItemType.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ApplePayInstallmentItemType.h; sourceTree = "<group>"; };
     11490                A117509E247468E600D4D26C /* ApplePayInstallmentItemType.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = ApplePayInstallmentItemType.idl; sourceTree = "<group>"; };
     11491                A117509F247468E700D4D26C /* ApplePayInstallmentItem.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = ApplePayInstallmentItem.idl; sourceTree = "<group>"; };
    1148011492                A11AE0C91FFD60530047348B /* MerchantValidationEvent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MerchantValidationEvent.h; sourceTree = "<group>"; };
    1148111493                A11AE0CA1FFD60530047348B /* MerchantValidationEvent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = MerchantValidationEvent.cpp; sourceTree = "<group>"; };
     
    1149411506                A136A00A1134DBD200CC8D50 /* XMLHttpRequestProgressEventThrottle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = XMLHttpRequestProgressEventThrottle.cpp; sourceTree = "<group>"; };
    1149511507                A136A00B1134DBD200CC8D50 /* XMLHttpRequestProgressEventThrottle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XMLHttpRequestProgressEventThrottle.h; sourceTree = "<group>"; };
     11508                A13B61672475DFC500BBE6DE /* ApplePayInstallmentRetailChannel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ApplePayInstallmentRetailChannel.h; sourceTree = "<group>"; };
     11509                A13B61692475DFC500BBE6DE /* ApplePayInstallmentRetailChannel.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = ApplePayInstallmentRetailChannel.idl; sourceTree = "<group>"; };
     11510                A13B616C2475E31000BBE6DE /* JSApplePayInstallmentRetailChannel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSApplePayInstallmentRetailChannel.cpp; sourceTree = "<group>"; };
     11511                A13B616D2475E31000BBE6DE /* JSApplePayInstallmentConfiguration.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSApplePayInstallmentConfiguration.cpp; sourceTree = "<group>"; };
     11512                A13B616E2475E31100BBE6DE /* JSApplePayInstallmentItemType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSApplePayInstallmentItemType.h; sourceTree = "<group>"; };
     11513                A13B616F2475E31200BBE6DE /* JSApplePayInstallmentRetailChannel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSApplePayInstallmentRetailChannel.h; sourceTree = "<group>"; };
     11514                A13B61702475E31300BBE6DE /* JSApplePayInstallmentItem.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSApplePayInstallmentItem.cpp; sourceTree = "<group>"; };
     11515                A13B61712475E31400BBE6DE /* JSApplePayInstallmentItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSApplePayInstallmentItem.h; sourceTree = "<group>"; };
     11516                A13B61722475E31500BBE6DE /* JSApplePayInstallmentConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSApplePayInstallmentConfiguration.h; sourceTree = "<group>"; };
     11517                A13B61732475E31600BBE6DE /* JSApplePayInstallmentItemType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSApplePayInstallmentItemType.cpp; sourceTree = "<group>"; };
    1149611518                A14061891E2ECA0A0032B34E /* MockPreviewLoaderClient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MockPreviewLoaderClient.cpp; sourceTree = "<group>"; };
    1149711519                A140618A1E2ECA0A0032B34E /* MockPreviewLoaderClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MockPreviewLoaderClient.h; sourceTree = "<group>"; };
     
    1736517387                                5C53DCD52446449B00A93124 /* ApplePayInstallmentConfiguration.idl */,
    1736617388                                5C53DCD02446449A00A93124 /* ApplePayInstallmentConfigurationWebCore.h */,
     17389                                A117509C247468E500D4D26C /* ApplePayInstallmentItem.h */,
     17390                                A117509F247468E700D4D26C /* ApplePayInstallmentItem.idl */,
     17391                                A117509D247468E600D4D26C /* ApplePayInstallmentItemType.h */,
     17392                                A117509E247468E600D4D26C /* ApplePayInstallmentItemType.idl */,
     17393                                A13B61672475DFC500BBE6DE /* ApplePayInstallmentRetailChannel.h */,
     17394                                A13B61692475DFC500BBE6DE /* ApplePayInstallmentRetailChannel.idl */,
    1736717395                                7C6579E21E00827000E3A27A /* ApplePayLineItem.h */,
    1736817396                                7C6579E41E0082C800E3A27A /* ApplePayLineItem.idl */,
     
    1756117589                                A1BB85AC2159B19F0067E07D /* JSApplePayErrorContactField.cpp */,
    1756217590                                A1BB85AF2159B1A00067E07D /* JSApplePayErrorContactField.h */,
     17591                                A13B616D2475E31000BBE6DE /* JSApplePayInstallmentConfiguration.cpp */,
     17592                                A13B61722475E31500BBE6DE /* JSApplePayInstallmentConfiguration.h */,
     17593                                A13B61702475E31300BBE6DE /* JSApplePayInstallmentItem.cpp */,
     17594                                A13B61712475E31400BBE6DE /* JSApplePayInstallmentItem.h */,
     17595                                A13B61732475E31600BBE6DE /* JSApplePayInstallmentItemType.cpp */,
     17596                                A13B616E2475E31100BBE6DE /* JSApplePayInstallmentItemType.h */,
     17597                                A13B616C2475E31000BBE6DE /* JSApplePayInstallmentRetailChannel.cpp */,
     17598                                A13B616F2475E31200BBE6DE /* JSApplePayInstallmentRetailChannel.h */,
    1756317599                                7C6579E91E00856600E3A27A /* JSApplePayLineItem.cpp */,
    1756417600                                7C6579EA1E00856600E3A27A /* JSApplePayLineItem.h */,
     
    2957329609                                A1BB859C2159AEA10067E07D /* ApplePayErrorCode.h in Headers */,
    2957429610                                A1BB85A32159AF570067E07D /* ApplePayErrorContactField.h in Headers */,
     29611                                A117509A247468D600D4D26C /* ApplePayInstallmentConfigurationWebCore.h in Headers */,
     29612                                A11750A0247468F300D4D26C /* ApplePayInstallmentItem.h in Headers */,
     29613                                A11750A1247468F700D4D26C /* ApplePayInstallmentItemType.h in Headers */,
     29614                                A13B616B2475E04800BBE6DE /* ApplePayInstallmentRetailChannel.h in Headers */,
    2957529615                                7C6579E31E00827000E3A27A /* ApplePayLineItem.h in Headers */,
    2957629616                                A1DF5A861F7EBDF20058A477 /* ApplePayMerchantCapability.h in Headers */,
     
    3103931079                                A1BB85B22159B1A10067E07D /* JSApplePayErrorCode.h in Headers */,
    3104031080                                A1BB85B32159B1A10067E07D /* JSApplePayErrorContactField.h in Headers */,
     31081                                A13B61742475E34200BBE6DE /* JSApplePayInstallmentConfiguration.h in Headers */,
     31082                                A13B61752475E35F00BBE6DE /* JSApplePayInstallmentItem.h in Headers */,
     31083                                A13B61762475E37A00BBE6DE /* JSApplePayInstallmentItemType.h in Headers */,
     31084                                A13B61772475E3A300BBE6DE /* JSApplePayInstallmentRetailChannel.h in Headers */,
    3104131085                                7C6579F01E00856600E3A27A /* JSApplePayLineItem.h in Headers */,
    3104231086                                A1DF5A8E1F7EC0020058A477 /* JSApplePayMerchantCapability.h in Headers */,
Note: See TracChangeset for help on using the changeset viewer.