[webkit-reviews] review denied: [Bug 207169] Feature Request: billingContact - return zip code prior to user auth : [Attachment 389726] Patch
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Wed Feb 5 10:56:56 PST 2020
Andy Estes <aestes at apple.com> has denied Nikos Mouchtaris
<nmouchtaris at apple.com>'s request for review:
Bug 207169: Feature Request: billingContact - return zip code prior to user
auth
https://bugs.webkit.org/show_bug.cgi?id=207169
Attachment 389726: Patch
https://bugs.webkit.org/attachment.cgi?id=389726&action=review
--- Comment #5 from Andy Estes <aestes at apple.com> ---
Comment on attachment 389726
--> https://bugs.webkit.org/attachment.cgi?id=389726
Patch
View in context: https://bugs.webkit.org/attachment.cgi?id=389726&action=review
> Source/WTF/wtf/PlatformHave.h:105
> +#if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500)
No need for the ()
> Source/WebCore/Modules/applepay/ApplePayPaymentMethod.h:48
> + Optional<ApplePayPaymentContact> billingAddress;
I know this is called `billingAddress` in PKPaymentMethod, but let's call it
`billingContact` here.
> Source/WebCore/Modules/applepay/ApplePayPaymentMethod.idl:35
> + ApplePayPaymentContact billingAddress;
Ditto.
> Source/WebCore/Modules/applepay/cocoa/PaymentMethodCocoa.mm:54
> +#define ALLOW(FIELD) (ALLOW_##FIELD == 1)
Please #undef this at the end of the file.
> Source/WebCore/Modules/applepay/cocoa/PaymentMethodCocoa.mm:134
> + if (NSArray<CNLabeledValue<CNPhoneNumber*>*> *phoneNumbers =
billingContact.phoneNumbers) {
> + if (CNLabeledValue<CNPhoneNumber*> *phoneNumber = [phoneNumbers
firstObject])
> + result.phoneNumber = phoneNumber.value.stringValue;
> + }
You're probably basing this on the other convert() functions in this file, but
I think we can be more concise here. These nil checks are unnecessary, because
in Objective-C you can safely send a message to nil and get a return value of
0/nil. 0/nil converted to a WTF::String is the same as WTF::String(), which is
the value result.phoneNumber would have if you hadn't set it.
So this is the same as `result.phoneNumber =
billingContact.phoneNumbers.firstObject.value.stringValue`.
That's a lot for one statement, though, so maybe I'd break it up like this:
if (auto firstPhoneNumber = billingContact.phoneNumbers.firstObject)
result.phoneNumber = firstPhoneNumber.value.stringValue;
> Source/WebCore/Modules/applepay/cocoa/PaymentMethodCocoa.mm:139
> + if (NSArray<CNLabeledValue<NSString*>*> *emailAddresses =
billingContact.emailAddresses) {
> + if (CNLabeledValue<NSString*> *emailAddress = [emailAddresses
firstObject])
> + result.emailAddress = emailAddress.value;
> + }
Ditto.
> Source/WebCore/Modules/applepay/cocoa/PaymentMethodCocoa.mm:142
> + if (NSString *givenName = billingContact.givenName)
> + result.givenName = givenName;
`result.givenName = billingContact.givenName`
> Source/WebCore/Modules/applepay/cocoa/PaymentMethodCocoa.mm:149
> + if (NSString *familyName = billingContact.familyName)
> + result.familyName = familyName;
> +
> + if (NSString *phoneticGivenName = billingContact.phoneticGivenName)
> + result.phoneticGivenName = phoneticGivenName;
> + if (NSString *phoneticFamilyName = billingContact.phoneticFamilyName)
> + result.phoneticFamilyName = phoneticFamilyName;
Ditto.
> Source/WebCore/Modules/applepay/cocoa/PaymentMethodCocoa.mm:182
> +#if ALLOW(SUB_LOCALITY)
> + if (NSString *subLocality = postalAddress.value.subLocality)
> + result.subLocality = subLocality;
> +#endif
> +#if ALLOW(LOCALITY)
> + if (NSString *locality = postalAddress.value.city)
> + result.locality = locality;
> +#endif
> +#if ALLOW(SUB_ADMIN_AREA)
> + if (NSString *subAdministrativeArea =
postalAddress.value.subAdministrativeArea)
> + result.subAdministrativeArea = subAdministrativeArea;
> +#endif
> +#if ALLOW(ADMIN_AREA)
> + if (NSString *administrativeArea = postalAddress.value.state)
> + result.administrativeArea = administrativeArea;
> +#endif
> +#if ALLOW(POSTAL_CODE)
> + if (NSString *postalCode = postalAddress.value.postalCode)
> + result.postalCode = postalCode;
> +#endif
> +#if ALLOW(COUNTRY)
> + if (NSString *country = postalAddress.value.country)
> + result.country = country;
> +#endif
> +#if ALLOW(COUNTRY_CODE)
> + if (NSString *ISOCountryCode =
postalAddress.value.ISOCountryCode)
> + result.countryCode = ISOCountryCode;
> +#endif
I think these should move into the convert function for CNPostalAddress.
> LayoutTests/http/tests/ssl/applepay/ApplePayBillingAddress.html:105
> +
shouldBe("event.methodDetails.billingAddress.phoneNumber", "'12345678910'");
> +
shouldBe("event.methodDetails.billingAddress.emailAddress", "'wpt at w3.org'");
> + shouldBe("event.methodDetails.billingAddress.givenName",
"'Web'");
> +
shouldBe("event.methodDetails.billingAddress.familyName", "'Test'");
> +
shouldBe("event.methodDetails.billingAddress.phoneticGivenName", "'Web'");
> +
shouldBe("event.methodDetails.billingAddress.phoneticFamilyName", "'Test'");
> +
shouldBe("event.methodDetails.billingAddress.addressLines", "['1 wpt
street']");
> +
shouldBe("event.methodDetails.billingAddress.subLocality", "'AA'");
> + shouldBe("event.methodDetails.billingAddress.locality",
"'BB'");
> +
shouldBe("event.methodDetails.billingAddress.postalCode", "'12345'");
> +
shouldBe("event.methodDetails.billingAddress.subAdministrativeArea", "'CC'");
> + shouldBe("event.methodDetails.billingAddress.country",
"'United States'");
> +
shouldBe("event.methodDetails.billingAddress.countryCode", "'US'");
> + shouldBe("event.methodDetails.network","'visa'");
> + shouldBe("event.methodDetails.type","'credit'");
You can use the variables defined on lines 48-60 as the expected values here.
More information about the webkit-reviews
mailing list