media-default-playback-rate.html 3.3 KB

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