Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: b0bcfd764ea406c4eea381e0a0191977fc06ad81
https://github.com/WebKit/WebKit/commit/b0bcfd764ea406c4eea381e0a0191977fc06ad81
Author: Alex Christensen <[email protected]>
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
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes