test_cloneElementVisually_resource_change.html (1750B)
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>Test cloneElementVisually</title> 6 <script src="/tests/SimpleTest/SimpleTest.js"></script> 7 <script type="application/javascript" src="https://example.com:443/tests/dom/media/test/cloneElementVisually_helpers.js"></script> 8 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"> 9 </head> 10 <body> 11 <div id="content"> 12 <h1>Original</h1> 13 <video id="original"></video> 14 <h1>MediaStream</h1> 15 <video id="streamTarget"></video> 16 <h1>Clone</h1> 17 </div> 18 <div id="results"> 19 <h1>Results</h1> 20 <canvas id="left"></canvas> 21 <canvas id="right"></canvas> 22 </div> 23 24 <script type="application/javascript"> 25 26 /* import-globals-from cloneElementVisually_helpers.js */ 27 28 /** 29 * Tests that cloning survives changes to the underlying video resource. 30 */ 31 add_task(async () => { 32 await setup(); 33 34 let originalVideo = document.getElementById("original"); 35 originalVideo.setAttribute("loop", true); 36 await originalVideo.play(); 37 38 await withNewClone(originalVideo, async clone => { 39 SpecialPowers.wrap(originalVideo).cloneElementVisually(clone); 40 41 await waitForEventOnce(originalVideo, "timeupdate"); 42 43 originalVideo.pause(); 44 await waitForEventOnce(originalVideo, "pause"); 45 46 ok(await assertVideosMatch(originalVideo, clone), 47 "Initial video should match."); 48 49 await setVideoSrc(originalVideo, TEST_VIDEO_2); 50 51 await originalVideo.play(); 52 await waitForEventOnce(originalVideo, "timeupdate"); 53 54 originalVideo.pause(); 55 await waitForEventOnce(originalVideo, "pause"); 56 57 ok(await assertVideosMatch(originalVideo, clone), 58 "New video should match."); 59 }); 60 61 await setVideoSrc(originalVideo, TEST_VIDEO_1); 62 }); 63 64 </script> 65 66 </body> 67 </html>