- 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,