Title: [227304] branches/safari-605-branch

Diff

Modified: branches/safari-605-branch/LayoutTests/ChangeLog (227303 => 227304)


--- branches/safari-605-branch/LayoutTests/ChangeLog	2018-01-22 17:57:07 UTC (rev 227303)
+++ branches/safari-605-branch/LayoutTests/ChangeLog	2018-01-22 17:57:12 UTC (rev 227304)
@@ -1,5 +1,20 @@
 2018-01-22  Jason Marcell  <jmarc...@apple.com>
 
+        Cherry-pick r227140. rdar://problem/36722478
+
+    2018-01-18  Andy Estes  <aes...@apple.com>
+
+            [Payment Request] Support a default shipping address for Apple Pay
+            https://bugs.webkit.org/show_bug.cgi?id=181754
+            <rdar://problem/36009733>
+
+            Reviewed by Brady Eidson.
+
+            * http/tests/ssl/applepay/ApplePayRequestShippingContact.https-expected.txt: Added.
+            * http/tests/ssl/applepay/ApplePayRequestShippingContact.https.html: Added.
+
+2018-01-22  Jason Marcell  <jmarc...@apple.com>
+
         Cherry-pick r227082. rdar://problem/36722629
 
     2018-01-17  Antti Koivisto  <an...@apple.com>

Added: branches/safari-605-branch/LayoutTests/http/tests/ssl/applepay/ApplePayRequestShippingContact.https-expected.txt (0 => 227304)


--- branches/safari-605-branch/LayoutTests/http/tests/ssl/applepay/ApplePayRequestShippingContact.https-expected.txt	                        (rev 0)
+++ branches/safari-605-branch/LayoutTests/http/tests/ssl/applepay/ApplePayRequestShippingContact.https-expected.txt	2018-01-22 17:57:12 UTC (rev 227304)
@@ -0,0 +1,62 @@
+Test ApplePayRequest.shippingContact.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+Test setting a default shipping contact in a version 2 request.
+PASS paymentResponse.details.shippingContact.phoneNumber is expectedPhoneNumber
+PASS paymentResponse.details.shippingContact.emailAddress is expectedEmailAddress
+PASS paymentResponse.details.shippingContact.givenName is expectedGivenName
+PASS paymentResponse.details.shippingContact.familyName is expectedFamilyName
+PASS paymentResponse.details.shippingContact.phoneticGivenName is undefined.
+PASS paymentResponse.details.shippingContact.phoneticFamilyName is undefined.
+PASS paymentResponse.details.shippingContact.addressLines is expectedAddressLines
+PASS paymentResponse.details.shippingContact.subLocality is expectedSubLocality
+PASS paymentResponse.details.shippingContact.locality is expectedLocality
+PASS paymentResponse.details.shippingContact.postalCode is expectedPostalCode
+PASS paymentResponse.details.shippingContact.subAdministrativeArea is expectedSubAdministrativeArea
+PASS paymentResponse.details.shippingContact.administrativeArea is expectedAdministrativeArea
+PASS paymentResponse.details.shippingContact.country is expectedCountry
+PASS paymentResponse.details.shippingContact.countryCode is expectedCountryCode
+PASS paymentResponse.shippingAddress.country is expectedCountryCode
+PASS paymentResponse.shippingAddress.addressLine is expectedAddressLines
+PASS paymentResponse.shippingAddress.region is expectedAdministrativeArea
+PASS paymentResponse.shippingAddress.city is expectedLocality
+PASS paymentResponse.shippingAddress.dependentLocality is expectedSubLocality
+PASS paymentResponse.shippingAddress.postalCode is expectedPostalCode
+PASS paymentResponse.shippingAddress.postalCode is expectedPostalCode
+PASS paymentResponse.shippingAddress.sortingCode is ''
+PASS paymentResponse.shippingAddress.languageCode is ''
+PASS paymentResponse.shippingAddress.organization is ''
+PASS paymentResponse.shippingAddress.recipient is expectedName
+PASS paymentResponse.shippingAddress.phone is expectedPhoneNumber
+PASS paymentResponse.payerName is expectedName
+PASS paymentResponse.payerEmail is expectedEmailAddress
+PASS paymentResponse.payerPhone is expectedPhoneNumber
+
+Test setting a default shipping contact in a version 3 request.
+PASS paymentResponse.details.shippingContact.phoneticGivenName is expectedGivenName
+PASS paymentResponse.details.shippingContact.phoneticFamilyName is expectedFamilyName
+
+Test setting a default shipping contact that only specifies an email address.
+PASS paymentResponse.shippingAddress is null
+PASS paymentResponse.payerName is null
+PASS paymentResponse.payerEmail is expectedEmailAddress
+PASS paymentResponse.payerPhone is null
+
+Test setting a default shipping contact that only specifies a phone number.
+PASS paymentResponse.shippingAddress is null
+PASS paymentResponse.payerName is null
+PASS paymentResponse.payerEmail is null
+PASS paymentResponse.payerPhone is expectedPhoneNumber
+
+Test setting a default shipping contact that only specifies a name.
+PASS paymentResponse.shippingAddress is null
+PASS paymentResponse.payerName is expectedName
+PASS paymentResponse.payerEmail is null
+PASS paymentResponse.payerPhone is null
+
+PASS successfullyParsed is true
+
+TEST COMPLETE
+

Added: branches/safari-605-branch/LayoutTests/http/tests/ssl/applepay/ApplePayRequestShippingContact.https.html (0 => 227304)


--- branches/safari-605-branch/LayoutTests/http/tests/ssl/applepay/ApplePayRequestShippingContact.https.html	                        (rev 0)
+++ branches/safari-605-branch/LayoutTests/http/tests/ssl/applepay/ApplePayRequestShippingContact.https.html	2018-01-22 17:57:12 UTC (rev 227304)
@@ -0,0 +1,232 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<script src=""
+<script src=""
+<script src=""
+</head>
+<body>
+<script>
+
+description("Test ApplePayRequest.shippingContact.");
+
+window.jsTestIsAsync = true;
+
+const expectedGivenName = 'Web';
+const expectedFamilyName = 'Test';
+const expectedName = [expectedGivenName, expectedFamilyName].join(' ');
+const expectedEmailAddress = 'w...@w3.org';
+const expectedPhoneNumber = '+12345678910';
+const expectedAddressLines = ['1 wpt street'];
+const expectedSubLocality = 'AA';
+const expectedLocality = 'BB';
+const expectedPostalCode = '12345';
+const expectedSubAdministrativeArea = 'CC';
+const expectedAdministrativeArea = 'DD';
+const expectedCountry = 'United States';
+const expectedCountryCode = 'US';
+
+function validShippingContact() {
+    return {
+        phoneNumber: expectedPhoneNumber,
+        emailAddress: expectedEmailAddress,
+        givenName: expectedGivenName,
+        familyName: expectedFamilyName,
+        phoneticGivenName: expectedGivenName,
+        phoneticFamilyName: expectedFamilyName,
+        addressLines: expectedAddressLines,
+        subLocality: expectedSubLocality,
+        locality: expectedLocality,
+        postalCode: expectedPostalCode,
+        subAdministrativeArea: expectedSubAdministrativeArea,
+        administrativeArea: expectedAdministrativeArea,
+        country: expectedCountry,
+        countryCode: expectedCountryCode,
+    };
+}
+
+function validPaymentMethod(version, shippingContact) {
+    return {
+        supportedMethods: 'https://apple.com/apple-pay',
+        data: {
+            version,
+            merchantIdentifier: '',
+            countryCode: 'US',
+            supportedNetworks: ['visa', 'masterCard'],
+            merchantCapabilities: ['supports3DS'],
+            shippingContact,
+        },
+    }
+}
+
+function validPaymentDetails() {
+    return {
+        total: {
+            label: 'Total',
+            amount: {
+                currency: 'USD',
+                value: '10.00',
+            },
+        },
+    };
+}
+
+function validPaymentOptions() {
+    return {
+        requestPayerName: true,
+        requestPayerEmail: true,
+        requestPayerPhone: true,
+        requestShipping: true,
+    };
+}
+
+async function runTests() {
+    await new Promise((resolve, reject) => {
+        debug("Test setting a default shipping contact in a version 2 request.");
+
+        var paymentRequest = new PaymentRequest([validPaymentMethod(2, validShippingContact())], validPaymentDetails(), validPaymentOptions());
+
+        activateThen(() => {
+            paymentRequest.show().then((response) => {
+                window.paymentResponse = response;
+
+                shouldBe("paymentResponse.details.shippingContact.phoneNumber", "expectedPhoneNumber");
+                shouldBe("paymentResponse.details.shippingContact.emailAddress", "expectedEmailAddress");
+                shouldBe("paymentResponse.details.shippingContact.givenName", "expectedGivenName");
+                shouldBe("paymentResponse.details.shippingContact.familyName", "expectedFamilyName");
+                shouldBeUndefined("paymentResponse.details.shippingContact.phoneticGivenName");
+                shouldBeUndefined("paymentResponse.details.shippingContact.phoneticFamilyName");
+                shouldBe("paymentResponse.details.shippingContact.addressLines", "expectedAddressLines");
+                shouldBe("paymentResponse.details.shippingContact.subLocality", "expectedSubLocality");
+                shouldBe("paymentResponse.details.shippingContact.locality", "expectedLocality");
+                shouldBe("paymentResponse.details.shippingContact.postalCode", "expectedPostalCode");
+                shouldBe("paymentResponse.details.shippingContact.subAdministrativeArea", "expectedSubAdministrativeArea");
+                shouldBe("paymentResponse.details.shippingContact.administrativeArea", "expectedAdministrativeArea");
+                shouldBe("paymentResponse.details.shippingContact.country", "expectedCountry");
+                shouldBe("paymentResponse.details.shippingContact.countryCode", "expectedCountryCode");
+
+                shouldBe("paymentResponse.shippingAddress.country", "expectedCountryCode");
+                shouldBe("paymentResponse.shippingAddress.addressLine", "expectedAddressLines");
+                shouldBe("paymentResponse.shippingAddress.region", "expectedAdministrativeArea");
+                shouldBe("paymentResponse.shippingAddress.city", "expectedLocality");
+                shouldBe("paymentResponse.shippingAddress.dependentLocality", "expectedSubLocality");
+                shouldBe("paymentResponse.shippingAddress.postalCode", "expectedPostalCode");
+                shouldBe("paymentResponse.shippingAddress.postalCode", "expectedPostalCode");
+                shouldBe("paymentResponse.shippingAddress.sortingCode", "''");
+                shouldBe("paymentResponse.shippingAddress.languageCode", "''");
+                shouldBe("paymentResponse.shippingAddress.organization", "''");
+                shouldBe("paymentResponse.shippingAddress.recipient", "expectedName");
+                shouldBe("paymentResponse.shippingAddress.phone", "expectedPhoneNumber");
+
+                shouldBe("paymentResponse.payerName", "expectedName");
+                shouldBe("paymentResponse.payerEmail", "expectedEmailAddress");
+                shouldBe("paymentResponse.payerPhone", "expectedPhoneNumber");
+
+                response.complete("success");
+                resolve();
+            });
+
+            internals.mockPaymentCoordinator.acceptPayment();
+        });
+    });
+    debug("");
+
+    await new Promise((resolve, reject) => {
+        debug("Test setting a default shipping contact in a version 3 request.");
+
+        var paymentRequest = new PaymentRequest([validPaymentMethod(3, validShippingContact())], validPaymentDetails(), validPaymentOptions());
+
+        activateThen(() => {
+            paymentRequest.show().then((response) => {
+                window.paymentResponse = response;
+
+                shouldBe("paymentResponse.details.shippingContact.phoneticGivenName", "expectedGivenName");
+                shouldBe("paymentResponse.details.shippingContact.phoneticFamilyName", "expectedFamilyName");
+
+                response.complete("success");
+                resolve();
+            });
+
+            internals.mockPaymentCoordinator.acceptPayment();
+        });
+    });
+    debug("");
+
+    await new Promise((resolve, reject) => {
+        debug("Test setting a default shipping contact that only specifies an email address.");
+
+        var paymentRequest = new PaymentRequest([validPaymentMethod(3, { emailAddress: expectedEmailAddress })], validPaymentDetails(), { requestPayerEmail: true });
+
+        activateThen(() => {
+            paymentRequest.show().then((response) => {
+                window.paymentResponse = response;
+
+                shouldBeNull("paymentResponse.shippingAddress");
+                shouldBeNull("paymentResponse.payerName");
+                shouldBe("paymentResponse.payerEmail", "expectedEmailAddress");
+                shouldBeNull("paymentResponse.payerPhone");
+
+                response.complete("success");
+                resolve();
+            });
+
+            internals.mockPaymentCoordinator.acceptPayment();
+        });
+    });
+    debug("");
+
+    await new Promise((resolve, reject) => {
+        debug("Test setting a default shipping contact that only specifies a phone number.");
+
+        var paymentRequest = new PaymentRequest([validPaymentMethod(3, { phoneNumber: expectedPhoneNumber })], validPaymentDetails(), { requestPayerPhone: true });
+
+        activateThen(() => {
+            paymentRequest.show().then((response) => {
+                window.paymentResponse = response;
+
+                shouldBeNull("paymentResponse.shippingAddress");
+                shouldBeNull("paymentResponse.payerName");
+                shouldBeNull("paymentResponse.payerEmail");
+                shouldBe("paymentResponse.payerPhone", "expectedPhoneNumber");
+
+                response.complete("success");
+                resolve();
+            });
+
+            internals.mockPaymentCoordinator.acceptPayment();
+        });
+    });
+    debug("");
+
+    await new Promise((resolve, reject) => {
+        debug("Test setting a default shipping contact that only specifies a name.");
+
+        var paymentRequest = new PaymentRequest([validPaymentMethod(3, { givenName: expectedGivenName, familyName: expectedFamilyName })], validPaymentDetails(), { requestPayerName: true });
+
+        activateThen(() => {
+            paymentRequest.show().then((response) => {
+                window.paymentResponse = response;
+
+                shouldBeNull("paymentResponse.shippingAddress");
+                shouldBe("paymentResponse.payerName", "expectedName");
+                shouldBeNull("paymentResponse.payerEmail");
+                shouldBeNull("paymentResponse.payerPhone");
+
+                response.complete("success");
+                resolve();
+            });
+
+            internals.mockPaymentCoordinator.acceptPayment();
+        });
+    });
+    debug("");
+
+    finishJSTest();
+}
+
+runTests();
+</script>
+<script src=""
+</body>
+</html>

