WebKit Bugzilla
Attachment 371662 Details for
Bug 198690
: [Apple Pay] If we have a bound interface identifier, set it on new PKPaymentRequests
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-198690-20190608114413.patch (text/plain), 14.92 KB, created by
Andy Estes
on 2019-06-08 11:44:13 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Andy Estes
Created:
2019-06-08 11:44:13 PDT
Size:
14.92 KB
patch
obsolete
>Subversion Revision: 246232 >diff --git a/Source/WTF/ChangeLog b/Source/WTF/ChangeLog >index ab9b3920492658ff0b8b04957dffec91f6c2aa92..4b6e58aa38d043fc3def3b066d8674c92f16ed7d 100644 >--- a/Source/WTF/ChangeLog >+++ b/Source/WTF/ChangeLog >@@ -1,3 +1,13 @@ >+2019-06-08 Andy Estes <aestes@apple.com> >+ >+ [Apple Pay] If we have a bound interface identifier, set it on new PKPaymentRequests >+ https://bugs.webkit.org/show_bug.cgi?id=198690 >+ <rdar://problem/48041803> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * wtf/FeatureDefines.h: >+ > 2019-06-06 Caio Lima <ticaiolima@gmail.com> > > [JSCOnly] JSCOnly port is not building on macOS >diff --git a/Source/WebCore/PAL/ChangeLog b/Source/WebCore/PAL/ChangeLog >index bc63a619f1841fb976ee5258d2dce0d85878590d..3dff6c3b86969e2b909dfb4f6172b4847d46d22b 100644 >--- a/Source/WebCore/PAL/ChangeLog >+++ b/Source/WebCore/PAL/ChangeLog >@@ -1,3 +1,13 @@ >+2019-06-08 Andy Estes <aestes@apple.com> >+ >+ [Apple Pay] If we have a bound interface identifier, set it on new PKPaymentRequests >+ https://bugs.webkit.org/show_bug.cgi?id=198690 >+ <rdar://problem/48041803> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * pal/spi/cocoa/PassKitSPI.h: >+ > 2019-06-05 Alex Christensen <achristensen@webkit.org> > > Progress towards resurrecting Mac CMake build >diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index 02848ee4d6d17d2c4a0f117ef61e5d9917291052..fe58b7b536a55b908b03fef8c07e1e9063216270 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,24 @@ >+2019-06-08 Andy Estes <aestes@apple.com> >+ >+ [Apple Pay] If we have a bound interface identifier, set it on new PKPaymentRequests >+ https://bugs.webkit.org/show_bug.cgi?id=198690 >+ <rdar://problem/48041803> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * NetworkProcess/NetworkConnectionToWebProcess.h: >+ * NetworkProcess/cocoa/NetworkSessionCocoa.h: >+ * NetworkProcess/cocoa/NetworkSessionCocoa.mm: >+ (WebKit::NetworkSessionCocoa::boundInterfaceIdentifier const): >+ * NetworkProcess/ios/NetworkConnectionToWebProcessIOS.mm: >+ (WebKit::NetworkConnectionToWebProcess::paymentCoordinatorBoundInterfaceIdentifier): >+ * Shared/ApplePay/WebPaymentCoordinatorProxy.h: >+ * Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm: >+ (WebKit::WebPaymentCoordinatorProxy::platformPaymentRequest): >+ * UIProcess/Cocoa/WebPageProxyCocoa.mm: >+ (WebKit::WebPageProxy::paymentCoordinatorBoundInterfaceIdentifier): >+ * UIProcess/WebPageProxy.h: >+ > 2019-06-07 Antti Koivisto <antti@apple.com> > > REGRESSION (r245006): Setting scrollview.scrollEnabled clobbers any scrollEnabled set by a client >diff --git a/Source/WTF/wtf/FeatureDefines.h b/Source/WTF/wtf/FeatureDefines.h >index ae9695754da036524e751e6532d25d3df41a73e2..4cd4df558cc27bda62b40ced373ae09b43544bf1 100644 >--- a/Source/WTF/wtf/FeatureDefines.h >+++ b/Source/WTF/wtf/FeatureDefines.h >@@ -205,6 +205,12 @@ the public iOS SDK. See <https://webkit.org/b/179167>. */ > #define HAVE_PASSKIT_API_TYPE 1 > #endif > >+#if !defined(HAVE_PASSKIT_BOUND_INTERFACE_IDENTIFIER) >+#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 130000 >+#define HAVE_PASSKIT_BOUND_INTERFACE_IDENTIFIER 1 >+#endif >+#endif >+ > #endif /* PLATFORM(IOS_FAMILY) */ > > /* --------- Apple WATCHOS port --------- */ >@@ -286,11 +292,21 @@ the public iOS SDK. See <https://webkit.org/b/179167>. */ > #endif > > #if !defined(HAVE_PASSKIT_GRANULAR_ERRORS) >-#define HAVE_PASSKIT_GRANULAR_ERRORS __MAC_OS_X_VERSION_MIN_REQUIRED >= 101300 >+#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 101300 >+#define HAVE_PASSKIT_GRANULAR_ERRORS 1 >+#endif > #endif > > #if !defined(HAVE_PASSKIT_API_TYPE) >-#define HAVE_PASSKIT_API_TYPE __MAC_OS_X_VERSION_MIN_REQUIRED >= 101300 && __MAC_OS_X_VERSION_MAX_ALLOWED >= 101304 >+#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 101300 && __MAC_OS_X_VERSION_MAX_ALLOWED >= 101304 >+#define HAVE_PASSKIT_API_TYPE 1 >+#endif >+#endif >+ >+#if !defined(HAVE_PASSKIT_BOUND_INTERFACE_IDENTIFIER) >+#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400 >+#define HAVE_PASSKIT_BOUND_INTERFACE_IDENTIFIER 1 >+#endif > #endif > > #endif /* PLATFORM(MAC) */ >diff --git a/Source/WebCore/PAL/pal/spi/cocoa/PassKitSPI.h b/Source/WebCore/PAL/pal/spi/cocoa/PassKitSPI.h >index aaa60626186cf080a49a2613d1673eb6694d0d2c..9b2e60a2299d8273beb4b4c219502ff52a652837 100644 >--- a/Source/WebCore/PAL/pal/spi/cocoa/PassKitSPI.h >+++ b/Source/WebCore/PAL/pal/spi/cocoa/PassKitSPI.h >@@ -42,6 +42,7 @@ WTF_EXTERN_C_END > #import <PassKit/PassKit.h> > #import <PassKit/PKPaymentAuthorizationViewController_Private.h> > #import <PassKit/PKPaymentRequest_Private.h> >+#import <PassKitCore/PKPaymentRequest_WebKit.h> > > #if PLATFORM(IOS_FAMILY) > #import <PassKit/PKPaymentAuthorizationController_Private.h> >@@ -296,12 +297,28 @@ NS_ASSUME_NONNULL_BEGIN > - (void)paymentAuthorizationViewController:(PKPaymentAuthorizationViewController *)controller didRequestMerchantSession:(void(^)(PKPaymentMerchantSession *, NSError *))sessionBlock; > @end > >+@interface PKPaymentRequest () >+@property (nonatomic, strong) NSURL *thumbnailURL; >+@property (nonatomic, strong) NSArray *thumbnailURLs; >+@property (nonatomic, retain) NSURL *originatingURL; >+@property (nonatomic, assign) BOOL expectsMerchantSession; >+@property (nonatomic, strong) NSString *sourceApplicationBundleIdentifier; >+@property (nonatomic, strong) NSString *sourceApplicationSecondaryIdentifier; >+@property (nonatomic, strong) NSString *CTDataConnectionServiceType; >+@end >+ > #if HAVE(PASSKIT_API_TYPE) > @interface PKPaymentRequest () > @property (nonatomic, assign) PKPaymentRequestAPIType APIType; > @end > #endif > >+#if HAVE(PASSKIT_BOUND_INTERFACE_IDENTIFIER) >+@interface PKPaymentRequest () >+@property (nonatomic, copy) NSString *boundInterfaceIdentifier; >+@end >+#endif >+ > NS_ASSUME_NONNULL_END > > #endif // USE(APPLE_INTERNAL_SDK) >@@ -370,12 +387,6 @@ NS_ASSUME_NONNULL_BEGIN > @interface PKPaymentMethod () <NSSecureCoding> > @end > >-@interface PKPaymentRequest () >-@property (nonatomic, strong) NSString *sourceApplicationBundleIdentifier; >-@property (nonatomic, strong) NSString *sourceApplicationSecondaryIdentifier; >-@property (nonatomic, strong) NSString *CTDataConnectionServiceType; >-@end >- > typedef void(^PKCanMakePaymentsCompletion)(BOOL isValid, NSError *); > > NS_ASSUME_NONNULL_END >diff --git a/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h b/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h >index 06d57968828658e168c2c81f7281f1f960c804ba..ae9f5db28adca129f3b3bf6805c4425045f2a4ea 100644 >--- a/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h >+++ b/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h >@@ -271,6 +271,7 @@ private: > // WebPaymentCoordinatorProxy::Client > IPC::Connection* paymentCoordinatorConnection(const WebPaymentCoordinatorProxy&) final; > UIViewController *paymentCoordinatorPresentingViewController(const WebPaymentCoordinatorProxy&) final; >+ const String& paymentCoordinatorBoundInterfaceIdentifier(const WebPaymentCoordinatorProxy&, PAL::SessionID) final; > const String& paymentCoordinatorCTDataConnectionServiceType(const WebPaymentCoordinatorProxy&, PAL::SessionID) final; > const String& paymentCoordinatorSourceApplicationBundleIdentifier(const WebPaymentCoordinatorProxy&, PAL::SessionID) final; > const String& paymentCoordinatorSourceApplicationSecondaryIdentifier(const WebPaymentCoordinatorProxy&, PAL::SessionID) final; >diff --git a/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.h b/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.h >index 2c31d878499bceca19112af3a61a6697b0a2292f..b144a1f03bb4427dfc005bf735df9823a187ea9d 100644 >--- a/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.h >+++ b/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.h >@@ -50,6 +50,7 @@ public: > > void initializeEphemeralStatelessCookielessSession(); > >+ const String& boundInterfaceIdentifier() const; > const String& sourceApplicationBundleIdentifier() const; > const String& sourceApplicationSecondaryIdentifier() const; > // Must be called before any NetworkSession has been created. >diff --git a/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm b/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm >index 5de9e6745cf4ba62b5e428ea4504584c52bd8869..2aec543de3e81e19ef2b960aafccee3d1f9a508b 100644 >--- a/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm >+++ b/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm >@@ -828,6 +828,11 @@ static NSURLSessionConfiguration *configurationForSessionID(const PAL::SessionID > return [NSURLSessionConfiguration defaultSessionConfiguration]; > } > >+const String& NetworkSessionCocoa::boundInterfaceIdentifier() const >+{ >+ return m_boundInterfaceIdentifier; >+} >+ > const String& NetworkSessionCocoa::sourceApplicationBundleIdentifier() const > { > return m_sourceApplicationBundleIdentifier; >diff --git a/Source/WebKit/NetworkProcess/ios/NetworkConnectionToWebProcessIOS.mm b/Source/WebKit/NetworkProcess/ios/NetworkConnectionToWebProcessIOS.mm >index da60cc50b12a28ee5da29f653486079bb17807f2..eb894981f21113cc9da2b472a748810bb5ccde9b 100644 >--- a/Source/WebKit/NetworkProcess/ios/NetworkConnectionToWebProcessIOS.mm >+++ b/Source/WebKit/NetworkProcess/ios/NetworkConnectionToWebProcessIOS.mm >@@ -52,6 +52,13 @@ UIViewController *NetworkConnectionToWebProcess::paymentCoordinatorPresentingVie > return nil; > } > >+const String& NetworkConnectionToWebProcess::paymentCoordinatorBoundInterfaceIdentifier(const WebPaymentCoordinatorProxy&, PAL::SessionID sessionID) >+{ >+ if (auto session = static_cast<NetworkSessionCocoa*>(m_networkProcess->networkSession(sessionID))) >+ return session->boundInterfaceIdentifier(); >+ return emptyString(); >+} >+ > const String& NetworkConnectionToWebProcess::paymentCoordinatorCTDataConnectionServiceType(const WebPaymentCoordinatorProxy&, PAL::SessionID sessionID) > { > if (auto session = static_cast<NetworkSessionCocoa*>(m_networkProcess->networkSession(sessionID))) >diff --git a/Source/WebKit/Shared/ApplePay/WebPaymentCoordinatorProxy.h b/Source/WebKit/Shared/ApplePay/WebPaymentCoordinatorProxy.h >index 6e4a85cf2e27fe465aad75cee23bcae2de7fe02e..5ed143a998590496c3376a569881153a6a02b28c 100644 >--- a/Source/WebKit/Shared/ApplePay/WebPaymentCoordinatorProxy.h >+++ b/Source/WebKit/Shared/ApplePay/WebPaymentCoordinatorProxy.h >@@ -77,6 +77,7 @@ public: > virtual ~Client() = default; > > virtual IPC::Connection* paymentCoordinatorConnection(const WebPaymentCoordinatorProxy&) = 0; >+ virtual const String& paymentCoordinatorBoundInterfaceIdentifier(const WebPaymentCoordinatorProxy&, PAL::SessionID) = 0; > virtual const String& paymentCoordinatorSourceApplicationBundleIdentifier(const WebPaymentCoordinatorProxy&, PAL::SessionID) = 0; > virtual const String& paymentCoordinatorSourceApplicationSecondaryIdentifier(const WebPaymentCoordinatorProxy&, PAL::SessionID) = 0; > virtual void paymentCoordinatorAddMessageReceiver(WebPaymentCoordinatorProxy&, const IPC::StringReference&, IPC::MessageReceiver&) = 0; >diff --git a/Source/WebKit/Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm b/Source/WebKit/Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm >index d8e1db525f3d14768a926c2365ada534c9576dab..5f3694f453a0751500a2bb6428363298ad261c80 100644 >--- a/Source/WebKit/Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm >+++ b/Source/WebKit/Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm >@@ -37,18 +37,12 @@ > #import <wtf/RunLoop.h> > #import <wtf/URL.h> > >-// FIXME: Once rdar://problem/24420024 has been fixed, import PKPaymentRequest_Private.h instead. >+#if HAVE(PASSKIT_BOUND_INTERFACE_IDENTIFIER) >+// FIXME: Remove once rdar://problem/48041516 is widely available in SDKs. > @interface PKPaymentRequest () >-@property (nonatomic, retain) NSURL *originatingURL; >-@end >- >-@interface PKPaymentRequest () >-// FIXME: Remove this once it's in an SDK. >-@property (nonatomic, strong) NSArray *thumbnailURLs; >-@property (nonatomic, strong) NSURL *thumbnailURL; >- >-@property (nonatomic, assign) BOOL expectsMerchantSession; >+@property (nonatomic, copy) NSString *boundInterfaceIdentifier; > @end >+#endif > > namespace WebKit { > >@@ -306,6 +300,13 @@ RetainPtr<PKPaymentRequest> WebPaymentCoordinatorProxy::platformPaymentRequest(c > [result setSupportedCountries:toNSSet(paymentRequest.supportedCountries()).get()]; > #endif > >+#if HAVE(PASSKIT_BOUND_INTERFACE_IDENTIFIER) >+ // FIXME: Remove -respondsToSelector: check once rdar://problem/48041516 is widely available in SDKs. >+ auto& boundInterfaceIdentifier = m_client.paymentCoordinatorBoundInterfaceIdentifier(*this, sessionID); >+ if (!boundInterfaceIdentifier.isEmpty() && [result respondsToSelector:@selector(setBoundInterfaceIdentifier:)]) >+ [result setBoundInterfaceIdentifier:boundInterfaceIdentifier]; >+#endif >+ > // FIXME: Instead of using respondsToSelector, this should use a proper #if version check. > auto& bundleIdentifier = m_client.paymentCoordinatorSourceApplicationBundleIdentifier(*this, sessionID); > if (!bundleIdentifier.isEmpty() && [result respondsToSelector:@selector(setSourceApplicationBundleIdentifier:)]) >diff --git a/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm b/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm >index f11b0f2bc8fb6eee8de3321e08f0e3c56452fbd2..01d550739cc9c2426cb25e4119549d0e852d256b 100644 >--- a/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm >+++ b/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm >@@ -225,6 +225,12 @@ IPC::Connection* WebPageProxy::paymentCoordinatorConnection(const WebPaymentCoor > return messageSenderConnection(); > } > >+const String& WebPageProxy::paymentCoordinatorBoundInterfaceIdentifier(const WebPaymentCoordinatorProxy&, PAL::SessionID sessionID) >+{ >+ ASSERT_UNUSED(sessionID, sessionID == websiteDataStore().sessionID()); >+ return websiteDataStore().boundInterfaceIdentifier(); >+} >+ > const String& WebPageProxy::paymentCoordinatorSourceApplicationBundleIdentifier(const WebPaymentCoordinatorProxy&, PAL::SessionID sessionID) > { > ASSERT_UNUSED(sessionID, sessionID == websiteDataStore().sessionID()); >diff --git a/Source/WebKit/UIProcess/WebPageProxy.h b/Source/WebKit/UIProcess/WebPageProxy.h >index 9869b013fc63b6854aaafb33728cc3445312c0aa..ddfad61e31478be1d427b9677136619e78d46013 100644 >--- a/Source/WebKit/UIProcess/WebPageProxy.h >+++ b/Source/WebKit/UIProcess/WebPageProxy.h >@@ -2065,6 +2065,7 @@ private: > // WebPaymentCoordinatorProxy::Client > #if ENABLE(APPLE_PAY) > IPC::Connection* paymentCoordinatorConnection(const WebPaymentCoordinatorProxy&) final; >+ const String& paymentCoordinatorBoundInterfaceIdentifier(const WebPaymentCoordinatorProxy&, PAL::SessionID) final; > const String& paymentCoordinatorSourceApplicationBundleIdentifier(const WebPaymentCoordinatorProxy&, PAL::SessionID) final; > const String& paymentCoordinatorSourceApplicationSecondaryIdentifier(const WebPaymentCoordinatorProxy&, PAL::SessionID) final; > void paymentCoordinatorAddMessageReceiver(WebPaymentCoordinatorProxy&, const IPC::StringReference&, IPC::MessageReceiver&) final;
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 198690
:
371662
|
371665
|
371678