Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: b9e0ba818f830540e3c4fa6824de10d8174808ca
https://github.com/WebKit/WebKit/commit/b9e0ba818f830540e3c4fa6824de10d8174808ca
Author: Abrar Rahman Protyasha <[email protected]>
Date: 2025-03-10 (Mon, 10 Mar 2025)
Changed paths:
M Source/WebKit/Shared/Cocoa/ArgumentCodersCocoa.h
M Source/WebKit/Shared/Cocoa/ArgumentCodersCocoa.mm
M Source/WebKit/Shared/Cocoa/CoreIPCNSCFObject.h
M Source/WebKit/Shared/Cocoa/CoreIPCNSCFObject.mm
M Source/WebKit/Shared/Cocoa/CoreIPCNSCFObject.serialization.in
A Source/WebKit/Shared/Cocoa/CoreIPCPKPaymentSetupFeature.h
A Source/WebKit/Shared/Cocoa/CoreIPCPKPaymentSetupFeature.mm
M Source/WebKit/Shared/Cocoa/CoreIPCPKSecureElementPass.mm
M Source/WebKit/Shared/Cocoa/CoreIPCPassKit.serialization.in
M Source/WebKit/Shared/Cocoa/CoreIPCTypes.h
M Source/WebKit/Shared/Cocoa/WebCoreArgumentCodersCocoa.serialization.in
M Source/WebKit/UIProcess/WebPageProxy.cpp
M Source/WebKit/WebKit.xcodeproj/project.pbxproj
Log Message:
-----------
REGRESSION(288484@main): ApplePaySetup.getSetupFeatures() fails because
PKPaymentSetupFeature is dropped on the floor during IPC serialization
https://bugs.webkit.org/show_bug.cgi?id=289486
rdar://145064904
Reviewed by Alex Christensen.
Currently, any web-exposed API that passes around ApplePaySetupFeature
(which corresponds to PKPaymentSetupFeature in Cocoa platforms) fails.
This is because after 288484@main, PKPaymentSetupFeature is no longer
decoded through decoding flows pertaining to NSSecureCoding. Moreoever,
our inability to provide a CoreIPC wrapper for the type meant that we
were silently dropping PKPaymentSetupFeature during IPC serialization,
and as such always incorrectly fulfilling the necessary IPC calls
downstream of ApplePaySetup usage.
This commit addresses the bug as such:
1. Provide a CoreIPCPKPaymentSetupFeature wrapper class to continue
using NSKU.
2. Undo 291313@main. This commit was introduced under the working
assumption that the WebPaymentCoordinatorProxy resides entirely in
the networking process on iOS. It turns out that is not true, and is
indicative of broader architectural issues (since we specifically
want the coordinator proxy to _not_ live in the UI process on iOS).
We should fix this separately, tracked in webkit.org/b/289488.
* Source/WebKit/Shared/Cocoa/ArgumentCodersCocoa.h:
* Source/WebKit/Shared/Cocoa/ArgumentCodersCocoa.mm:
(IPC::getClass<PKPaymentSetupFeature>):
(IPC::typeFromObject):
* Source/WebKit/Shared/Cocoa/CoreIPCNSCFObject.h:
* Source/WebKit/Shared/Cocoa/CoreIPCNSCFObject.mm:
(WebKit::valueFromID):
* Source/WebKit/Shared/Cocoa/CoreIPCNSCFObject.serialization.in:
* Source/WebKit/Shared/Cocoa/CoreIPCPKPaymentSetupFeature.h: Copied from
Source/WebKit/Shared/Cocoa/CoreIPCPKSecureElementPass.mm.
(WebKit::CoreIPCPKPaymentSetupFeature::CoreIPCPKPaymentSetupFeature):
(WebKit::CoreIPCPKPaymentSetupFeature::ipcData const):
* Source/WebKit/Shared/Cocoa/CoreIPCPKPaymentSetupFeature.mm: Copied from
Source/WebKit/Shared/Cocoa/CoreIPCPKSecureElementPass.mm.
(WebKit::CoreIPCPKPaymentSetupFeature::CoreIPCPKPaymentSetupFeature):
(WebKit::CoreIPCPKPaymentSetupFeature::toID const):
* Source/WebKit/Shared/Cocoa/CoreIPCPKSecureElementPass.mm:
* Source/WebKit/Shared/Cocoa/CoreIPCPassKit.serialization.in:
* Source/WebKit/Shared/Cocoa/CoreIPCTypes.h:
* Source/WebKit/Shared/Cocoa/WebCoreArgumentCodersCocoa.serialization.in:
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didAttachToRunningProcess):
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
Canonical link: https://commits.webkit.org/291932@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes