[webkit-changes] [WebKit/WebKit] b96d6e: Add generation of CF serializers
Brady Eidson
noreply at github.com
Mon Oct 30 10:00:29 PDT 2023
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: b96d6e41056bce05390a67eaa3075b311a5aa59b
https://github.com/WebKit/WebKit/commit/b96d6e41056bce05390a67eaa3075b311a5aa59b
Author: Brady Eidson <beidson at apple.com>
Date: 2023-10-30 (Mon, 30 Oct 2023)
Changed paths:
M Source/WebKit/DerivedSources-input.xcfilelist
M Source/WebKit/DerivedSources.make
M Source/WebKit/Scripts/generate-serializers.py
M Source/WebKit/Scripts/webkit/tests/GeneratedSerializers.cpp
M Source/WebKit/Scripts/webkit/tests/GeneratedSerializers.h
M Source/WebKit/Scripts/webkit/tests/SerializedTypeInfo.cpp
M Source/WebKit/Scripts/webkit/tests/TestSerializedType.serialization.in
M Source/WebKit/Shared/Cocoa/CoreIPCData.h
M Source/WebKit/Shared/Cocoa/CoreIPCData.serialization.in
M Source/WebKit/Shared/WTFArgumentCoders.serialization.in
M Source/WebKit/Shared/cf/ArgumentCodersCF.cpp
M Source/WebKit/Shared/cf/ArgumentCodersCF.h
A Source/WebKit/Shared/cf/CFTypes.serialization.in
M Source/WebKit/WebKit.xcodeproj/project.pbxproj
Log Message:
-----------
Add generation of CF serializers
https://bugs.webkit.org/show_bug.cgi?id=263800
Reviewed by David Kilzer.
A decent chunk of remaining handwritten coders are in ArgumentCodersCF.
The strategy is to add a C++ class to wrap each of the CFTypes we serialize,
and that C++ class's coders are also generated.
CoreIPCData is a prime candidate of this, in that it can easily wrap a CFDataRef.
This patch teachers the generator to look for types that end in "Ref" and are
followed by a "wrapped by" clause.
It then generates the encode/decode methods for that CF type in terms of the wrapper.
CFDataRef and CFStringRef, and already have suitable wrappers, so we'll start with them.
This can also be extended to NS* types in the future.
* Source/WebKit/DerivedSources-input.xcfilelist:
* Source/WebKit/DerivedSources.make:
* Source/WebKit/Scripts/generate-serializers.py:
(SerializedType.__init__):
(SerializedType.namespace_and_name):
(SerializedType.cf_wrapper_type):
(one_argument_coder_declaration_cf):
(one_argument_coder_declaration):
(generate_header):
(check_type_members):
(encode_cf_type):
(encode_type):
(decode_cf_type):
(decode_type):
(generate_one_impl):
(generate_serialized_type_info):
(parse_serialized_types):
* Source/WebKit/Scripts/webkit/tests/GeneratedSerializers.cpp:
(IPC::ArgumentCoder<CFFooRef>::encode):
(IPC::ArgumentCoder<RetainPtr<CFFooRef>>::decode):
(IPC::ArgumentCoder<CFBarRef>::encode):
(IPC::ArgumentCoder<RetainPtr<CFBarRef>>::decode):
* Source/WebKit/Scripts/webkit/tests/GeneratedSerializers.h:
(IPC::ArgumentCoder<RetainPtr<CFFooRef>>::encode):
(IPC::ArgumentCoder<RetainPtr<CFBarRef>>::encode):
* Source/WebKit/Scripts/webkit/tests/SerializedTypeInfo.cpp:
* Source/WebKit/Scripts/webkit/tests/TestSerializedType.serialization.in:
* Source/WebKit/Shared/Cocoa/CoreIPCData.h:
(WebKit::CoreIPCData::CoreIPCData):
* Source/WebKit/Shared/Cocoa/CoreIPCData.serialization.in:
* Source/WebKit/Shared/WTFArgumentCoders.serialization.in:
* Source/WebKit/Shared/cf/ArgumentCodersCF.cpp:
(IPC::ArgumentCoder<CFDataRef>::encode): Deleted.
(IPC::ArgumentCoder<RetainPtr<CFDataRef>>::decode): Deleted.
(IPC::ArgumentCoder<CFStringRef>::encode): Deleted.
(IPC::ArgumentCoder<RetainPtr<CFStringRef>>::decode): Deleted.
* Source/WebKit/Shared/cf/ArgumentCodersCF.h:
* Source/WebKit/Shared/cf/CFTypes.serialization.in: Copied from Source/WebKit/Shared/Cocoa/CoreIPCData.serialization.in.
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
Canonical link: https://commits.webkit.org/269951@main
More information about the webkit-changes
mailing list