| Test looping by: |
| |
| Play to end with 'loop' set to true. |
| When 'seeked' event fires, verify that time has jumped back and movie is playing. |
| Set 'loop' to false and play again. |
| Verify that 'ended' event fires. |
| ++ Test setting/removing the attribute. |
| EXPECTED (video.getAttribute('loop') == 'null') OK |
| EXPECTED (video.loop == 'false') OK |
| RUN(video.loop = true) |
| EXPECTED (video.loop == 'true') OK |
| EXPECTED (video.getAttribute('loop') != 'null') OK |
| RUN(video.removeAttribute('loop')) |
| EXPECTED (video.loop == 'false') OK |
| |
| ++ Set 'loop' to true and begin playing. |
| RUN(video.loop = true) |
| |
| EVENT(play) |
| |
| ++ seek to near the end, wait for 'seeked' event to announce loop. |
| EXPECTED (video.paused == 'false') OK |
| RUN(video.pause()) |
| RUN(video.currentTime = video.duration - 0.4) |
| |
| EVENT(pause) |
| EVENT(seeked) |
| |
| ++ first seek completed, beginning playback. |
| EXPECTED (video.paused == 'true') OK |
| EXPECTED (video.ended == 'false') OK |
| RUN(video.play()) |
| |
| EVENT(play) |
| EVENT(seeked) |
| |
| ++ second seek completed because video looped, toggle 'loop' and seek to near end again. |
| EXPECTED (video.paused == 'false') OK |
| EXPECTED (video.ended == 'false') OK |
| RUN(video.pause()) |
| EXPECTED (mediaElement.currentTime >= '0') OK |
| EXPECTED (mediaElement.currentTime < 'mediaElement.duration') OK |
| RUN(video.loop = false) |
| RUN(video.currentTime = video.duration - 0.4) |
| |
| EVENT(pause) |
| EVENT(seeked) |
| |
| ++ third seek completed, beginning playback for the last time. |
| EXPECTED (video.paused == 'true') OK |
| EXPECTED (video.ended == 'false') OK |
| RUN(video.play()) |
| |
| EVENT(play) |
| EVENT(pause) |
| EVENT(ended) |
| |
| ++ played to end and stopped. |
| EXPECTED (video.ended == 'true') OK |
| EXPECTED (mediaElement.currentTime == 'mediaElement.duration') OK |
| |
| END OF TEST |
| |