Implement Focus UI
[framework/web/webkit-efl.git] / LayoutTests / media / video-play-require-user-gesture.html
1 <html>
2     <head>
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>
7         <script>
8             var userGestureInitiated = 0;
9             if (window.internals) 
10                 window.internals.settings.setMediaPlaybackRequiresUserGesture(true);
11
12             function cleanGestureRequirement() {
13                 if (window.internals) 
14                     window.internals.settings.setMediaPlaybackRequiresUserGesture(false);
15             }
16
17             function click()
18             {
19                 if (window.eventSender) {
20                     var playCoords;
21                     try {
22                         playCoords = mediaControlsButtonCoordinates(video, "play-button");
23                     } catch (exception) {
24                         cleanGestureRequirement();
25                         failTest(exception.description);
26                         return;
27                     }
28                     var x = playCoords[0];
29                     var y = playCoords[1];
30                      
31                     userGestureInitiated = 1;
32                     eventSender.mouseMoveTo(x, y);
33                     eventSender.mouseDown();
34                     eventSender.mouseUp();
35                 }
36             }
37
38             function playing()
39             {
40                 if (userGestureInitiated == 0) {
41                     cleanGestureRequirement();
42                     failTest("Should not play without user gesture.");
43                 } else {
44                     run("video.pause()");
45                 }
46             }
47
48             function pause()
49             {
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
54                 try {
55                     run("video.webkitEnterFullScreen()");
56                 } catch(ex) {
57                     cleanGestureRequirement();
58                     failTest("video.webkitEnterFullScreen() still requires user gesture.");
59                 }
60                 cleanGestureRequirement(); 
61                 endTest();
62             }
63
64             function canplaythrough()
65             {
66                 consoleWrite("");
67                 consoleWrite("* No user gesture initiated");
68                 run("video.play()");
69                 testException("video.webkitEnterFullScreen()", "DOMException.INVALID_STATE_ERR");
70                 testExpected("video.paused", true);
71                 consoleWrite("");
72
73                 consoleWrite("* User gesture initiated");
74                 click();
75             }
76
77             function start()
78             {
79                  findMediaElement();
80                  waitForEvent('canplaythrough', canplaythrough);
81                  waitForEvent('playing', playing);
82                  waitForEvent('pause', pause);
83                  video.src = findMediaFile("video", "content/test");
84             }
85         </script>
86     </head>
87
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>
91     </body>
92 </html>