tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

request-video-frame-callback-parallel.html (1792B)


      1 <!DOCTYPE html>
      2 <html>
      3 <title>Test having multiple video.rVFC callbacks in flight for a single element.</title>
      4 <body></body>
      5 <script src="/resources/testharness.js"></script>
      6 <script src="/resources/testharnessreport.js"></script>
      7 <script src="/common/media.js"></script>
      8 <script>
      9 
     10 promise_test(async function(t) {
     11    let done;
     12    const promise = new Promise(resolve => done = resolve);
     13 
     14    let video = document.createElement('video');
     15    video.muted = true;
     16    document.body.appendChild(video);
     17 
     18    let firstTime;
     19    let firstMetadata;
     20 
     21    video.requestVideoFrameCallback(t.step_func((time, metadata) => {
     22      firstTime = time;
     23      firstMetadata = metadata;
     24    }));
     25 
     26    video.requestVideoFrameCallback(t.step_func((time, metadata) => {
     27      assert_equals(firstTime, time);
     28      assert_object_equals(firstMetadata, metadata);
     29      done();
     30    }));
     31 
     32    video.src = getVideoURI('/media/movie_5');
     33    video.play();
     34 
     35    return promise;
     36 }, 'Test callbacks get the same information.');
     37 
     38 promise_test(async function(t) {
     39    let done;
     40    const promise = new Promise(resolve => done = resolve);
     41 
     42    let video = document.createElement('video');
     43    video.muted = true;
     44    document.body.appendChild(video);
     45 
     46    let secondCallbackId;
     47 
     48    video.requestVideoFrameCallback(
     49      t.step_func(_ => { video.cancelVideoFrameCallback(secondCallbackId); })
     50    );
     51 
     52    secondCallbackId = video.requestVideoFrameCallback(
     53      t.step_func(_ => {
     54        assert_unreached("Cancelled callbacks shouldn't be executed")
     55      })
     56    );
     57 
     58    // NOTE: This callback should be executed last.
     59    video.requestVideoFrameCallback(done);
     60 
     61    video.src = getVideoURI('/media/movie_5');
     62    video.play();
     63 
     64    return promise;
     65 }, 'Test we can cancel callbacks from callbacks.');
     66 </script>
     67 </html>