tor-browser

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

script-change-transform.https.html (2306B)


      1 <!doctype html>
      2 <html>
      3    <head>
      4        <meta charset="utf-8">
      5 <script src="/resources/testharness.js"></script>
      6        <script src="/resources/testharnessreport.js"></script>
      7        <script src=/resources/testdriver.js></script>
      8 <script src=/resources/testdriver-vendor.js></script>
      9 <script src='../mediacapture-streams/permission-helper.js'></script>
     10    </head>
     11    <body>
     12        <video id="video1" autoplay controls playsinline></video>
     13        <script src ="routines.js"></script>
     14        <script>
     15 async function waitForMessage(worker, data)
     16 {
     17    while (true) {
     18        const received = await new Promise(resolve => worker.onmessage = (event) => resolve(event.data));
     19        if (data === received)
     20            return;
     21    }
     22 }
     23 
     24 promise_test(async (test) => {
     25    worker = new Worker('script-change-transform-worker.js');
     26    const data = await new Promise(resolve => worker.onmessage = (event) => resolve(event.data));
     27    assert_equals(data, "registered");
     28 
     29    await setMediaPermission("granted", ["camera"]);
     30    const localStream = await navigator.mediaDevices.getUserMedia({video: true});
     31 
     32    let sender, receiver;
     33    const senderTransform1 = new RTCRtpScriptTransform(worker, {name:'sender1'});
     34    const senderTransform2 = new RTCRtpScriptTransform(worker, {name:'sender2'});
     35    const receiverTransform = new RTCRtpScriptTransform(worker, {name:'receiver'});
     36 
     37    const stream = await new Promise((resolve, reject) => {
     38        createConnections(test, (firstConnection) => {
     39            sender = firstConnection.addTrack(localStream.getVideoTracks()[0], localStream);
     40            sender.transform = senderTransform1;
     41        }, (secondConnection) => {
     42            secondConnection.ontrack = (trackEvent) => {
     43                receiver = trackEvent.receiver;
     44                receiver.transform = receiverTransform;
     45                resolve(trackEvent.streams[0]);
     46            };
     47        });
     48        test.step_timeout(() => reject("Test timed out"), 5000);
     49    });
     50 
     51    video1.srcObject = stream;
     52    await video1.play();
     53 
     54    const updatePromise = new Promise(resolve => worker.onmessage = (event) => resolve(event.data));
     55    sender.transform = senderTransform2;
     56    assert_equals(await updatePromise, "got value 2");
     57 }, "change sender transform");
     58        </script>
     59    </body>
     60 </html>