| |
| <html> |
| <head> |
| <!-- LayoutTests location is hard-coded to avoid duplication of code. --> |
| <script src="http://svn.webkit.org/repository/webkit/trunk/LayoutTests/media/media-file.js"></script> |
| <script src="http://svn.webkit.org/repository/webkit/trunk/LayoutTests/media/video-test.js"></script> |
| |
| <script> |
| var expectedRates = { "defaultPlaybackRate" : 1, "playbackRate" : 1}; |
| var playingFromScript = false; |
| var changedRate = false; |
| |
| function absoluteUrl(url) |
| { |
| var a = document.createElement('a'); |
| a.href = url; |
| return a.href; |
| } |
| |
| function testRates() |
| { |
| consoleWrite(""); |
| var playWithControllerButton = !changedRate && !playingFromScript; |
| testExpected("video.playbackRate", playWithControllerButton ? expectedRates['defaultPlaybackRate'] : expectedRates['playbackRate']); |
| testExpected("video.defaultPlaybackRate", expectedRates['defaultPlaybackRate']); |
| changedRate = false; |
| } |
| |
| function playing() |
| { |
| consoleWrite("<br>'playing' event"); |
| expectedRates['playbackRate'] = playingFromScript ? video.playbackRate : video.defaultPlaybackRate; |
| testRates(); |
| playingFromScript = false; |
| } |
| |
| function ratechange() |
| { |
| consoleWrite("<br>'ratechange' event"); |
| testRates(); |
| } |
| |
| function start() |
| { |
| findMediaElement(); |
| video.addEventListener('ratechange', ratechange); |
| video.addEventListener('playing', playing); |
| |
| // Use the video file from the svn repository to avoid duplicating the file. |
| video.src = absoluteUrl(findMediaFile('video', 'http://svn.webkit.org/repository/webkit/trunk/LayoutTests/media/content/test')); |
| testRates(); |
| } |
| |
| function play() |
| { |
| playingFromScript = true; |
| video.play(); |
| } |
| |
| function setRate(which, rate) |
| { |
| changedRate = true; |
| video[which] = rate; |
| expectedRates[which] = rate; |
| } |
| |
| </script> |
| </head> |
| |
| <body onload="start()"> |
| |
| <video controls > </video> |
| <ul> |
| <li>The current 'playbackRate' and 'defaultPlaybackRate' should be logged every time either changes.</li> |
| <li>'playbackRate' should be set to 'defaultPlaybackRate' when the Play button in the built-in controls is pressed</li> |
| <li>'playbackRate' should NOT when play() is called from script.</li> |
| </ul> |
| <div> |
| <button id="controls" onclick="setRate('defaultPlaybackRate', 2)">defaultPlaybackRate = 2</button> |
| <button id="controls" onclick="setRate('defaultPlaybackRate', 1)">defaultPlaybackRate = 1</button> |
| <button id="controls" onclick="setRate('playbackRate', 2)">playbackRate = 2</button> |
| <button id="controls" onclick="setRate('playbackRate', 1)">playbackRate = 1</button> |
| </div> |
| <div> |
| <button id="controls" onclick="play()">play()</button> |
| <button id="controls" onclick="video.pause()">pause()</button> |
| </div> |
| <br> |
| </body> |
| </html> |