Modified: branches/safari-605-branch/Source/WebCore/ChangeLog (227303 => 227304)


--- branches/safari-605-branch/Source/WebCore/ChangeLog	2018-01-22 17:57:07 UTC (rev 227303)
+++ branches/safari-605-branch/Source/WebCore/ChangeLog	2018-01-22 17:57:12 UTC (rev 227304)
@@ -1,5 +1,45 @@
 2018-01-22  Jason Marcell  <jmarc...@apple.com>
 
+        Cherry-pick r227140. rdar://problem/36722478
+
+    2018-01-18  Andy Estes  <aes...@apple.com>
+
+            [Payment Request] Support a default shipping address for Apple Pay
+            https://bugs.webkit.org/show_bug.cgi?id=181754
+            <rdar://problem/36009733>
+
+            Reviewed by Brady Eidson.
+
+            Move shippingContact from ApplePayPaymentRequest to ApplePayRequestBase. This allows
+            merchants to specify a default shipping address when using Apple Pay with Payment Request.
+
+            This also fixes a bug found during testing where
+            +[NSPersonNameComponentsFormatter localizedStringFromPersonNameComponents:style:options:]
+            would throw an exception when passed a nil NSPersonNameComponents.
+
+            Test: http/tests/ssl/applepay/ApplePayRequestShippingContact.https.html
+
+            * Modules/applepay/ApplePayPaymentRequest.h:
+            * Modules/applepay/ApplePayPaymentRequest.idl:
+            * Modules/applepay/ApplePayRequestBase.cpp:
+            (WebCore::convertAndValidate):
+            * Modules/applepay/ApplePayRequestBase.h:
+            * Modules/applepay/ApplePayRequestBase.idl:
+            * Modules/applepay/ApplePaySession.cpp:
+            (WebCore::convertAndValidate):
+            * Modules/applepay/ApplePaySessionPaymentRequest.h:
+            (WebCore::ApplePaySessionPaymentRequest::version const):
+            (WebCore::ApplePaySessionPaymentRequest::setVersion):
+            * Modules/applepay/cocoa/PaymentContactCocoa.mm:
+            (WebCore::convert):
+            * Modules/applepay/paymentrequest/ApplePayRequest.idl:
+            * testing/MockPaymentCoordinator.cpp:
+            (WebCore::MockPaymentCoordinator::showPaymentUI):
+            (WebCore::MockPaymentCoordinator::completeMerchantValidation):
+            * testing/MockPaymentCoordinator.h:
+
+2018-01-22  Jason Marcell  <jmarc...@apple.com>
+
         Cherry-pick r227135. rdar://problem/36722512
 
     2018-01-18  Wenson Hsieh  <wenson_hs...@apple.com>

