<!DOCTYPE HTML> <html> <head> <script type="application/javascript" src="mediaStreamPlayback.js"></script> </head> <body> <pre id="test"> <script type="application/javascript"> "use strict"; createHTML({ title: "Stopping a MediaStreamTrack and its clones should deallocate the device", bug: "1294605" }); runTest(() => getUserMedia({audio: true, video: true}).then(stream => { let clone = stream.clone(); stream.getTracks().forEach(t => t.stop()); stream.clone().getTracks().forEach(t => stream.addTrack(t)); is(stream.getTracks().filter(t => t.readyState == "live").length, 0, "Cloning ended tracks should make them ended"); [...stream.getTracks(), ...clone.getTracks()].forEach(t => t.stop()); // Bug 1295352: better to be explicit about noGum here wrt future refactoring. return noGum(); })); </script> </pre> </body> </html>