[webkit-changes] [WebKit/WebKit] ed057f: Refactor some Apple Pay logic for presenting Payme...
Wenson Hsieh
noreply at github.com
Wed Aug 7 20:26:01 PDT 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: ed057f97998a9d045854af1bab40e8c4e420b759
https://github.com/WebKit/WebKit/commit/ed057f97998a9d045854af1bab40e8c4e420b759
Author: Wenson Hsieh <wenson_hsieh at apple.com>
Date: 2024-08-07 (Wed, 07 Aug 2024)
Changed paths:
M Source/WTF/wtf/PlatformEnableCocoa.h
M Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h
M Source/WebKit/NetworkProcess/ios/NetworkConnectionToWebProcessIOS.mm
A Source/WebKit/Platform/cocoa/CocoaWindow.h
M Source/WebKit/Platform/cocoa/PaymentAuthorizationPresenter.h
M Source/WebKit/Platform/ios/PaymentAuthorizationController.mm
M Source/WebKit/Shared/ApplePay/WebPaymentCoordinatorProxy.cpp
M Source/WebKit/Shared/ApplePay/WebPaymentCoordinatorProxy.h
M Source/WebKit/UIProcess/Cocoa/PageClientImplCocoa.h
M Source/WebKit/UIProcess/Cocoa/PageClientImplCocoa.mm
M Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm
M Source/WebKit/UIProcess/PageClient.h
M Source/WebKit/UIProcess/WebPageProxyInternals.h
M Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm
M Source/WebKit/UIProcess/mac/PageClientImplMac.h
M Source/WebKit/UIProcess/mac/PageClientImplMac.mm
M Source/WebKit/UIProcess/mac/WebPageProxyMac.mm
M Source/WebKit/WebKit.xcodeproj/project.pbxproj
Log Message:
-----------
Refactor some Apple Pay logic for presenting PaymentAuthorizationController in the UI process
https://bugs.webkit.org/show_bug.cgi?id=277773
rdar://133326929
Reviewed by Abrar Rahman Protyasha.
Refactor logic for presenting payment authorization controllers on iOS family platforms, in the case
where `WebPaymentCoordinatorProxy` is being hosted in the UI process when `APPLE_PAY_REMOTE_UI` is
disabled. See below for more details.
* Source/WTF/wtf/PlatformEnableCocoa.h
Turn `APPLE_PAY_REMOTE_UI` back off.
* Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h:
* Source/WebKit/NetworkProcess/ios/NetworkConnectionToWebProcessIOS.mm:
(WebKit::NetworkConnectionToWebProcess::paymentCoordinatorPresentingWindow const):
* Source/WebKit/Platform/cocoa/CocoaWindow.h: Added.
Add a new project header to define `CocoaWindow` as either `NSWindow` or `UIWindow`, to make Cocoa
platform-agnostic code a bit easier to write (see below).
* Source/WebKit/Platform/cocoa/PaymentAuthorizationPresenter.h:
* Source/WebKit/Platform/ios/PaymentAuthorizationController.mm:
(-[WKPaymentAuthorizationControllerDelegate initWithRequest:presenter:]):
Store the `presentingWindowForPaymentAuthorization` when creating the delegate, and return it in the
delegate method below.
(-[WKPaymentAuthorizationControllerDelegate presentationWindowForPaymentAuthorizationController:]):
* Source/WebKit/Shared/ApplePay/WebPaymentCoordinatorProxy.cpp:
(WebKit::WebPaymentCoordinatorProxy::presentingWindowForPaymentAuthorization const):
Add a new client hook to ask for the presenting window for showing payment authorization UI. This
will either be `nil` in the case where the payment coordinator proxy lives in the network process,
or it'll return the `WKWebView`'s containing `UIWindow` in the case where it's being presented from
the UI process.
* Source/WebKit/Shared/ApplePay/WebPaymentCoordinatorProxy.h:
* Source/WebKit/UIProcess/Cocoa/PageClientImplCocoa.h:
* Source/WebKit/UIProcess/Cocoa/PageClientImplCocoa.mm:
(WebKit::PageClientImplCocoa::platformWindow const):
Refactor this page client hook to be present on both iOS and macOS.
* Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:
(WebKit::WebPageProxy::Internals::paymentCoordinatorPresentingWindow const):
* Source/WebKit/UIProcess/PageClient.h:
* Source/WebKit/UIProcess/WebPageProxyInternals.h:
* Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::Internals::paymentCoordinatorAuthorizationPresenter):
* Source/WebKit/UIProcess/mac/PageClientImplMac.h:
* Source/WebKit/UIProcess/mac/PageClientImplMac.mm:
(WebKit::PageClientImpl::platformWindow): Deleted.
* Source/WebKit/UIProcess/mac/WebPageProxyMac.mm:
(WebKit::WebPageProxy::Internals::paymentCoordinatorPresentingWindow): Deleted.
Move this into `WebPageProxyCocoa.mm`, so we can share code with iOS.
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
Canonical link: https://commits.webkit.org/281976@main
To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications
More information about the webkit-changes
mailing list