<html> <head> <script> var urls = [ "file:///does not exist oh noes/test.mp4", "../LayoutTests/media/content/test-25fps.mp4" ]; var kickoffFunctions = [ "load", "play" ]; var mediaElementHolder = []; function releaseAndAddMediaElements() { for (var i = 0; i < mediaElementHolder.length; ++i) mediaElementHolder[i].src = ""; mediaElementHolder = []; for (var i = 0; i < 5; ++i) { for (var url in urls) { for (var kickoffFunction in kickoffFunctions) { var a = document.createElement('video'); a.controls = "controls"; a.src = urls[url]; eval("a." + kickoffFunctions[kickoffFunction] + "();"); mediaElementHolder.push(a); } } } } </script> </head> <body onload="setInterval('releaseAndAddMediaElements()', 100)"> Test that media players aren't leaked on error. Load this page and verify the number of threads used by the browser doesn't seem unreasonable (e.g. chrome uses 4-5 threads per video tag so staying under 100 threads is "success", since this instantiates 20 <video> elements). </body> </html>