Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: b0bcfd764ea406c4eea381e0a0191977fc06ad81 https://github.com/WebKit/WebKit/commit/b0bcfd764ea406c4eea381e0a0191977fc06ad81 Author: Alex Christensen <achristen...@apple.com> Date: 2024-02-06 (Tue, 06 Feb 2024)
Changed paths: M Source/WebCore/SourcesCocoa.txt M Source/WebCore/WebCore.xcodeproj/project.pbxproj M Source/WebCore/platform/SerializedPlatformDataCueValue.h A Source/WebCore/platform/cocoa/SerializedPlatformDataCueValue.mm M Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm M Source/WebCore/platform/mac/SerializedPlatformDataCueMac.h M Source/WebCore/platform/mac/SerializedPlatformDataCueMac.mm M Source/WebKit/Shared/WebCoreArgumentCoders.cpp M Source/WebKit/Shared/WebCoreArgumentCoders.h M Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in M Source/WebKit/Shared/curl/WebCoreArgumentCodersCurl.cpp M Source/WebKit/Shared/mac/WebCoreArgumentCodersMac.mm M Source/WebKit/Shared/soup/WebCoreArgumentCodersSoup.cpp Log Message: ----------- Generate serialization of SerializedPlatformDataCueValue https://bugs.webkit.org/show_bug.cgi?id=268805 Reviewed by Eric Carlson. Before this change, SerializedPlatformDataCueValue was a strange abstraction that contained a RetainPtr<id> that was either a AVMetadataItem or an NSDictionary extracted from it, and there wasn't a good way to tell if that extraction had happened from the abstraction itself. Also, the NSDictionary had a generous allowance for the types of contents it would allow to be serialized across IPC. This changes SerializedPlatformDataCueValue to be a container for strictly typed data that is extracted from an AVMetadataItem. I made a few assumptions to make this possible: 1. AVMetadataItem.extraAttributes contains only keys and values we care about that have a type of NSString. Others will now be ignored. Non-String keys were already ignored. AVMetadataItem.h pointed to AVMetadataFormat.h which seems to indicate this is a reasonable assumption. 2. AVMetadataItem.key contains only an NSString if we care about it. The API indicates it is a id<NSObject, NSCopying> but I don't think we support anything useful that isn't an NSString. 3. AVMetadataItem.value is either nil, a number, a string, an NSDate, or an NSData. The existence of stringValue, numberValue, dateValue, and dataValue selectors on AVMetadataItem objects seems to indicate that these are the valid values. * Source/WebCore/SourcesCocoa.txt: * Source/WebCore/WebCore.xcodeproj/project.pbxproj: * Source/WebCore/platform/SerializedPlatformDataCueValue.h: (WebCore::SerializedPlatformDataCueValue::SerializedPlatformDataCueValue): (WebCore::SerializedPlatformDataCueValue::data const): (WebCore::SerializedPlatformDataCueValue::platformType const): Deleted. (WebCore::SerializedPlatformDataCueValue::nativeValue const): Deleted. (WebCore::SerializedPlatformDataCueValue::encodingRequiresPlatformData const): Deleted. (): Deleted. * Source/WebCore/platform/cocoa/SerializedPlatformDataCueValue.mm: Added. (WebCore::SerializedPlatformDataCueValue::SerializedPlatformDataCueValue): (WebCore::SerializedPlatformDataCueValue::toNSDictionary const): (WebCore::SerializedPlatformDataCueValue::operator== const): (WebCore::SerializedPlatformDataCueValue::Data::operator== const): * Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: (WebCore::MediaPlayerPrivateAVFoundationObjC::metadataDidArrive): * Source/WebCore/platform/mac/SerializedPlatformDataCueMac.h: * Source/WebCore/platform/mac/SerializedPlatformDataCueMac.mm: (WebCore::SerializedPlatformDataCueMac::SerializedPlatformDataCueMac): (WebCore::SerializedPlatformDataCueMac::deserialize const): (WebCore::SerializedPlatformDataCueMac::isEqual const): (WebCore::toSerializedPlatformDataCueMac): (WebCore::SerializedPlatformDataCueMac::encodableValue const): (WebCore::jsValueWithAVMetadataItemInContext): (WebCore::NSDictionaryWithAVMetadataItem): Deleted. * Source/WebKit/Shared/WebCoreArgumentCoders.cpp: (IPC::ArgumentCoder<WebCore::SerializedPlatformDataCueValue>::encode): Deleted. (IPC::ArgumentCoder<WebCore::SerializedPlatformDataCueValue>::decode): Deleted. * Source/WebKit/Shared/WebCoreArgumentCoders.h: * Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in: * Source/WebKit/Shared/mac/WebCoreArgumentCodersMac.mm: (IPC::ArgumentCoder<WebCore::SerializedPlatformDataCueValue>::encodePlatformData): Deleted. (IPC::ArgumentCoder<WebCore::SerializedPlatformDataCueValue>::decodePlatformData): Deleted. Canonical link: https://commits.webkit.org/274146@main _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes