Home | History | Annotate | Download | only in manual-tests
      1 
      2 <html>
      3     <head>
      4         <!-- LayoutTests location is hard-coded to avoid duplication of code. -->
      5         <script src="http://svn.webkit.org/repository/webkit/trunk/LayoutTests/media/media-file.js"></script>
      6         <script src="http://svn.webkit.org/repository/webkit/trunk/LayoutTests/media/video-test.js"></script>
      7 
      8         <script>
      9             var expectedRates = { "defaultPlaybackRate" : 1, "playbackRate" : 1};
     10             var playingFromScript = false;
     11             var changedRate = false;
     12 
     13             function absoluteUrl(url)
     14             {
     15                 var a = document.createElement('a');
     16                 a.href = url;
     17                 return a.href;
     18             }
     19 
     20             function testRates()
     21             {
     22                 consoleWrite("");
     23                 var playWithControllerButton = !changedRate && !playingFromScript;
     24                 testExpected("video.playbackRate", playWithControllerButton ? expectedRates['defaultPlaybackRate'] : expectedRates['playbackRate']);
     25                 testExpected("video.defaultPlaybackRate", expectedRates['defaultPlaybackRate']);
     26                 changedRate = false;
     27             }
     28 
     29             function playing()
     30             {
     31                 consoleWrite("<br>'playing' event");
     32                 expectedRates['playbackRate'] = playingFromScript ? video.playbackRate : video.defaultPlaybackRate;
     33                 testRates();
     34                 playingFromScript = false;
     35             }
     36 
     37             function ratechange()
     38             {
     39                 consoleWrite("<br>'ratechange' event");
     40                 testRates();
     41             }
     42 
     43             function start()
     44             {
     45                 findMediaElement();
     46                 video.addEventListener('ratechange', ratechange);
     47                 video.addEventListener('playing', playing);
     48 
     49                 // Use the video file from the svn repository to avoid duplicating the file.
     50                 video.src = absoluteUrl(findMediaFile('video', 'http://svn.webkit.org/repository/webkit/trunk/LayoutTests/media/content/test'));
     51                 testRates();
     52             }
     53 
     54             function play()
     55             {
     56                 playingFromScript = true;
     57                 video.play();
     58             }
     59 
     60             function setRate(which, rate)
     61             {
     62                 changedRate = true;
     63                 video[which] = rate;
     64                 expectedRates[which] = rate;
     65             }
     66 
     67         </script>
     68     </head>
     69 
     70     <body onload="start()">
     71         
     72         <video controls > </video>
     73         <ul>
     74             <li>The current 'playbackRate' and 'defaultPlaybackRate' should be logged every time either changes.</li>
     75             <li>'playbackRate' should be set to 'defaultPlaybackRate' when the Play button in the built-in controls is pressed</li>
     76             <li>'playbackRate' should NOT when play() is called from script.</li>
     77         </ul>
     78         <div>
     79             <button id="controls" onclick="setRate('defaultPlaybackRate', 2)">defaultPlaybackRate = 2</button>
     80             <button id="controls" onclick="setRate('defaultPlaybackRate', 1)">defaultPlaybackRate = 1</button>
     81             <button id="controls" onclick="setRate('playbackRate', 2)">playbackRate = 2</button>
     82             <button id="controls" onclick="setRate('playbackRate', 1)">playbackRate = 1</button>
     83         </div>
     84         <div>
     85             <button id="controls" onclick="play()">play()</button>
     86             <button id="controls" onclick="video.pause()">pause()</button>
     87         </div>
     88         <br>
     89     </body>
     90 </html>
     91