[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