Title: [225822] trunk/Source/WebCore
- Revision
- 225822
- Author
- commit-qu...@webkit.org
- Date
- 2017-12-12 16:40:08 -0800 (Tue, 12 Dec 2017)
Log Message
Playing webrtc video tracks should prevent from display to got to sleep
https://bugs.webkit.org/show_bug.cgi?id=180666
Patch by Youenn Fablet <you...@apple.com> on 2017-12-12
Reviewed by Darin Adler.
Done through manual testing by checking screen assertions taken on webrtc sites.
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::shouldDisableSleep const):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (225821 => 225822)
--- trunk/Source/WebCore/ChangeLog 2017-12-13 00:32:57 UTC (rev 225821)
+++ trunk/Source/WebCore/ChangeLog 2017-12-13 00:40:08 UTC (rev 225822)
@@ -1,3 +1,15 @@
+2017-12-12 Youenn Fablet <you...@apple.com>
+
+ Playing webrtc video tracks should prevent from display to got to sleep
+ https://bugs.webkit.org/show_bug.cgi?id=180666
+
+ Reviewed by Darin Adler.
+
+ Done through manual testing by checking screen assertions taken on webrtc sites.
+
+ * html/HTMLMediaElement.cpp:
+ (WebCore::HTMLMediaElement::shouldDisableSleep const):
+
2017-12-12 Dean Jackson <d...@apple.com>
Add CanvasRenderingContext2DBase class and OffscreenCanvasRenderingContext2D
Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (225821 => 225822)
--- trunk/Source/WebCore/html/HTMLMediaElement.cpp 2017-12-13 00:32:57 UTC (rev 225821)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp 2017-12-13 00:40:08 UTC (rev 225822)
@@ -6613,6 +6613,12 @@
m_player->setShouldDisableSleep(shouldDisableSleep == SleepType::Display);
}
+static inline bool isRemoteMediaStreamVideoTrack(RefPtr<MediaStreamTrack>& item)
+{
+ auto* track = item.get();
+ return track->privateTrack().type() == RealtimeMediaSource::Type::Video && !track->isCaptureTrack() && !track->isCanvas();
+}
+
HTMLMediaElement::SleepType HTMLMediaElement::shouldDisableSleep() const
{
// See https://bugs.webkit.org/show_bug.cgi?id=180197 before removing this guard.
@@ -6628,15 +6634,14 @@
return SleepType::System;
#endif
+ bool shouldBeAbleToSleep = !hasVideo() || !hasAudio();
#if ENABLE(MEDIA_STREAM)
- if (m_mediaStreamSrcObject) {
- // Do not block system from sleeping if element is only rendering local (capture) sources.
- if (WTF::allOf(m_mediaStreamSrcObject->getTracks(), [] (RefPtr<MediaStreamTrack>& track) { return track && track->isCaptureTrack(); }))
- return SleepType::None;
- }
+ // Remote media stream video tracks may have their corresponding audio tracks being played outside of the media element. Let's ensure to not IDLE the screen in that case.
+ // FIXME: We should check that audio is being/to be played. Ideally, we would come up with a media stream agnostic heuristisc.
+ shouldBeAbleToSleep = shouldBeAbleToSleep && !(m_mediaStreamSrcObject && WTF::anyOf(m_mediaStreamSrcObject->getTracks(), isRemoteMediaStreamVideoTrack));
#endif
- if (!hasVideo() || !hasAudio())
+ if (shouldBeAbleToSleep)
return SleepType::None;
if (m_elementIsHidden)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes