Title: [274731] trunk
Revision
274731
Author
[email protected]
Date
2021-03-19 12:21:17 -0700 (Fri, 19 Mar 2021)

Log Message

[GPUP] Test imported/w3c/web-platform-tests/fetch/range/general.window.html fails when media in GPU process is enabled.
https://bugs.webkit.org/show_bug.cgi?id=221817

Reviewed by Jer Noble.

Source/WebKit:

The `didLoadingProgress()` function of `MediaPlayerPrivateAVFoundation`
and `MediaPlayerPrivateMediaSourceAVFObjC` changes their mutable member
variables, so a caller (e.g., RemoteMediaPlayerProxy::didLoadingProgress())
will get false eventually if it calls the function repeatedly. As a result,
`MediaPlayerPrivateRemote::didLoadingProgress()` will always return false.
This patch fixes this issue with a new synchronous message in `RemoteMediaPlayerProxy`.

No new tests. Fix a test failure.

* GPUProcess/media/RemoteMediaPlayerProxy.cpp:
(WebKit::RemoteMediaPlayerProxy::didLoadingProgress):
(WebKit::RemoteMediaPlayerProxy::updateCachedState):
* GPUProcess/media/RemoteMediaPlayerProxy.h:
* GPUProcess/media/RemoteMediaPlayerProxy.messages.in:
* WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:
(WebKit::MediaPlayerPrivateRemote::didLoadingProgress const):
(WebKit::MediaPlayerPrivateRemote::updateCachedState):
* WebProcess/GPU/media/RemoteMediaPlayerState.h:
(WebKit::RemoteMediaPlayerState::encode const):
(WebKit::RemoteMediaPlayerState::decode):

LayoutTests:

* platform/wk2/TestExpectations:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (274730 => 274731)


--- trunk/LayoutTests/ChangeLog	2021-03-19 19:00:45 UTC (rev 274730)
+++ trunk/LayoutTests/ChangeLog	2021-03-19 19:21:17 UTC (rev 274731)
@@ -1,3 +1,12 @@
+2021-03-19  Peng Liu  <[email protected]>
+
+        [GPUP] Test imported/w3c/web-platform-tests/fetch/range/general.window.html fails when media in GPU process is enabled.
+        https://bugs.webkit.org/show_bug.cgi?id=221817
+
+        Reviewed by Jer Noble.
+
+        * platform/wk2/TestExpectations:
+
 2021-03-19  ChangSeok Oh  <[email protected]>
 
         Animated AVIF support

Modified: trunk/LayoutTests/platform/wk2/TestExpectations (274730 => 274731)


--- trunk/LayoutTests/platform/wk2/TestExpectations	2021-03-19 19:00:45 UTC (rev 274730)
+++ trunk/LayoutTests/platform/wk2/TestExpectations	2021-03-19 19:21:17 UTC (rev 274731)
@@ -239,8 +239,6 @@
 
 webkit.org/b/221816 http/wpt/mediarecorder/MediaRecorder-AV-audio-video-dataavailable.html [ Failure ]
 
-webkit.org/b/221817 imported/w3c/web-platform-tests/fetch/range/general.window.html [ Failure ]
-
 webkit.org/b/221819 imported/w3c/web-platform-tests/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/mediaElementAudioSourceToScriptProcessorTest.html [ Failure ]
 
 webkit.org/b/222569 fast/mediastream/media-stream-track-interrupted.html [ Crash Pass ]

Modified: trunk/Source/WebKit/ChangeLog (274730 => 274731)


--- trunk/Source/WebKit/ChangeLog	2021-03-19 19:00:45 UTC (rev 274730)
+++ trunk/Source/WebKit/ChangeLog	2021-03-19 19:21:17 UTC (rev 274731)
@@ -1,3 +1,31 @@
+2021-03-19  Peng Liu  <[email protected]>
+
+        [GPUP] Test imported/w3c/web-platform-tests/fetch/range/general.window.html fails when media in GPU process is enabled.
+        https://bugs.webkit.org/show_bug.cgi?id=221817
+
+        Reviewed by Jer Noble.
+
+        The `didLoadingProgress()` function of `MediaPlayerPrivateAVFoundation`
+        and `MediaPlayerPrivateMediaSourceAVFObjC` changes their mutable member
+        variables, so a caller (e.g., RemoteMediaPlayerProxy::didLoadingProgress())
+        will get false eventually if it calls the function repeatedly. As a result,
+        `MediaPlayerPrivateRemote::didLoadingProgress()` will always return false.
+        This patch fixes this issue with a new synchronous message in `RemoteMediaPlayerProxy`.
+
+        No new tests. Fix a test failure.
+
+        * GPUProcess/media/RemoteMediaPlayerProxy.cpp:
+        (WebKit::RemoteMediaPlayerProxy::didLoadingProgress):
+        (WebKit::RemoteMediaPlayerProxy::updateCachedState):
+        * GPUProcess/media/RemoteMediaPlayerProxy.h:
+        * GPUProcess/media/RemoteMediaPlayerProxy.messages.in:
+        * WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:
+        (WebKit::MediaPlayerPrivateRemote::didLoadingProgress const):
+        (WebKit::MediaPlayerPrivateRemote::updateCachedState):
+        * WebProcess/GPU/media/RemoteMediaPlayerState.h:
+        (WebKit::RemoteMediaPlayerState::encode const):
+        (WebKit::RemoteMediaPlayerState::decode):
+
 2021-03-19  Antti Koivisto  <[email protected]>
 
         Reduce the number of allowed parallel low priority resource loads before visual completion

