Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: d9fd3e0d1f7a2f914052383ccd29ac376b1f8895
      
https://github.com/WebKit/WebKit/commit/d9fd3e0d1f7a2f914052383ccd29ac376b1f8895
  Author: Brady Eidson <[email protected]>
  Date:   2023-10-25 (Wed, 25 Oct 2023)

  Changed paths:
    M Source/WebKit/Shared/Cocoa/CoreIPCData.serialization.in
    M Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in
    M Source/WebKit/WebKit.xcodeproj/project.pbxproj
    M Tools/TestWebKitAPI/Configurations/TestWebKitAPI.xcconfig
    M Tools/TestWebKitAPI/SourcesCocoa.txt
    M Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj
    A Tools/TestWebKitAPI/Tests/WebKitCocoa/IPCSerialization.mm

  Log Message:
  -----------
  Introduce TestWebKitAPI mechanism for directly testing IPC serialization
https://bugs.webkit.org/show_bug.cgi?id=263703
rdar://117511848

Reviewed by Alex Christensen.

This patch introduces a framework to directly test serialization of object 
types that we know
we need to support coding for IPC, but might not have any indirect way to test.

The testing leverages IPC's support for MessageSenders to work without an 
IPC::Connection.
That support was originally added to support generated messages and encoding to 
our daemons,
but reusing it here fits nicely.

By using a test-specific MessageSender and 
sendWithAsyncReplyWithoutUsingIPCConnection, we coax
CoreIPC into encoding a message and decoding a reply the same way it does for 
actual IPC messaging.

The prime use-case for this technique is testing our Objective-C types as found 
in ArgumentCodersCocoa.mm
The CoreFoundation types in ArgumentCodersCF.mm are also a nice fit.

For the sake of introducing the mechanism at a high level, this patch only 
tests serialization of NSString.
With this framework introduced, testing other types will be trivial.

* Source/WebKit/Shared/Cocoa/CoreIPCData.serialization.in:
* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Tools/TestWebKitAPI/Configurations/TestWebKitAPI.xcconfig:
* Tools/TestWebKitAPI/SourcesCocoa.txt:
* Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/IPCSerialization.mm: Added.
(ObjCSerializationTester::performSendWithAsyncReplyWithoutUsingIPCConnection 
const):
(ObjCHolderForTesting::encode const):
(ObjCHolderForTesting::decode):
(operator==):
(BasicPingBackMessage::name):
(BasicPingBackMessage::asyncMessageReplyName):
(BasicPingBackMessage::BasicPingBackMessage):
(BasicPingBackMessage::arguments):
(TEST):

Canonical link: https://commits.webkit.org/269802@main


_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to