Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: b96d6e41056bce05390a67eaa3075b311a5aa59b
https://github.com/WebKit/WebKit/commit/b96d6e41056bce05390a67eaa3075b311a5aa59b
Author: Brady Eidson <[email protected]>
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
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes