[webkit-changes] [WebKit/WebKit] dc8400: Use generated structures instead of NSDictionary t...

Alex Christensen noreply at github.com
Thu Feb 15 22:30:47 PST 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: dc8400212ff7ed91d184f6340b65758f860b5de5
      https://github.com/WebKit/WebKit/commit/dc8400212ff7ed91d184f6340b65758f860b5de5
  Author: Alex Christensen <achristensen at apple.com>
  Date:   2024-02-15 (Thu, 15 Feb 2024)

  Changed paths:
    M Source/WebKit/Scripts/generate-serializers.py
    M Source/WebKit/Scripts/webkit/tests/GeneratedWebKitSecureCoding.cpp
    M Source/WebKit/Scripts/webkit/tests/GeneratedWebKitSecureCoding.h
    M Source/WebKit/Scripts/webkit/tests/SerializedTypeInfo.cpp
    M Source/WebKit/Scripts/webkit/tests/TestSerializedType.serialization.in
    M Source/WebKit/Scripts/webkit/tests/WebKitPlatformGeneratedSerializers.cpp
    M Source/WebKit/Shared/Cocoa/ArgumentCodersCocoa.h
    M Source/WebKit/Shared/Cocoa/ArgumentCodersCocoa.mm
    M Source/WebKit/Shared/Cocoa/CoreIPCDictionary.h
    M Source/WebKit/Shared/Cocoa/CoreIPCDictionary.mm
    M Source/WebKit/Shared/Cocoa/CoreIPCDictionary.serialization.in
    M Source/WebKit/Shared/Cocoa/CoreIPCNSCFObject.h
    M Source/WebKit/Shared/Cocoa/CoreIPCNSCFObject.mm
    M Source/WebKit/Shared/Cocoa/CoreIPCNSURLProtectionSpace.serialization.in
    M Source/WebKit/Shared/Cocoa/CoreIPCPassKit.serialization.in

  Log Message:
  -----------
  Use generated structures instead of NSDictionary to serialize members of ObjC classes
https://bugs.webkit.org/show_bug.cgi?id=269438
rdar://122994790

Reviewed by Brady Eidson.

This makes it so that we don't need to expand what an NSDictionary can contain in order
to increase the number of ObjC classes that are serialized using generated serialization.

This also makes it so we don't need "webkit_secure_coding" in SerializedTypeInfo.cpp,
so all the metadata has the same form.

We can also simplify CoreIPCDictionary to just a vector of key/value pairs.

If a type is not declared as optional with a question mark in the serialization.in file,
then we debug assert on the encoding side if it is missing and we fail to decode on the
decoding side if it is missing.

* Source/WebKit/Scripts/generate-serializers.py:
(SerializedType.__init__):
(SerializedType.name_declaration_for_serialized_type_info):
(SerializedType.members_for_serialized_type_info):
(MemberVariable.value_without_question_mark):
(MemberVariable):
(MemberVariable.ns_type_enum_value):
(MemberVariable.array_contents):
(MemberVariable.dictionary_contents):
(MemberVariable.has_container_contents):
(MemberVariable.ns_type):
(MemberVariable.dictionary_type):
(MemberVariable.value_is_optional):
(check_type_members):
(check_type_members.is):
(encode_type):
(decode_type):
(construct_type):
(generate_impl):
(generate_one_serialized_type_info):
(generate_serialized_type_info):
(parse_serialized_types):
(generate_webkit_secure_coding_impl):
(generate_webkit_secure_coding_impl.is):
(generate_webkit_secure_coding_header):
(generate_one_dictionary_member_validation): Deleted.
* Source/WebKit/Scripts/webkit/tests/GeneratedWebKitSecureCoding.cpp:
(WebKit::dictionaryFromVector):
(WebKit::dictionaryFromOptionalVector):
(WebKit::vectorFromDictionary):
(WebKit::optionalVectorFromDictionary):
(WebKit::arrayFromVector):
(WebKit::arrayFromOptionalVector):
(WebKit::vectorFromArray):
(WebKit::optionalVectorFromArray):
(WebKit::CoreIPCAVOutputContext::CoreIPCAVOutputContext):
(WebKit::CoreIPCAVOutputContext::toID const):
(WebKit::CoreIPCNSSomeFoundationType::CoreIPCNSSomeFoundationType):
(WebKit::CoreIPCNSSomeFoundationType::toID const):
(WebKit::CoreIPCDDScannerResult::CoreIPCDDScannerResult):
(WebKit::CoreIPCDDScannerResult::toID const):
(WebKit::CoreIPCAVOutputContext::isValidDictionary): Deleted.
(WebKit::CoreIPCNSSomeFoundationType::isValidDictionary): Deleted.
(WebKit::CoreIPCDDScannerResult::isValidDictionary): Deleted.
* Source/WebKit/Scripts/webkit/tests/GeneratedWebKitSecureCoding.h:
(WebKit::CoreIPCAVOutputContext::CoreIPCAVOutputContext):
(WebKit::CoreIPCNSSomeFoundationType::CoreIPCNSSomeFoundationType):
(WebKit::CoreIPCDDScannerResult::CoreIPCDDScannerResult):
* Source/WebKit/Scripts/webkit/tests/SerializedTypeInfo.cpp:
(WebKit::allSerializedTypes):
* Source/WebKit/Scripts/webkit/tests/WebKitPlatformGeneratedSerializers.cpp:
(IPC::ArgumentCoder<WebKit::CoreIPCAVOutputContext>::encode):
(IPC::ArgumentCoder<WebKit::CoreIPCAVOutputContext>::decode):
(IPC::ArgumentCoder<WebKit::CoreIPCNSSomeFoundationType>::encode):
(IPC::ArgumentCoder<WebKit::CoreIPCNSSomeFoundationType>::decode):
(IPC::ArgumentCoder<WebKit::CoreIPCDDScannerResult>::encode):
(IPC::ArgumentCoder<WebKit::CoreIPCDDScannerResult>::decode):
* Source/WebKit/Shared/Cocoa/ArgumentCodersCocoa.h:
* Source/WebKit/Shared/Cocoa/ArgumentCodersCocoa.mm:
(IPC::getClass<PKSecureElementPass>):
* Source/WebKit/Shared/Cocoa/CoreIPCDictionary.h:
* Source/WebKit/Shared/Cocoa/CoreIPCDictionary.mm:
(WebKit::CoreIPCDictionary::CoreIPCDictionary):
(WebKit::CoreIPCDictionary::toID const):
(WebKit::CoreIPCDictionary::keyHasValueOfType const): Deleted.
(WebKit::CoreIPCDictionary::keyIsMissingOrHasValueOfType const): Deleted.
(WebKit::CoreIPCDictionary::collectionValuesAreOfType const): Deleted.
(WebKit::CoreIPCDictionary::createNSDictionaryIfNeeded const): Deleted.
* Source/WebKit/Shared/Cocoa/CoreIPCDictionary.serialization.in:
* Source/WebKit/Shared/Cocoa/CoreIPCPassKit.serialization.in:

Canonical link: https://commits.webkit.org/274799@main




More information about the webkit-changes mailing list