Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: dc8400212ff7ed91d184f6340b65758f860b5de5
      
https://github.com/WebKit/WebKit/commit/dc8400212ff7ed91d184f6340b65758f860b5de5
  Author: Alex Christensen <achristen...@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


_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to