3 <title>Test that video play, pause and enterfullscreen does not work unless a user gesture is involved in playing a video</title>
4 <script src=media-controls.js></script>
5 <script src=media-file.js></script>
6 <script src=video-test.js></script>
8 var userGestureInitiated = 0;
10 window.internals.settings.setMediaPlaybackRequiresUserGesture(true);
12 function cleanGestureRequirement() {
14 window.internals.settings.setMediaPlaybackRequiresUserGesture(false);
19 if (window.eventSender) {
22 playCoords = mediaControlsButtonCoordinates(video, "play-button");
24 cleanGestureRequirement();
25 failTest(exception.description);
28 var x = playCoords[0];
29 var y = playCoords[1];
31 userGestureInitiated = 1;
32 eventSender.mouseMoveTo(x, y);
33 eventSender.mouseDown();
34 eventSender.mouseUp();
40 if (userGestureInitiated == 0) {
41 cleanGestureRequirement();
42 failTest("Should not play without user gesture.");
50 testExpected("video.paused", true);
51 // Now video.webkitEnterFullScreen() should no longer throw any exception.
52 // However, the video element may not always enter fullscreen. For example,
53 // chromium uses fullscreen API which still requires user gesture
55 run("video.webkitEnterFullScreen()");
57 cleanGestureRequirement();
58 failTest("video.webkitEnterFullScreen() still requires user gesture.");
60 cleanGestureRequirement();
64 function canplaythrough()
67 consoleWrite("* No user gesture initiated");
69 testException("video.webkitEnterFullScreen()", "DOMException.INVALID_STATE_ERR");
70 testExpected("video.paused", true);
73 consoleWrite("* User gesture initiated");
80 waitForEvent('canplaythrough', canplaythrough);
81 waitForEvent('playing', playing);
82 waitForEvent('pause', pause);
83 video.src = findMediaFile("video", "content/test");
88 <body onload="start()">
89 <p>Test that video play(), pause() and webkitEnterFullScreen() should not work unless a user clicked on the play button.</p>
90 <video controls></video>