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

Reply via email to