Modified: branches/safari-605-branch/Source/WebCore/Modules/applepay/ApplePayPaymentRequest.h (227303 => 227304)


--- branches/safari-605-branch/Source/WebCore/Modules/applepay/ApplePayPaymentRequest.h	2018-01-22 17:57:07 UTC (rev 227303)
+++ branches/safari-605-branch/Source/WebCore/Modules/applepay/ApplePayPaymentRequest.h	2018-01-22 17:57:12 UTC (rev 227304)
@@ -41,7 +41,6 @@
     String currencyCode;
 
     std::optional<Vector<ApplePayContactField>> requiredShippingContactFields;
-    std::optional<ApplePayPaymentContact> shippingContact;
 
     ShippingType shippingType { ShippingType::Shipping };
     std::optional<Vector<ApplePayShippingMethod>> shippingMethods;

Modified: branches/safari-605-branch/Source/WebCore/Modules/applepay/ApplePayPaymentRequest.idl (227303 => 227304)


--- branches/safari-605-branch/Source/WebCore/Modules/applepay/ApplePayPaymentRequest.idl	2018-01-22 17:57:07 UTC (rev 227303)
+++ branches/safari-605-branch/Source/WebCore/Modules/applepay/ApplePayPaymentRequest.idl	2018-01-22 17:57:12 UTC (rev 227304)
@@ -41,7 +41,6 @@
     required DOMString currencyCode;
 
     sequence<ApplePayContactField> requiredShippingContactFields;
