| <!DOCTYPE html> |
| <html> |
| <title>Test having multiple video.rAF callbacks in flight for a single element.</title> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="/common/media.js"></script> |
| <script> |
| |
| async_test(function(t) { |
| let video = document.createElement('video'); |
| |
| let firstTime; |
| let firstMetadata; |
| |
| video.requestAnimationFrame(t.step_func((time, metadata) => { |
| firstTime = time; |
| firstMetadata = metadata; |
| })); |
| |
| video.requestAnimationFrame(t.step_func_done((time, metadata) => { |
| assert_equals(firstTime, time); |
| assert_object_equals(firstMetadata, metadata); |
| })); |
| |
| video.src = getVideoURI('/media/movie_5'); |
| video.play(); |
| |
| }, 'Test callbacks get the same information.'); |
| |
| async_test(function(t) { |
| let video = document.createElement('video'); |
| |
| let secondCallbackId; |
| |
| video.requestAnimationFrame( |
| t.step_func(_ => { video.cancelAnimationFrame(secondCallbackId); }) |
| ); |
| |
| secondCallbackId = video.requestAnimationFrame( |
| t.step_func(_ => { |
| assert_unreached("Cancelled callbacks shouldn't be executed") |
| }) |
| ); |
| |
| // NOTE: This callback should be executed last. |
| video.requestAnimationFrame( |
| t.step_func_done() |
| ); |
| |
| video.src = getVideoURI('/media/movie_5'); |
| video.play(); |
| }, 'Test we can cancel callbacks from callbacks.'); |
| </script> |
| </html> |