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