-    ApplePayPaymentContact shippingContact;
 
     ApplePayShippingType shippingType = "shipping";
     sequence<ApplePayShippingMethod> shippingMethods;

Modified: branches/safari-605-branch/Source/WebCore/Modules/applepay/ApplePayRequestBase.cpp (227303 => 227304)


--- branches/safari-605-branch/Source/WebCore/Modules/applepay/ApplePayRequestBase.cpp	2018-01-22 17:57:07 UTC (rev 227303)
+++ branches/safari-605-branch/Source/WebCore/Modules/applepay/ApplePayRequestBase.cpp	2018-01-22 17:57:12 UTC (rev 227304)
@@ -52,6 +52,7 @@
 ExceptionOr<ApplePaySessionPaymentRequest> convertAndValidate(unsigned version, ApplePayRequestBase& request, const PaymentCoordinator& paymentCoordinator)
 {
     ApplePaySessionPaymentRequest result;
+    result.setVersion(version);
     result.setCountryCode(request.countryCode);
 
     auto merchantCapabilities = convertAndValidate(request.merchantCapabilities);
@@ -74,6 +75,9 @@
     if (request.billingContact)
         result.setBillingContact(PaymentContact::fromApplePayPaymentContact(version, *request.billingContact));
 
+    if (request.shippingContact)
+        result.setShippingContact(PaymentContact::fromApplePayPaymentContact(version, *request.shippingContact));
+
     result.setApplicationData(request.applicationData);
 
     if (version >= 3)

Modified: branches/safari-605-branch/Source/WebCore/Modules/applepay/ApplePayRequestBase.h (227303 => 227304)


--- branches/safari-605-branch/Source/WebCore/Modules/applepay/ApplePayRequestBase.h	2018-01-22 17:57:07 UTC (rev 227303)
+++ branches/safari-605-branch/Source/WebCore/Modules/applepay/ApplePayRequestBase.h	2018-01-22 17:57:12 UTC (rev 227304)
@@ -43,6 +43,8 @@
     std::optional<Vector<ApplePayContactField>> requiredBillingContactFields;
     std::optional<ApplePayPaymentContact> billingContact;
 
+    std::optional<ApplePayPaymentContact> shippingContact;
+
     String applicationData;
     Vector<String> supportedCountries;
 };

Modified: branches/safari-605-branch/Source/WebCore/Modules/applepay/ApplePayRequestBase.idl (227303 => 227304)


--- branches/safari-605-branch/Source/WebCore/Modules/applepay/ApplePayRequestBase.idl	2018-01-22 17:57:07 UTC (rev 227303)
+++ branches/safari-605-branch/Source/WebCore/Modules/applepay/ApplePayRequestBase.idl	2018-01-22 17:57:12 UTC (rev 227304)
@@ -33,6 +33,8 @@
     sequence<ApplePayContactField> requiredBillingContactFields;
     ApplePayPaymentContact billingContact;
 
+    ApplePayPaymentContact shippingContact;
+
     DOMString applicationData;
     [Conditional=APPLE_PAY_SESSION_V3] sequence<DOMString> supportedCountries;
 };

Modified: branches/safari-605-branch/Source/WebCore/Modules/applepay/ApplePaySession.cpp (227303 => 227304)


--- branches/safari-605-branch/Source/WebCore/Modules/applepay/ApplePaySession.cpp	2018-01-22 17:57:07 UTC (rev 227303)
+++ branches/safari-605-branch/Source/WebCore/Modules/applepay/ApplePaySession.cpp	2018-01-22 17:57:12 UTC (rev 227304)
@@ -234,9 +234,6 @@
         result.setRequiredShippingContactFields(requiredShippingContactFields.releaseReturnValue());
     }
 
-    if (paymentRequest.shippingContact)
-        result.setShippingContact(PaymentContact::fromApplePayPaymentContact(version, paymentRequest.shippingContact.value()));
-
     result.setShippingType(paymentRequest.shippingType);
 
     if (paymentRequest.shippingMethods) {

Modified: branches/safari-605-branch/Source/WebCore/Modules/applepay/ApplePaySessionPaymentRequest.h (227303 => 227304)


--- branches/safari-605-branch/Source/WebCore/Modules/applepay/ApplePaySessionPaymentRequest.h	2018-01-22 17:57:07 UTC (rev 227303)
+++ branches/safari-605-branch/Source/WebCore/Modules/applepay/ApplePaySessionPaymentRequest.h	2018-01-22 17:57:12 UTC (rev 227304)
@@ -42,6 +42,9 @@
     WEBCORE_EXPORT ApplePaySessionPaymentRequest();
     WEBCORE_EXPORT ~ApplePaySessionPaymentRequest();
 
+    unsigned version() const { return m_version; }
+    void setVersion(unsigned version) { m_version = version; }
+
     const String& countryCode() const { return m_countryCode; }
     void setCountryCode(const String& countryCode) { m_countryCode = countryCode; }
 
@@ -136,6 +139,8 @@
     void setRequester(Requester requester) { m_requester = requester; }
 
 private:
+    unsigned m_version { 0 };
+
     String m_countryCode;
     String m_currencyCode;
 

Modified: branches/safari-605-branch/Source/WebCore/Modules/applepay/cocoa/PaymentContactCocoa.mm (227303 => 227304)


--- branches/safari-605-branch/Source/WebCore/Modules/applepay/cocoa/PaymentContactCocoa.mm	2018-01-22 17:57:07 UTC (rev 227303)
+++ branches/safari-605-branch/Source/WebCore/Modules/applepay/cocoa/PaymentContactCocoa.mm	2018-01-22 17:57:12 UTC (rev 227304)
@@ -189,13 +189,15 @@
     NSPersonNameComponents *name = contact.name;
     result.givenName = name.givenName;
     result.familyName = name.familyName;
-    result.localizedName = [NSPersonNameComponentsFormatter localizedStringFromPersonNameComponents:name style:NSPersonNameComponentsFormatterStyleDefault options:0];
+    if (name)
+        result.localizedName = [NSPersonNameComponentsFormatter localizedStringFromPersonNameComponents:name style:NSPersonNameComponentsFormatterStyleDefault options:0];
 
     if (version >= 3) {
         NSPersonNameComponents *phoneticName = name.phoneticRepresentation;
         result.phoneticGivenName = phoneticName.givenName;
         result.phoneticFamilyName = phoneticName.familyName;
-        result.localizedPhoneticName = [NSPersonNameComponentsFormatter localizedStringFromPersonNameComponents:name style:NSPersonNameComponentsFormatterStyleDefault options:NSPersonNameComponentsFormatterPhonetic];
+        if (phoneticName)
+            result.localizedPhoneticName = [NSPersonNameComponentsFormatter localizedStringFromPersonNameComponents:name style:NSPersonNameComponentsFormatterStyleDefault options:NSPersonNameComponentsFormatterPhonetic];
     }
 
     CNPostalAddress *postalAddress = contact.postalAddress;

Modified: branches/safari-605-branch/Source/WebCore/Modules/applepay/paymentrequest/ApplePayRequest.idl (227303 => 227304)


--- branches/safari-605-branch/Source/WebCore/Modules/applepay/paymentrequest/ApplePayRequest.idl	2018-01-22 17:57:07 UTC (rev 227303)
+++ branches/safari-605-branch/Source/WebCore/Modules/applepay/paymentrequest/ApplePayRequest.idl	2018-01-22 17:57:12 UTC (rev 227304)
@@ -29,4 +29,3 @@
     required unsigned long version;
     required DOMString merchantIdentifier;
 };
-

Modified: branches/safari-605-branch/Source/WebCore/testing/MockPaymentCoordinator.cpp (227303 => 227304)


--- branches/safari-605-branch/Source/WebCore/testing/MockPaymentCoordinator.cpp	2018-01-22 17:57:07 UTC (rev 227303)
+++ branches/safari-605-branch/Source/WebCore/testing/MockPaymentCoordinator.cpp	2018-01-22 17:57:12 UTC (rev 227304)
@@ -96,8 +96,11 @@
     });
 }
 
-bool MockPaymentCoordinator::showPaymentUI(const URL&, const Vector<URL>&, const ApplePaySessionPaymentRequest&)
+bool MockPaymentCoordinator::showPaymentUI(const URL&, const Vector<URL>&, const ApplePaySessionPaymentRequest& request)
 {
+    if (request.shippingContact().pkContact())
+        m_shippingAddress = request.shippingContact().toApplePayPaymentContact(request.version());
+
     ASSERT(showCount == hideCount);
     ++showCount;
     dispatchIfShowing([mainFrame = makeRef(m_mainFrame)]() {
@@ -108,9 +111,8 @@
 
 void MockPaymentCoordinator::completeMerchantValidation(const PaymentMerchantSession&)
 {
-    dispatchIfShowing([mainFrame = makeRef(m_mainFrame), shippingAddress = m_shippingAddress]() {
-        ApplePayPaymentContact contact = shippingAddress;
-        mainFrame->paymentCoordinator().didSelectShippingContact(MockPaymentContact { WTFMove(contact) });
+    dispatchIfShowing([mainFrame = makeRef(m_mainFrame), shippingAddress = m_shippingAddress]() mutable {
+        mainFrame->paymentCoordinator().didSelectShippingContact(MockPaymentContact { WTFMove(shippingAddress) });
     });
 }
 

Modified: branches/safari-605-branch/Source/WebCore/testing/MockPaymentCoordinator.h (227303 => 227304)


--- branches/safari-605-branch/Source/WebCore/testing/MockPaymentCoordinator.h	2018-01-22 17:57:07 UTC (rev 227303)
+++ branches/safari-605-branch/Source/WebCore/testing/MockPaymentCoordinator.h	2018-01-22 17:57:12 UTC (rev 227304)
@@ -71,7 +71,7 @@
     void updateTotalAndLineItems(const ApplePaySessionPaymentRequest::TotalAndLineItems&);
 
     MainFrame& m_mainFrame;
-    MockPaymentAddress m_shippingAddress;
+    ApplePayPaymentContact m_shippingAddress;
     ApplePayLineItem m_total;
     Vector<ApplePayLineItem> m_lineItems;
     Vector<String> m_availablePaymentNetworks;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to