Title: [292044] trunk/Source/WebKit
Revision
292044
Author
eric.carl...@apple.com
Date
2022-03-29 11:15:41 -0700 (Tue, 29 Mar 2022)

Log Message

Don't send sync RemoteMediaPlayerProxy messages that we know will fail
https://bugs.webkit.org/show_bug.cgi?id=238467
rdar://86662565

Reviewed by Jer Noble.

* WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:
(WebKit::MediaPlayerPrivateRemote::videoFrameForCurrentTime): Return early if
readyState is less than HaveCurrentData, or if the first frame is not available.

* WebProcess/GPU/media/cocoa/MediaPlayerPrivateRemoteCocoa.mm:
(WebKit::MediaPlayerPrivateRemote::nativeImageForCurrentTime): Ditto.
(WebKit::MediaPlayerPrivateRemote::colorSpace): Ditto.

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (292043 => 292044)


--- trunk/Source/WebKit/ChangeLog	2022-03-29 17:55:21 UTC (rev 292043)
+++ trunk/Source/WebKit/ChangeLog	2022-03-29 18:15:41 UTC (rev 292044)
@@ -1,3 +1,19 @@
+2022-03-29  Eric Carlson  <eric.carl...@apple.com>
+
+        Don't send sync RemoteMediaPlayerProxy messages that we know will fail
+        https://bugs.webkit.org/show_bug.cgi?id=238467
+        rdar://86662565
+
+        Reviewed by Jer Noble.
+
+        * WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:
+        (WebKit::MediaPlayerPrivateRemote::videoFrameForCurrentTime): Return early if
+        readyState is less than HaveCurrentData, or if the first frame is not available.
+
+        * WebProcess/GPU/media/cocoa/MediaPlayerPrivateRemoteCocoa.mm:
+        (WebKit::MediaPlayerPrivateRemote::nativeImageForCurrentTime): Ditto.
+        (WebKit::MediaPlayerPrivateRemote::colorSpace): Ditto.
+
 2022-03-29  Devin Rousso  <drou...@apple.com>
 
         Unreviewed, fix UAF after r291980

Modified: trunk/Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp (292043 => 292044)


--- trunk/Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp	2022-03-29 17:55:21 UTC (rev 292043)
+++ trunk/Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp	2022-03-29 18:15:41 UTC (rev 292044)
@@ -1012,6 +1012,9 @@
 
 RefPtr<WebCore::VideoFrame> MediaPlayerPrivateRemote::videoFrameForCurrentTime()
 {
+    if (readyState() < MediaPlayer::ReadyState::HaveCurrentData)
+        return { };
+
     std::optional<RemoteVideoFrameProxy::Properties> result;
     bool changed = false;
     if (!connection().sendSync(Messages::RemoteMediaPlayerProxy::VideoFrameForCurrentTimeIfChanged(), Messages::RemoteMediaPlayerProxy::VideoFrameForCurrentTimeIfChanged::Reply(result, changed), m_id))

Modified: trunk/Source/WebKit/WebProcess/GPU/media/cocoa/MediaPlayerPrivateRemoteCocoa.mm (292043 => 292044)


--- trunk/Source/WebKit/WebProcess/GPU/media/cocoa/MediaPlayerPrivateRemoteCocoa.mm	2022-03-29 17:55:21 UTC (rev 292043)
+++ trunk/Source/WebKit/WebProcess/GPU/media/cocoa/MediaPlayerPrivateRemoteCocoa.mm	2022-03-29 18:15:41 UTC (rev 292044)
@@ -59,6 +59,9 @@
 
 RefPtr<NativeImage> MediaPlayerPrivateRemote::nativeImageForCurrentTime()
 {
+    if (readyState() < MediaPlayer::ReadyState::HaveCurrentData)
+        return { };
+
     if (m_pixelBufferGatheredWithVideoFrameMetadata) {
         if (!m_pixelBufferConformer)
             m_pixelBufferConformer = makeUnique<PixelBufferConformerCV>((__bridge CFDictionaryRef)@{ (__bridge NSString *)kCVPixelBufferPixelFormatTypeKey: @(kCVPixelFormatType_32BGRA) });
@@ -90,6 +93,9 @@
 WebCore::DestinationColorSpace MediaPlayerPrivateRemote::colorSpace()
 {
     auto colorSpace = DestinationColorSpace::SRGB();
+    if (readyState() < MediaPlayer::ReadyState::HaveCurrentData)
+        return colorSpace;
+
     connection().sendSync(Messages::RemoteMediaPlayerProxy::ColorSpace(), Messages::RemoteMediaPlayerProxy::ColorSpace::Reply(colorSpace), m_id);
     return colorSpace;
 }
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to