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

Reply via email to