| <!DOCTYPE html> |
| <html> |
| <title>Test having multiple video.rVFC callbacks in flight for a single element.</title> |
| <body></body> |
| <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'); |
| document.body.appendChild(video); |
| |
| let firstTime; |
| let firstMetadata; |
| |
| video.requestVideoFrameCallback(t.step_func((time, metadata) => { |
| firstTime = time; |
| firstMetadata = metadata; |
| })); |
| |
| video.requestVideoFrameCallback(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'); |
| document.body.appendChild(video); |
| |
| let secondCallbackId; |
| |
| video.requestVideoFrameCallback( |
| t.step_func(_ => { video.cancelVideoFrameCallback(secondCallbackId); }) |
| ); |
| |
| secondCallbackId = video.requestVideoFrameCallback( |
| t.step_func(_ => { |
| assert_unreached("Cancelled callbacks shouldn't be executed") |
| }) |
| ); |
| |
| // NOTE: This callback should be executed last. |
| video.requestVideoFrameCallback( |
| t.step_func_done() |
| ); |
| |
| video.src = getVideoURI('/media/movie_5'); |
| video.play(); |
| }, 'Test we can cancel callbacks from callbacks.'); |
| </script> |
| </html> |