Title: [271341] trunk
Revision
271341
Author
[email protected]
Date
2021-01-08 19:11:05 -0800 (Fri, 08 Jan 2021)

Log Message

A video element needs to ignore the request to enter/exit fullscreen before the current fullscreen mode change is completed
https://bugs.webkit.org/show_bug.cgi?id=220466

Reviewed by Jer Noble.

Source/WebCore:

Fix a flaky layout test: media/media-fullscreen-inline.html

* html/HTMLVideoElement.cpp:
(WebCore::HTMLVideoElement::webkitEnterFullscreen):
(WebCore::HTMLVideoElement::webkitExitFullscreen):

LayoutTests:

* media/media-fullscreen-inline-expected.txt:
* media/media-fullscreen.js:
(async beginfullscreen):

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (271340 => 271341)


--- trunk/LayoutTests/ChangeLog	2021-01-09 01:58:21 UTC (rev 271340)
+++ trunk/LayoutTests/ChangeLog	2021-01-09 03:11:05 UTC (rev 271341)
@@ -1,3 +1,14 @@
+2021-01-08  Peng Liu  <[email protected]>
+
+        A video element needs to ignore the request to enter/exit fullscreen before the current fullscreen mode change is completed
+        https://bugs.webkit.org/show_bug.cgi?id=220466
+
+        Reviewed by Jer Noble.
+
+        * media/media-fullscreen-inline-expected.txt:
+        * media/media-fullscreen.js:
+        (async beginfullscreen):
+
 2021-01-08  Brady Eidson  <[email protected]>
 
         BlobLoader lifetime cleanup.

Modified: trunk/LayoutTests/media/media-fullscreen-inline-expected.txt (271340 => 271341)


--- trunk/LayoutTests/media/media-fullscreen-inline-expected.txt	2021-01-09 01:58:21 UTC (rev 271340)
+++ trunk/LayoutTests/media/media-fullscreen-inline-expected.txt	2021-01-09 03:11:05 UTC (rev 271341)
@@ -30,7 +30,7 @@
 * event handler triggered by user gesture
 RUN(mediaElement.webkitEnterFullScreen())
 EVENT(webkitfullscreenchange)
-EXPECTED (mediaElement.webkitDisplayingFullscreen == 'true') OK
+EXPECTED (internals.isChangingPresentationMode(mediaElement) == 'false') OK
 RUN(mediaElement.webkitExitFullScreen())
 EVENT(webkitfullscreenchange)
 

Modified: trunk/LayoutTests/media/media-fullscreen.js (271340 => 271341)


--- trunk/LayoutTests/media/media-fullscreen.js	2021-01-09 01:58:21 UTC (rev 271340)
+++ trunk/LayoutTests/media/media-fullscreen.js	2021-01-09 03:11:05 UTC (rev 271341)
@@ -40,7 +40,8 @@
 
 async function beginfullscreen()
 {
-    await testExpectedEventually("mediaElement.webkitDisplayingFullscreen", true);
+    if (window.internals)
+        await testExpectedEventually("internals.isChangingPresentationMode(mediaElement)", false);
     run("mediaElement.webkitExitFullScreen()");
 }
 

Modified: trunk/Source/WebCore/ChangeLog (271340 => 271341)


--- trunk/Source/WebCore/ChangeLog	2021-01-09 01:58:21 UTC (rev 271340)
+++ trunk/Source/WebCore/ChangeLog	2021-01-09 03:11:05 UTC (rev 271341)
@@ -1,3 +1,16 @@
+2021-01-08  Peng Liu  <[email protected]>
+
+        A video element needs to ignore the request to enter/exit fullscreen before the current fullscreen mode change is completed
+        https://bugs.webkit.org/show_bug.cgi?id=220466
+
+        Reviewed by Jer Noble.
+
+        Fix a flaky layout test: media/media-fullscreen-inline.html
+
+        * html/HTMLVideoElement.cpp:
+        (WebCore::HTMLVideoElement::webkitEnterFullscreen):
+        (WebCore::HTMLVideoElement::webkitExitFullscreen):
+
 2021-01-08  Brady Eidson  <[email protected]>
 
         BlobLoader lifetime cleanup.

Modified: trunk/Source/WebCore/html/HTMLVideoElement.cpp (271340 => 271341)


--- trunk/Source/WebCore/html/HTMLVideoElement.cpp	2021-01-09 01:58:21 UTC (rev 271340)
+++ trunk/Source/WebCore/html/HTMLVideoElement.cpp	2021-01-09 03:11:05 UTC (rev 271341)
@@ -330,8 +330,8 @@
         return { };
 
     // Generate an exception if this isn't called in response to a user gesture, or if the 
-    // element does not support fullscreen.
-    if (!mediaSession().fullscreenPermitted() || !supportsFullscreen(HTMLMediaElementEnums::VideoFullscreenModeStandard))
+    // element does not support fullscreen, or the element is changing fullscreen mode.
+    if (!mediaSession().fullscreenPermitted() || !supportsFullscreen(HTMLMediaElementEnums::VideoFullscreenModeStandard) || isChangingVideoFullscreenMode())
         return Exception { InvalidStateError };
 
     enterFullscreen();
@@ -341,7 +341,7 @@
 void HTMLVideoElement::webkitExitFullscreen()
 {
     ALWAYS_LOG(LOGIDENTIFIER);
-    if (isFullscreen())
+    if (isFullscreen() && !isChangingVideoFullscreenMode())
         exitFullscreen();
 }
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to