Changeset 261493 in webkit
- Timestamp:
- May 11, 2020 2:03:24 PM (4 years ago)
- Location:
- trunk
- Files:
-
- 41 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r261492 r261493 1 2020-05-11 Peng Liu <peng.liu6@apple.com> 2 3 Enable the mock video presentation mode in related layout tests and fix test failures 4 https://bugs.webkit.org/show_bug.cgi?id=211645 5 6 Reviewed by Darin Adler. 7 8 * http/tests/media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-live-broadcast-expected.txt: 9 * http/tests/media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-live-broadcast.html: 10 * media/media-fullscreen-inline.html: 11 * media/media-fullscreen-loop-inline-expected.txt: 12 * media/media-fullscreen-loop-inline.html: 13 * media/media-fullscreen-pause-inline-expected.txt: 14 * media/media-fullscreen-pause-inline.html: 15 * media/media-fullscreen-return-to-inline-expected.txt: 16 * media/media-fullscreen-return-to-inline.html: 17 * media/media-fullscreen.js: 18 (async beginfullscreen): 19 (async fullscreenerror): 20 (addEventListeners): 21 (beginfullscreen): Deleted. 22 (fullscreenerror): Deleted. 23 * media/modern-media-controls/css/webkit-cursor-visibility-auto-hide-expected.txt: 24 * media/modern-media-controls/css/webkit-cursor-visibility-auto-hide.html: 25 * media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-drag-expected.txt: 26 * media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-drag-is-prevented-over-button-expected.txt: 27 * media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-drag-is-prevented-over-button.html: 28 * media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-drag.html: 29 * media/modern-media-controls/media-controller/media-controller-click-on-video-background-should-pause-fullscreen-expected.txt: 30 * media/modern-media-controls/media-controller/media-controller-click-on-video-background-should-pause-fullscreen.html: 31 * media/modern-media-controls/media-controller/media-controller-fullscreen-ltr-expected.txt: 32 * media/modern-media-controls/media-controller/media-controller-fullscreen-ltr.html: 33 * media/modern-media-controls/media-controller/media-controller-space-bar-toggle-playback-expected.txt: 34 * media/modern-media-controls/media-controller/media-controller-space-bar-toggle-playback.html: 35 * media/modern-media-controls/tracks-support/tracks-support-show-panel-fullscreen-expected.txt: 36 * media/modern-media-controls/tracks-support/tracks-support-show-panel-fullscreen.html: 37 * media/video-fullscreen-only-playback-expected.txt: 38 * media/video-fullscreen-only-playback.html: 39 * platform/ios/TestExpectations: 40 * platform/mac-wk1/TestExpectations: 41 * platform/mac-wk2/TestExpectations: 42 * platform/mac/TestExpectations: 43 1 44 2020-05-11 Ryan Haddad <ryanhaddad@apple.com> 2 45 -
trunk/LayoutTests/http/tests/media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-live-broadcast-expected.txt
r228097 r261493 4 4 5 5 6 PASS media.webkitDisplayingFullscreen became true 6 7 PASS media.duration became Number.POSITIVE_INFINITY 7 8 PASS mediaController.controls.rewindButton.enabled is false -
trunk/LayoutTests/http/tests/media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-live-broadcast.html
r228445 r261493 16 16 17 17 media.addEventListener("webkitfullscreenchange", () => { 18 if (!media.webkitDisplayingFullscreen) 19 return; 18 shouldBecomeEqual("media.webkitDisplayingFullscreen", "true", () => { 19 shouldBecomeEqual("media.duration", "Number.POSITIVE_INFINITY", () => { 20 shouldBeFalse("mediaController.controls.rewindButton.enabled"); 21 shouldBeFalse("mediaController.controls.forwardButton.enabled"); 22 shouldBe("mediaController.controls.timeControl.parent", "null"); 23 shouldBe("mediaController.controls.statusLabel.parent", "mediaController.controls.bottomControlsBar"); 20 24 21 shouldBecomeEqual("media.duration", "Number.POSITIVE_INFINITY", () => { 22 shouldBeFalse("mediaController.controls.rewindButton.enabled"); 23 shouldBeFalse("mediaController.controls.forwardButton.enabled"); 24 shouldBe("mediaController.controls.timeControl.parent", "null"); 25 shouldBe("mediaController.controls.statusLabel.parent", "mediaController.controls.bottomControlsBar"); 26 27 debug(""); 28 media.remove(); 29 shadowRoot.host.remove(); 30 finishJSTest(); 25 debug(""); 26 media.remove(); 27 shadowRoot.host.remove(); 28 finishJSTest(); 29 }); 31 30 }); 32 31 }); -
trunk/LayoutTests/media/media-fullscreen-inline.html
r117326 r261493 1 <!DOCTYPE html> 1 2 <html> 2 3 <head> -
trunk/LayoutTests/media/media-fullscreen-loop-inline-expected.txt
r212314 r261493 1 1 2 RUN(internals.settings.setAllowsInlineMediaPlayback(false)) 3 RUN(internals.settings.setAllowsInlineMediaPlaybackAfterFullscreen(true)) 4 RUN(internals.settings.setFullScreenEnabled(false)) 5 RUN(internals.setMediaElementRestrictions(video, "NoRestrictions")) 2 Test that a <video> keeps playing and looping after exiting fullscreen when the internal property "allowsInlineMediaPlaybackAfterFullscreen" is true. 3 6 4 RUN(video.loop = true) 7 5 RUN(video.src = findMediaFile("video", "content/test")) 6 EVENT(canplaythrough) 8 7 RUN(video.play()) 9 EVENT(webkitbeginfullscreen) 8 Wait to enter fullscreen 9 EVENT(webkitpresentationmodechanged) 10 EXPECTED (video.webkitDisplayingFullscreen == 'true') OK 11 Entered fullscreen 10 12 RUN(video.currentTime = 5) 11 13 RUN(video.webkitExitFullscreen()) 12 EVENT(webkitendfullscreen) 14 Wait to exit fullscreen 15 EVENT(webkitpresentationmodechanged) 16 EXPECTED (video.webkitDisplayingFullscreen == 'false') OK 17 Exited fullscreen 13 18 EXPECTED (video.paused == 'false') OK 14 19 RUN(video.ontimeupdate = timeupdate) 20 Looped 15 21 RUN(video.ontimeupdate = null) 16 Looped17 22 EXPECTED (video.playsInline == 'false') OK 18 23 EXPECTED (video.paused == 'false') OK -
trunk/LayoutTests/media/media-fullscreen-loop-inline.html
r212314 r261493 2 2 <html> 3 3 <head> 4 <title>media-fullscreen-return-to-inline</title> 5 4 <title>media-fullscreen-loop-inline</title> 6 5 <script src="video-test.js"></script> 7 6 <script src="media-file.js"></script> 8 9 7 <script> 10 8 function go() 11 9 { 10 if (!window.internals) { 11 failTest('This test requires window.internals.'); 12 return; 13 } 14 12 15 findMediaElement(); 13 run('internals.settings.setAllowsInlineMediaPlayback(false)'); 14 run('internals.settings.setAllowsInlineMediaPlaybackAfterFullscreen(true)'); 15 run('internals.settings.setFullScreenEnabled(false)'); 16 run('internals.setMediaElementRestrictions(video, "NoRestrictions")'); 16 17 internals.settings.setAllowsInlineMediaPlayback(false); 18 internals.settings.setAllowsInlineMediaPlaybackAfterFullscreen(true); 19 // Disable the Fullscreen API (element fullscreen) support 20 internals.settings.setFullScreenEnabled(false); 21 internals.setMockVideoPresentationModeEnabled(true); 22 internals.setMediaElementRestrictions(video, "NoRestrictions"); 23 24 waitForEventOnce('canplaythrough', canplaythrough); 17 25 run('video.loop = true'); 18 26 run('video.src = findMediaFile("video", "content/test")'); 19 waitForEventOnce('webkitbeginfullscreen', beginfullscreen);20 run('video.play()');21 27 } 22 28 23 function beginfullscreen()29 function canplaythrough() 24 30 { 31 waitForEventOnce('webkitpresentationmodechanged', beginfullscreen); 32 run('video.play()'); 33 consoleWrite("Wait to enter fullscreen"); 34 } 35 36 async function beginfullscreen() 37 { 38 await testExpectedEventually('video.webkitDisplayingFullscreen', true); 39 consoleWrite("Entered fullscreen"); 25 40 run('video.currentTime = 5'); 26 41 run('video.webkitExitFullscreen()'); 27 waitForEventOnce('webkitendfullscreen', endfullscreen); 42 waitForEventOnce('webkitpresentationmodechanged', endfullscreen); 43 consoleWrite("Wait to exit fullscreen"); 28 44 } 29 45 30 function endfullscreen()46 async function endfullscreen() 31 47 { 48 await testExpectedEventually('video.webkitDisplayingFullscreen', false); 49 consoleWrite("Exited fullscreen"); 32 50 testExpected('video.paused', false); 33 51 run('video.ontimeupdate = timeupdate'); 34 waitForEventAndFail('webkit beginfullscreen');52 waitForEventAndFail('webkitpresentationmodechanged'); 35 53 } 36 54 … … 38 56 { 39 57 if (video.currentTime == 0) { 58 consoleWrite("Looped"); 40 59 run('video.ontimeupdate = null'); 41 consoleWrite("Looped");42 60 testExpected('video.playsInline', false); 43 61 setTimeout(function loopCompleted() { … … 47 65 } 48 66 } 49 50 67 </script> 51 52 68 </head> 53 54 69 <body onload="go()"> 55 70 <video controls></video> 71 <p>Test that a <video> keeps playing and looping after exiting fullscreen when the internal property "allowsInlineMediaPlaybackAfterFullscreen" is true.</p> 56 72 </body> 57 73 </html> -
trunk/LayoutTests/media/media-fullscreen-pause-inline-expected.txt
r218847 r261493 1 1 2 RUN(internals.settings.setAllowsInlineMediaPlayback(false)) 3 RUN(internals.settings.setAllowsInlineMediaPlaybackAfterFullscreen(true)) 4 RUN(internals.settings.setFullScreenEnabled(false)) 5 RUN(internals.setMediaElementRestrictions(video, "NoRestrictions")) 2 Test that a <video> keeps playing after exiting fullscreen when the internal property "allowsInlineMediaPlaybackAfterFullscreen" is true. 3 6 4 RUN(video.src = findMediaFile("video", "content/test")) 5 EVENT(canplaythrough) 7 6 RUN(video.play().then(playing);) 8 7 EXPECTED (video.webkitDisplayingFullscreen == 'true') OK 9 8 RUN(video.webkitExitFullscreen()) 10 EVENT(webkitendfullscreen) 9 EVENT(webkitpresentationmodechanged) 10 EXPECTED (video.webkitDisplayingFullscreen == 'false') OK 11 11 EXPECTED (video.paused == 'false') OK 12 12 RUN(video.pause()) -
trunk/LayoutTests/media/media-fullscreen-pause-inline.html
r218847 r261493 2 2 <html> 3 3 <head> 4 <title>media-fullscreen-return-to-inline</title> 5 4 <title>media-fullscreen-pause-inline</title> 6 5 <script src="video-test.js"></script> 7 6 <script src="media-file.js"></script> … … 10 9 function go() 11 10 { 11 if (!window.internals) { 12 failTest('This test requires window.internals.'); 13 return; 14 } 15 12 16 findMediaElement(); 13 run('internals.settings.setAllowsInlineMediaPlayback(false)'); 14 run('internals.settings.setAllowsInlineMediaPlaybackAfterFullscreen(true)'); 15 run('internals.settings.setFullScreenEnabled(false)'); 16 run('internals.setMediaElementRestrictions(video, "NoRestrictions")'); 17 18 internals.settings.setAllowsInlineMediaPlayback(false); 19 internals.settings.setAllowsInlineMediaPlaybackAfterFullscreen(true); 20 // Disable the Fullscreen API (element fullscreen) support 21 internals.settings.setFullScreenEnabled(false); 22 internals.setMockVideoPresentationModeEnabled(true); 23 internals.setMediaElementRestrictions(video, "NoRestrictions"); 24 25 waitForEventOnce('canplaythrough', canplaythrough); 17 26 run('video.src = findMediaFile("video", "content/test")'); 27 } 28 29 function canplaythrough() 30 { 18 31 run('video.play().then(playing);'); 19 32 } 20 33 21 function playing()34 async function playing() 22 35 { 23 testExpected('video.webkitDisplayingFullscreen', true);24 waitForEventOnce('webkit endfullscreen', endfullscreen);36 await testExpectedEventually('video.webkitDisplayingFullscreen', true); 37 waitForEventOnce('webkitpresentationmodechanged', endfullscreen); 25 38 run('video.webkitExitFullscreen()'); 26 39 } 27 40 28 function endfullscreen()41 async function endfullscreen() 29 42 { 43 await testExpectedEventually('video.webkitDisplayingFullscreen', false); 30 44 testExpected('video.paused', false); 45 waitForEventOnce('pause', paused); 31 46 run('video.pause()'); 32 waitForEventOnce('pause', paused);33 47 } 34 48 … … 36 50 { 37 51 testExpected('video.paused', true); 38 setTimeout(function(){ run('video.play().then(playingAgain)'); }, 0)52 setTimeout(function(){ run('video.play().then(playingAgain)'); }, 0); 39 53 } 40 54 41 function playingAgain()55 async function playingAgain() 42 56 { 43 44 testExpected('video.webkitDisplayingFullscreen', true); 57 await testExpectedEventually('video.webkitDisplayingFullscreen', true); 45 58 endTest(); 46 59 } 47 48 60 </script> 49 50 61 </head> 51 52 62 <body onload="go()"> 53 63 <video controls></video> 64 <p>Test that a <video> keeps playing after exiting fullscreen when the internal property "allowsInlineMediaPlaybackAfterFullscreen" is true.</p> 54 65 </body> 55 66 </html> -
trunk/LayoutTests/media/media-fullscreen-return-to-inline-expected.txt
r201187 r261493 1 1 2 RUN(internals.settings.setAllowsInlineMediaPlayback(false)) 3 RUN(internals.settings.setAllowsInlineMediaPlaybackAfterFullscreen(false)) 2 Test that a <video> pauses after exiting fullscreen when the internal property "allowsInlineMediaPlaybackAfterFullscreen" is false. 3 4 4 RUN(video.src = findMediaFile("video", "content/test")) 5 5 EVENT(canplaythrough) 6 6 RUN(video.play()) 7 EVENT(webkitfullscreenchange) 7 EVENT(webkitpresentationmodechanged) 8 EXPECTED (video.webkitDisplayingFullscreen == 'true') OK 8 9 RUN(video.webkitExitFullscreen()) 9 10 EVENT(pause) 10 RUN(internals.settings.setAllowsInlineMediaPlaybackAfterFullscreen(true)) 11 EXPECTED (video.webkitDisplayingFullscreen == 'false') OK 12 EXPECTED (video.paused == 'true') OK 11 13 RUN(video.play()) 12 EVENT(webkitfullscreenchange) 14 EVENT(webkitpresentationmodechanged) 15 EXPECTED (video.webkitDisplayingFullscreen == 'true') OK 13 16 RUN(video.webkitExitFullscreen()) 14 EVENT(webkitfullscreenchange) 17 EVENT(webkitpresentationmodechanged) 18 EXPECTED (video.webkitDisplayingFullscreen == 'false') OK 15 19 EXPECTED (video.paused == 'false') OK 16 20 END OF TEST -
trunk/LayoutTests/media/media-fullscreen-return-to-inline.html
r210959 r261493 10 10 function go() 11 11 { 12 if (!window.internals) { 13 failTest('This test requires window.internals.'); 14 return; 15 } 16 12 17 findMediaElement(); 13 run('internals.settings.setAllowsInlineMediaPlayback(false)'); 14 run('internals.settings.setAllowsInlineMediaPlaybackAfterFullscreen(false)'); 18 19 internals.settings.setAllowsInlineMediaPlayback(false); 20 internals.settings.setAllowsInlineMediaPlaybackAfterFullscreen(false); 21 // Disable the Fullscreen API (element fullscreen) support 22 internals.settings.setFullScreenEnabled(false); 23 internals.setMockVideoPresentationModeEnabled(true); 24 25 waitForEventOnce('canplaythrough', canplaythrough); 15 26 run('video.src = findMediaFile("video", "content/test")'); 16 waitForEventOnce('canplaythrough', canplaythrough);17 27 } 18 28 19 29 function canplaythrough() 20 30 { 31 waitForEventOnce('webkitpresentationmodechanged', beginfullscreen1); 21 32 runWithKeyDown('video.play()'); 22 waitForEventOnce('webkitfullscreenchange', beginfullscreen1);23 33 } 24 34 25 function beginfullscreen1()35 async function beginfullscreen1() 26 36 { 37 await testExpectedEventually('video.webkitDisplayingFullscreen', true); 38 waitForEventOnce('pause', pause); 27 39 run('video.webkitExitFullscreen()'); 28 waitForEventOnce('pause', pause);29 40 } 30 41 31 function pause()42 async function pause() 32 43 { 33 run('internals.settings.setAllowsInlineMediaPlaybackAfterFullscreen(true)'); 44 await testExpectedEventually('video.webkitDisplayingFullscreen', false); 45 testExpected('video.paused', true); 46 47 internals.settings.setAllowsInlineMediaPlaybackAfterFullscreen(true); 48 49 waitForEventOnce('webkitpresentationmodechanged', beginfullscreen2); 34 50 runWithKeyDown('video.play()'); 35 waitForEventOnce('webkitfullscreenchange', beginfullscreen2);36 51 } 37 52 38 function beginfullscreen2()53 async function beginfullscreen2() 39 54 { 55 await testExpectedEventually('video.webkitDisplayingFullscreen', true); 56 waitForEventOnce('webkitpresentationmodechanged', endfullscreen); 40 57 run('video.webkitExitFullscreen()'); 41 waitForEventOnce('webkitfullscreenchange', endfullscreen);42 58 } 43 59 44 function endfullscreen()60 async function endfullscreen() 45 61 { 62 await testExpectedEventually('video.webkitDisplayingFullscreen', false); 46 63 testExpected('video.paused', false); 47 64 endTest(); 48 65 } 49 66 </script> 50 51 67 </head> 52 68 53 69 <body onload="go()"> 54 <video controls></video> 70 <video controls loop></video> 71 <p>Test that a <video> pauses after exiting fullscreen when the internal property "allowsInlineMediaPlaybackAfterFullscreen" is false.</p> 55 72 </body> 56 73 </html> -
trunk/LayoutTests/media/media-fullscreen.js
r245467 r261493 39 39 } 40 40 41 function beginfullscreen()41 async function beginfullscreen() 42 42 { 43 testExpected("mediaElement.webkitDisplayingFullscreen", true);43 await testExpectedEventually("mediaElement.webkitDisplayingFullscreen", true); 44 44 run("mediaElement.webkitExitFullScreen()"); 45 45 } … … 50 50 } 51 51 52 function fullscreenerror()52 async function fullscreenerror() 53 53 { 54 54 var movie = movieInfo.movies[movieInfo.current]; … … 56 56 failTest("Unexpected fullscreenerror event"); 57 57 } else { 58 testExpected("mediaElement.webkitDisplayingFullscreen", false);58 await testExpectedEventually("mediaElement.webkitDisplayingFullscreen", false); 59 59 openNextMovie(); 60 60 } … … 139 139 waitForEvent('webkitfullscreenerror', fullscreenerror); 140 140 } 141 -
trunk/LayoutTests/media/modern-media-controls/css/webkit-cursor-visibility-auto-hide-expected.txt
r219625 r261493 7 7 PASS getComputedStyle(window.internals.shadowRoot(media).querySelector('.media-controls-container')).webkitCursorVisibility is "auto" 8 8 9 PASS media.webkitDisplayingFullscreen istrue9 PASS media.webkitDisplayingFullscreen became true 10 10 PASS getComputedStyle(window.internals.shadowRoot(media).querySelector('.media-controls-container')).webkitCursorVisibility is "auto-hide" 11 11 -
trunk/LayoutTests/media/modern-media-controls/css/webkit-cursor-visibility-auto-hide.html
r219625 r261493 18 18 19 19 media.addEventListener("webkitfullscreenchange", () => { 20 shouldBeTrue("media.webkitDisplayingFullscreen"); 21 shouldBeEqualToString("getComputedStyle(window.internals.shadowRoot(media).querySelector('.media-controls-container')).webkitCursorVisibility", "auto-hide"); 22 debug(""); 23 button.remove(); 24 media.remove(); 25 finishJSTest(); 20 shouldBecomeEqual("media.webkitDisplayingFullscreen", "true", () => { 21 shouldBeEqualToString("getComputedStyle(window.internals.shadowRoot(media).querySelector('.media-controls-container')).webkitCursorVisibility", "auto-hide"); 22 debug(""); 23 button.remove(); 24 media.remove(); 25 finishJSTest(); 26 }); 26 27 }); 27 28 -
trunk/LayoutTests/media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-drag-expected.txt
r217659 r261493 4 4 5 5 6 PASS media.webkitDisplayingFullscreen became true 6 7 PASS !!mediaControls.querySelector('.buttons-container.left') became true 7 8 PASS mediaControls.querySelector('.buttons-container.left').style.width became "118px" -
trunk/LayoutTests/media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-drag-is-prevented-over-button-expected.txt
r217659 r261493 4 4 5 5 6 PASS media.webkitDisplayingFullscreen became true 6 7 PASS !!mediaControls.querySelector('.buttons-container.left') became true 7 8 PASS mediaControls.querySelector('.buttons-container.left').style.width became "118px" -
trunk/LayoutTests/media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-drag-is-prevented-over-button.html
r217659 r261493 18 18 19 19 media.addEventListener("webkitfullscreenchange", () => { 20 if (media.webkitDisplayingFullscreen){20 shouldBecomeEqual("media.webkitDisplayingFullscreen", "true", () => { 21 21 mediaControls = shadowRoot.lastChild; 22 22 shouldBecomeEqual("!!mediaControls.querySelector('.buttons-container.left')", "true", () => { … … 34 34 }); 35 35 }); 36 } 36 }); 37 37 }); 38 38 -
trunk/LayoutTests/media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-drag.html
r217659 r261493 18 18 19 19 media.addEventListener("webkitfullscreenchange", () => { 20 if (media.webkitDisplayingFullscreen){20 shouldBecomeEqual("media.webkitDisplayingFullscreen", "true", () => { 21 21 mediaControls = shadowRoot.lastChild; 22 22 shouldBecomeEqual("!!mediaControls.querySelector('.buttons-container.left')", "true", () => { … … 34 34 }); 35 35 }); 36 } 36 }); 37 37 }); 38 38 -
trunk/LayoutTests/media/modern-media-controls/media-controller/media-controller-click-on-video-background-should-pause-fullscreen-expected.txt
r212872 r261493 7 7 8 8 Entering fullscreen 9 PASS media.webkitDisplayingFullscreen istrue9 PASS media.webkitDisplayingFullscreen became true 10 10 PASS media.paused is false 11 11 -
trunk/LayoutTests/media/modern-media-controls/media-controller/media-controller-click-on-video-background-should-pause-fullscreen.html
r212872 r261493 23 23 24 24 media.addEventListener("webkitfullscreenchange", () => { 25 shouldBe True("media.webkitDisplayingFullscreen");26 shouldBeFalse("media.paused");25 shouldBecomeEqual("media.webkitDisplayingFullscreen", "true", () => { 26 shouldBeFalse("media.paused"); 27 27 28 const bounds = media.getBoundingClientRect();29 debug("");30 debug("Clicking on video background");31 eventSender.mouseMoveTo(bounds.left + 5, bounds.top + 5);32 eventSender.mouseDown();33 eventSender.mouseUp();28 const bounds = media.getBoundingClientRect(); 29 debug(""); 30 debug("Clicking on video background"); 31 eventSender.mouseMoveTo(bounds.left + 5, bounds.top + 5); 32 eventSender.mouseDown(); 33 eventSender.mouseUp(); 34 34 35 shouldBeTrue("media.paused");35 shouldBeTrue("media.paused"); 36 36 37 debug(""); 38 media.remove(); 39 finishJSTest(); 37 debug(""); 38 media.remove(); 39 finishJSTest(); 40 }); 40 41 }); 41 42 -
trunk/LayoutTests/media/modern-media-controls/media-controller/media-controller-fullscreen-ltr-expected.txt
r209170 r261493 4 4 5 5 6 PASS media.webkitDisplayingFullscreen became true 6 7 Media entered fullscreen 7 8 PASS mediaControlsElement.classList.contains('uses-ltr-user-interface-layout-direction') is true -
trunk/LayoutTests/media/modern-media-controls/media-controller/media-controller-fullscreen-ltr.html
r211723 r261493 16 16 17 17 media.addEventListener("webkitfullscreenchange", function() { 18 if (media.webkitDisplayingFullscreen){18 shouldBecomeEqual("media.webkitDisplayingFullscreen", "true", () => { 19 19 window.requestAnimationFrame(() => { 20 20 window.requestAnimationFrame(() => { … … 45 45 }); 46 46 }); 47 } 47 }); 48 48 }); 49 49 -
trunk/LayoutTests/media/modern-media-controls/media-controller/media-controller-space-bar-toggle-playback-expected.txt
r225265 r261493 10 10 11 11 Obtained a 'webkitfullscreenchange' event. 12 media.webkitDisplayingFullscreen = true. 12 PASS media.webkitDisplayingFullscreen became true 13 13 PASS media.paused is false 14 14 … … 22 22 23 23 Obtained a 'webkitfullscreenchange' event. 24 media.webkitDisplayingFullscreen = false.25 24 26 25 PASS successfullyParsed is true -
trunk/LayoutTests/media/modern-media-controls/media-controller/media-controller-space-bar-toggle-playback.html
r225265 r261493 17 17 debug(""); 18 18 debug("Obtained a 'webkitfullscreenchange' event."); 19 debug(`media.webkitDisplayingFullscreen = ${media.webkitDisplayingFullscreen}.`);20 19 21 if (media.webkitDisplayingFullscreen) { 22 shouldBeFalse("media.paused"); 23 pressSpace(); 20 if (playCount == 1) { 21 shouldBecomeEqual('media.webkitDisplayingFullscreen', 'true', () => { 22 shouldBeFalse("media.paused"); 23 pressSpace(); 24 }); 24 25 } else 25 26 endTest(); … … 46 47 pressSpace(); 47 48 }); 48 49 49 50 50 function enterFullscreen() { -
trunk/LayoutTests/media/modern-media-controls/tracks-support/tracks-support-show-panel-fullscreen-expected.txt
r228010 r261493 6 6 PASS internals.shadowRoot(media).querySelector("button.fullscreen") became different from null 7 7 PASS internals.shadowRoot(media).querySelector("button.fullscreen").getBoundingClientRect().width became different from 0 8 PASS media.webkitDisplayingFullscreen became true 8 9 PASS internals.shadowRoot(media).querySelector("button.tracks") became different from null 9 10 PASS internals.shadowRoot(media).querySelector("button.tracks").getBoundingClientRect().width became different from 0 -
trunk/LayoutTests/media/modern-media-controls/tracks-support/tracks-support-show-panel-fullscreen.html
r228010 r261493 13 13 14 14 media.addEventListener("webkitfullscreenchange", () => { 15 if (!media.webkitDisplayingFullscreen) 16 return; 17 18 shouldBecomeDifferent(`internals.shadowRoot(media).querySelector("button.tracks")`, "null", () => { 19 shouldBecomeDifferent(`internals.shadowRoot(media).querySelector("button.tracks").getBoundingClientRect().width`, "0", () => { 20 shouldBecomeEqual(`internals.shadowRoot(media).querySelector("button.tracks").getBoundingClientRect().right`, "582", () => { 21 pressOnElement(internals.shadowRoot(media).querySelector("button.tracks")); 22 shouldBecomeDifferent(`internals.shadowRoot(media).querySelector('.tracks-panel')`, "null", () => { 23 shouldBeEqualToString("internals.shadowRoot(media).querySelector('.tracks-panel').style.right", "218px"); 24 shouldBeEqualToString("internals.shadowRoot(media).querySelector('.tracks-panel').style.bottom", "101px"); 25 debug(""); 26 media.remove(); 27 finishJSTest(); 15 shouldBecomeEqual("media.webkitDisplayingFullscreen", "true", () => { 16 shouldBecomeDifferent(`internals.shadowRoot(media).querySelector("button.tracks")`, "null", () => { 17 shouldBecomeDifferent(`internals.shadowRoot(media).querySelector("button.tracks").getBoundingClientRect().width`, "0", () => { 18 shouldBecomeEqual(`internals.shadowRoot(media).querySelector("button.tracks").getBoundingClientRect().right`, "582", () => { 19 pressOnElement(internals.shadowRoot(media).querySelector("button.tracks")); 20 shouldBecomeDifferent(`internals.shadowRoot(media).querySelector('.tracks-panel')`, "null", () => { 21 shouldBeEqualToString("internals.shadowRoot(media).querySelector('.tracks-panel').style.right", "218px"); 22 shouldBeEqualToString("internals.shadowRoot(media).querySelector('.tracks-panel').style.bottom", "101px"); 23 debug(""); 24 media.remove(); 25 finishJSTest(); 26 }); 28 27 }); 29 28 }); -
trunk/LayoutTests/media/video-fullscreen-only-playback-expected.txt
r252676 r261493 1 1 2 Test play() when <video> playback requires fullscreen.2 Test the play() function of <video> when fullscreen is required. 3 3 4 RUN(internals.settings.setAllowsInlineMediaPlayback(false))5 4 6 5 EVENT(canplaythrough) 7 6 EXPECTED (video.webkitSupportsFullscreen == 'true') OK 8 7 EXPECTED (video.webkitDisplayingFullscreen == 'false') OK 9 10 ** Clicking 'play' button... 8 RUN(video.play()) 11 9 EVENT(playing) 10 EXPECTED (video.webkitDisplayingFullscreen == 'true') OK 12 11 13 12 ** Entered fullscreen 14 EXPECTED (video.webkitDisplayingFullscreen == 'true') OK15 13 RUN(video.webkitExitFullScreen()) 14 EVENT(webkitpresentationmodechanged) 15 EXPECTED (video.webkitDisplayingFullscreen == 'false') OK 16 16 17 17 ** Exited fullscreen -
trunk/LayoutTests/media/video-fullscreen-only-playback.html
r252676 r261493 1 <! -- webkit-test-runner [ enableModernMediaControls=false ] -->1 <!DOCTYPE html><!-- webkit-test-runner [ enableModernMediaControls=false ] --> 2 2 <html> 3 3 <head> … … 6 6 <script src=media-controls.js></script> 7 7 <script> 8 9 function fullscreenchange()10 {11 if (!document.webkitIsFullScreen)12 endfullscreen();13 }14 15 function playing()16 {17 consoleWrite("<br>** Entered fullscreen");18 testExpected("video.webkitDisplayingFullscreen", true);19 run("video.webkitExitFullScreen()");20 }21 22 function endfullscreen()23 {24 consoleWrite("<br>** Exited fullscreen");25 endTest();26 }27 28 function canplaythrough()29 {30 testExpected("video.webkitSupportsFullscreen", true);31 testExpected("video.webkitDisplayingFullscreen", false);32 33 consoleWrite("<br>** Clicking \'play\' button...");34 35 try {36 clickPlayButton(video);37 } catch (exception) {38 failTest(exception.description);39 return;40 }41 }42 43 44 8 function start() 45 9 { … … 52 16 waitForEvent("canplaythrough", canplaythrough); 53 17 waitForEvent('playing', playing); 54 55 video.addEventListener('webkitendfullscreen', endfullscreen, true);56 video.addEventListener('webkitfullscreenchange', fullscreenchange, true);57 58 18 video.src = findMediaFile("video", "content/test"); 59 19 60 run("internals.settings.setAllowsInlineMediaPlayback(false)"); 20 internals.settings.setAllowsInlineMediaPlayback(false); 21 // Disable the Fullscreen API (element fullscreen) support 22 internals.settings.setFullScreenEnabled(false); 23 internals.setMockVideoPresentationModeEnabled(true); 24 61 25 consoleWrite(""); 26 } 27 28 function canplaythrough() 29 { 30 testExpected("video.webkitSupportsFullscreen", true); 31 testExpected("video.webkitDisplayingFullscreen", false); 32 33 try { 34 runWithKeyDown("video.play()"); 35 } catch (exception) { 36 failTest(exception.description); 37 return; 38 } 39 } 40 41 async function playing() 42 { 43 await testExpectedEventually("video.webkitDisplayingFullscreen", true); 44 consoleWrite("<br>** Entered fullscreen"); 45 waitForEvent('webkitpresentationmodechanged', endfullscreen); 46 run("video.webkitExitFullScreen()"); 47 } 48 49 async function endfullscreen() 50 { 51 await testExpectedEventually("video.webkitDisplayingFullscreen", false); 52 consoleWrite("<br>** Exited fullscreen"); 53 endTest(); 62 54 } 63 55 </script> … … 66 58 <body onload="start()"> 67 59 <video controls></video> 68 <p>Test play() when <video> playback requires fullscreen.</p>60 <p>Test the play() function of <video> when fullscreen is required.</p> 69 61 </body> 70 62 </html> -
trunk/LayoutTests/platform/ios/TestExpectations
r261373 r261493 2431 2431 2432 2432 media/media-controls-accessibility.html [ Timeout ] 2433 media/media-fullscreen-return-to-inline.html2434 2433 media/no-autoplay-with-user-gesture-requirement.html 2435 2434 media/video-controls-drag.html … … 2568 2567 webkit.org/b/163291 media/video-controls-transformed.html [ Failure ] 2569 2568 webkit.org/b/163291 media/video-controls-visible-audio-only.html [ Failure ] 2570 webkit.org/b/163291 media/video-fullscreen-only-playback.html [ Failure ]2571 2569 webkit.org/b/163291 media/video-play-audio-require-user-gesture.html [ Failure ] 2572 2570 webkit.org/b/163291 media/video-play-require-user-gesture.html … … 3156 3154 # <rdar://problem/36455339> LayoutTest compositing/ios/overflow-scroll-touch-tiles.html is a flaky failure 3157 3155 compositing/ios/overflow-scroll-touch-tiles.html [ Pass Failure ] 3158 3159 # <rdar://problem/41546970> REGRESSION: LayoutTest media/media-fullscreen-loop-inline.html is a flaky timeout3160 media/media-fullscreen-loop-inline.html [ Pass Timeout ]3161 3162 webkit.org/b/187618 [ Release ] media/media-fullscreen-pause-inline.html [ Pass Failure ]3163 3156 3164 3157 # Disabled globally. -
trunk/LayoutTests/platform/mac-wk1/TestExpectations
r261477 r261493 617 617 618 618 webkit.org/b/168409 media/modern-media-controls/airplay-button/airplay-button.html [ Pass Timeout ] 619 webkit.org/b/175195 media/modern-media-controls/css/webkit-cursor-visibility-auto-hide.html [ Pass Failure ]620 619 webkit.org/b/168265 media/modern-media-controls/forward-button/forward-button.html [ Pass Timeout ] 621 620 -
trunk/LayoutTests/platform/mac-wk2/TestExpectations
r261380 r261493 342 342 webkit.org/b/151709 [ Release ] http/tests/xmlhttprequest/workers/methods.html [ Pass Timeout ] 343 343 344 # Video fullscreen is not implemented for mac wk2 in webkittestrunner345 media/media-fullscreen-loop-inline.html [ Skip ]346 media/media-fullscreen-pause-inline.html [ Skip ]347 348 344 ### END OF (1) Classified failures with bug reports 349 345 ######################################## -
trunk/LayoutTests/platform/mac/TestExpectations
r261492 r261493 760 760 webkit.org/b/135160 media/track/track-in-band-subtitles-too-large.html [ Failure ] 761 761 webkit.org/b/135160 media/track/track-long-word-container-sizing.html [ Failure ] 762 webkit.org/b/137311 media/video-fullscreen-only-playback.html [ Pass Timeout Crash ]763 762 webkit.org/b/139789 media/media-controls-timeline-updates.html [ Pass Failure ] 764 763 webkit.org/b/139825 media/video-seek-past-end-paused.html [ Pass Timeout ] … … 1642 1641 webkit.org/b/195466 imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/error-codes/error.html [ Pass Failure ] 1643 1642 1644 webkit.org/b/193399 media/media-fullscreen-return-to-inline.html [ Pass Timeout ]1645 1646 1643 http/tests/websocket/tests/hybi/handshake-ok-with-legacy-sec-websocket-response-headers.html [ Pass Failure ] 1647 1644 … … 1949 1946 webkit.org/b/210046 [ Release ] storage/indexeddb/value-cursor-cycle.html [ Pass Failure ] 1950 1947 1951 webkit.org/b/182571 [ Debug ] media/modern-media-controls/tracks-support/tracks-support-show-panel-fullscreen.html [ Pass Timeout ]1952 1953 1948 webkit.org/b/207160 css2.1/20110323/replaced-intrinsic-ratio-001.htm [ Pass Failure ] 1954 1949 -
trunk/Source/WebCore/ChangeLog
r261488 r261493 1 2020-05-11 Peng Liu <peng.liu6@apple.com> 2 3 Enable the mock video presentation mode in related layout tests and fix test failures 4 https://bugs.webkit.org/show_bug.cgi?id=211645 5 6 Reviewed by Darin Adler. 7 8 Clean up the internal states of video element regarding video presentation mode 9 to simplify the task to write reliable layout tests for video fullscreen and 10 Picture-in-Picture. 11 12 * html/HTMLMediaElement.cpp: 13 (WebCore::HTMLMediaElement::enterFullscreen): 14 Update the states after we are sure the video element will enter fullscreen. 15 16 (WebCore::HTMLMediaElement::exitFullscreen): 17 Remove the unnecessary "fullscreenModeChanged(VideoFullscreenModeNone)". 18 19 * html/HTMLMediaElement.h: 20 (WebCore::HTMLMediaElement::waitingToEnterFullscreen): 21 22 * html/HTMLVideoElement.cpp: 23 (WebCore::HTMLVideoElement::webkitDisplayingFullscreen): 24 The function webkitDisplayingFullscreen() will return true after the process 25 to enter fullscreen is completed. 26 27 * html/HTMLVideoElement.h: 28 Expose didBecomeFullscreenElement() when VIDEO_PRESENTATION_MODE is enabled. 29 1 30 2020-05-11 Antoine Quint <graouts@apple.com> 2 31 -
trunk/Source/WebCore/html/HTMLMediaElement.cpp
r261409 r261493 5990 5990 return; 5991 5991 5992 m_temporarilyAllowingInlinePlaybackAfterFullscreen = false;5993 m_waitingToEnterFullscreen = true;5994 5995 5992 #if ENABLE(FULLSCREEN_API) && ENABLE(VIDEO_USES_ELEMENT_FULLSCREEN) 5996 5993 if (document().settings().fullScreenEnabled() && mode == VideoFullscreenModeStandard) { 5994 m_temporarilyAllowingInlinePlaybackAfterFullscreen = false; 5995 m_waitingToEnterFullscreen = true; 5997 5996 document().fullscreenManager().requestFullscreenForElement(this, FullscreenManager::ExemptIFrameAllowFullscreenRequirement); 5998 5997 return; … … 6006 6005 } 6007 6006 6008 fullscreenModeChanged(mode);6009 configureMediaControls();6010 6007 if (is<HTMLVideoElement>(*this)) { 6011 6008 HTMLVideoElement& asVideo = downcast<HTMLVideoElement>(*this); 6012 if (document().page()->chrome().client().supportsVideoFullscreen(m_videoFullscreenMode)) { 6013 INFO_LOG(LOGIDENTIFIER, "Entering fullscreen mode ", m_videoFullscreenMode, ", m_videoFullscreenStandby = ", m_videoFullscreenStandby); 6009 if (document().page()->chrome().client().supportsVideoFullscreen(mode)) { 6010 INFO_LOG(LOGIDENTIFIER, "Entering fullscreen mode ", mode, ", m_videoFullscreenStandby = ", m_videoFullscreenStandby); 6011 6012 m_temporarilyAllowingInlinePlaybackAfterFullscreen = false; 6013 m_waitingToEnterFullscreen = true; 6014 fullscreenModeChanged(mode); 6015 configureMediaControls(); 6016 6014 6017 document().page()->chrome().client().enterVideoFullscreenForVideoElement(asVideo, m_videoFullscreenMode, m_videoFullscreenStandby); 6015 6018 scheduleEvent(eventNames().webkitbeginfullscreenEvent); … … 6042 6045 ASSERT(m_videoFullscreenMode != VideoFullscreenModeNone); 6043 6046 VideoFullscreenMode oldVideoFullscreenMode = m_videoFullscreenMode; 6044 fullscreenModeChanged(VideoFullscreenModeNone);6045 6047 Ref<HTMLMediaElement> protectedThis(*this); // updateMediaControlsAfterPresentationModeChange calls methods that can trigger arbitrary DOM mutations. 6046 6048 updateMediaControlsAfterPresentationModeChange(); -
trunk/Source/WebCore/html/HTMLMediaElement.h
r261409 r261493 615 615 616 616 void scheduleEvent(const AtomString&); 617 bool waitingToEnterFullscreen() { return m_waitingToEnterFullscreen; } 617 618 618 619 private: -
trunk/Source/WebCore/html/HTMLVideoElement.cpp
r261409 r261493 347 347 bool HTMLVideoElement::webkitDisplayingFullscreen() 348 348 { 349 return isFullscreen() ;349 return isFullscreen() && !waitingToEnterFullscreen(); 350 350 } 351 351 … … 524 524 } 525 525 526 #if ENABLE(PICTURE_IN_PICTURE_API)527 526 void HTMLVideoElement::didBecomeFullscreenElement() 528 527 { … … 532 531 } 533 532 533 #if ENABLE(PICTURE_IN_PICTURE_API) 534 534 void HTMLVideoElement::setPictureInPictureObserver(PictureInPictureObserver* observer) 535 535 { -
trunk/Source/WebCore/html/HTMLVideoElement.h
r261409 r261493 89 89 void setFullscreenMode(VideoFullscreenMode); 90 90 void fullscreenModeChanged(VideoFullscreenMode) final; 91 WEBCORE_EXPORT void didBecomeFullscreenElement() final; 91 92 92 93 #if ENABLE(PICTURE_IN_PICTURE_API) 93 WEBCORE_EXPORT void didBecomeFullscreenElement() final;94 94 void setPictureInPictureObserver(PictureInPictureObserver*); 95 95 WEBCORE_EXPORT void setPictureInPictureAPITestEnabled(bool); -
trunk/Source/WebKit/ChangeLog
r261490 r261493 1 2020-05-11 Peng Liu <peng.liu6@apple.com> 2 3 Enable the mock video presentation mode in related layout tests and fix test failures 4 https://bugs.webkit.org/show_bug.cgi?id=211645 5 6 Reviewed by Darin Adler. 7 8 Fix the mistake in VideoFullscreenManager::supportsVideoFullscreen() introduced in r202274. 9 10 * WebProcess/cocoa/VideoFullscreenManager.mm: 11 (WebKit::VideoFullscreenManager::supportsVideoFullscreen const): 12 1 13 2020-05-11 Per Arne Vollan <pvollan@apple.com> 2 14 -
trunk/Source/WebKit/WebProcess/cocoa/VideoFullscreenManager.mm
r261001 r261493 224 224 return DeprecatedGlobalSettings::avKitEnabled(); 225 225 #else 226 return mode == HTMLMediaElementEnums::VideoFullscreenMode PictureInPicture && supportsPictureInPicture();226 return mode == HTMLMediaElementEnums::VideoFullscreenModeStandard || (mode == HTMLMediaElementEnums::VideoFullscreenModePictureInPicture && supportsPictureInPicture()); 227 227 #endif 228 228 } -
trunk/Source/WebKitLegacy/mac/ChangeLog
r261320 r261493 1 2020-05-11 Peng Liu <peng.liu6@apple.com> 2 3 Enable the mock video presentation mode in related layout tests and fix test failures 4 https://bugs.webkit.org/show_bug.cgi?id=211645 5 6 Reviewed by Darin Adler. 7 8 Call HTMLVideoElement::didBecomeFullscreenElement() after a video element enters 9 fullscreen (to be consistent with WK2). 10 11 * WebView/WebVideoFullscreenController.mm: 12 (-[WebVideoFullscreenController windowDidEnterFullScreen:]): 13 * WebView/WebView.mm: 14 (-[WebView _enterVideoFullscreenForVideoElement:mode:]): 15 1 16 2020-05-07 Darin Adler <darin@apple.com> 2 17 -
trunk/Source/WebKitLegacy/mac/WebView/WebVideoFullscreenController.mm
r257290 r261493 313 313 _isFullScreen = YES; 314 314 [_playerView didChangeValueForKey:@"isFullScreen"]; 315 if (_videoElement) 316 _videoElement->didBecomeFullscreenElement(); 315 317 } 316 318 -
trunk/Source/WebKitLegacy/mac/WebView/WebView.mm
r261232 r261493 9270 9270 - (void)_enterVideoFullscreenForVideoElement:(NakedPtr<WebCore::HTMLVideoElement>)videoElement mode:(WebCore::HTMLMediaElementEnums::VideoFullscreenMode)mode 9271 9271 { 9272 if (_private->mockVideoPresentationModeEnabled) 9273 return; 9272 if (_private->mockVideoPresentationModeEnabled) { 9273 videoElement->didBecomeFullscreenElement(); 9274 return; 9275 } 9274 9276 9275 9277 if (_private->fullscreenController) {
Note: See TracChangeset
for help on using the changeset viewer.