Modified: trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp (274730 => 274731)


--- trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp	2021-03-19 19:00:45 UTC (rev 274730)
+++ trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp	2021-03-19 19:21:17 UTC (rev 274731)
@@ -255,6 +255,11 @@
     m_player->setRate(rate);
 }
 
+void RemoteMediaPlayerProxy::didLoadingProgress(CompletionHandler<void(bool)>&& completionHandler)
+{
+    completionHandler(m_player->didLoadingProgress());
+}
+
 RefPtr<PlatformMediaResource> RemoteMediaPlayerProxy::requestResource(ResourceRequest&& request, PlatformMediaResourceLoader::LoadOptions options)
 {
     ASSERT(m_manager && m_manager->gpuConnectionToWebProcess());
@@ -817,7 +822,6 @@
     m_cachedState.readyState = m_player->readyState();
     m_cachedState.movieLoadType = m_player->movieLoadType();
     m_cachedState.paused = m_player->paused();
-    m_cachedState.loadingProgressed = m_player->didLoadingProgress();
     m_cachedState.hasAudio = m_player->hasAudio();
     m_cachedState.hasVideo = m_player->hasVideo();
 

Modified: trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.h (274730 => 274731)


--- trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.h	2021-03-19 19:00:45 UTC (rev 274730)
+++ trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.h	2021-03-19 19:21:17 UTC (rev 274731)
@@ -142,6 +142,7 @@
     void acceleratedRenderingStateChanged(bool);
     void setShouldDisableSleep(bool);
     void setRate(double);
+    void didLoadingProgress(CompletionHandler<void(bool)>&&);
 
 #if PLATFORM(COCOA)
     void setVideoInlineSizeFenced(const WebCore::IntSize&, const WTF::MachSendRight&);

Modified: trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.messages.in (274730 => 274731)


--- trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.messages.in	2021-03-19 19:00:45 UTC (rev 274730)
+++ trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.messages.in	2021-03-19 19:21:17 UTC (rev 274731)
@@ -57,6 +57,7 @@
     AcceleratedRenderingStateChanged(bool canBeAccelerated)
     SetShouldDisableSleep(bool disable)
     SetRate(double rate)
+    DidLoadingProgress() -> (bool flag) Synchronous
 
 #if ENABLE(VIDEO_PRESENTATION_MODE)
     UpdateVideoFullscreenInlineImage()
@@ -70,9 +71,6 @@
     SetVideoInlineSizeFenced(WebCore::IntSize size, MachSendRight machSendRight)
 #endif
 
-    # Paint
-    # PaintCurrentFrameInContext
-
 #if ENABLE(WIRELESS_PLAYBACK_TARGET)
     SetWirelessVideoPlaybackDisabled(bool disabled)
     # SetWirelessPlaybackTarget(WebCore::MediaPlaybackTarget)

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


--- trunk/Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp	2021-03-19 19:00:45 UTC (rev 274730)
+++ trunk/Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp	2021-03-19 19:21:17 UTC (rev 274731)
@@ -265,7 +265,9 @@
 
 bool MediaPlayerPrivateRemote::didLoadingProgress() const
 {
-    return m_cachedState.loadingProgressed;
+    bool flag = false;
+    connection().sendSync(Messages::RemoteMediaPlayerProxy::DidLoadingProgress(), Messages::RemoteMediaPlayerProxy::DidLoadingProgress::Reply(flag), m_id);
+    return flag;
 }
 
 bool MediaPlayerPrivateRemote::hasVideo() const
@@ -422,7 +424,6 @@
     m_cachedState.networkState = state.networkState;
     m_cachedState.readyState = state.readyState;
     m_cachedState.paused = state.paused;
-    m_cachedState.loadingProgressed = state.loadingProgressed;
     m_cachedState.naturalSize = state.naturalSize;
     m_cachedState.movieLoadType = state.movieLoadType;
     m_cachedState.wirelessPlaybackTargetType = state.wirelessPlaybackTargetType;

Modified: trunk/Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerState.h (274730 => 274731)


--- trunk/Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerState.h	2021-03-19 19:00:45 UTC (rev 274730)
+++ trunk/Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerState.h	2021-03-19 19:21:17 UTC (rev 274731)
@@ -58,7 +58,6 @@
     Optional<WebCore::VideoPlaybackQualityMetrics> videoMetrics;
     Optional<bool> wouldTaintDocumentSecurityOrigin { true };
     bool paused { true };
-    bool loadingProgressed { false };
     bool canSaveMediaData { false };
     bool hasAudio { false };
     bool hasVideo { false };
@@ -93,7 +92,6 @@
         encoder << videoMetrics;
         encoder << wouldTaintDocumentSecurityOrigin;
         encoder << paused;
-        encoder << loadingProgressed;
         encoder << canSaveMediaData;
         encoder << hasAudio;
         encoder << hasVideo;
@@ -213,11 +211,6 @@
         if (!paused)
             return WTF::nullopt;
 
-        Optional<bool> loadingProgressed;
-        decoder >> loadingProgressed;
-        if (!loadingProgressed)
-            return WTF::nullopt;
-
         Optional<bool> canSaveMediaData;
         decoder >> canSaveMediaData;
         if (!canSaveMediaData)
@@ -281,7 +274,6 @@
             WTFMove(*videoMetrics),
             WTFMove(*wouldTaintDocumentSecurityOrigin),
             *paused,
-            *loadingProgressed,
             *canSaveMediaData,
             *hasAudio,
             *hasVideo,
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to