|
@@ -0,0 +1,35 @@
|
|
|
+<script src="include.js"></script>
|
|
|
+<script type="text/javascript">
|
|
|
+ const SOURCES = [
|
|
|
+ "data:",
|
|
|
+ "file:///i-do-no-exist-i-swear",
|
|
|
+ "https://i-do-no-exist-i-swear.net.uk",
|
|
|
+ ];
|
|
|
+
|
|
|
+ const runTest = source => {
|
|
|
+ let video = document.createElement("video");
|
|
|
+
|
|
|
+ return new Promise((resolve, reject) => {
|
|
|
+ video.addEventListener("loadedmetadata", () => {
|
|
|
+ reject(`successfully loaded: "${video.src}"`);
|
|
|
+ });
|
|
|
+
|
|
|
+ video.addEventListener("error", () => {
|
|
|
+ resolve(`failed to load: "${video.src}"`);
|
|
|
+ });
|
|
|
+
|
|
|
+ video.src = source;
|
|
|
+ });
|
|
|
+ };
|
|
|
+
|
|
|
+ asyncTest(done => {
|
|
|
+ let promises = SOURCES.map(source => runTest(source));
|
|
|
+
|
|
|
+ Promise.allSettled(promises)
|
|
|
+ .then(results => {
|
|
|
+ const values = results.map(result => result.value);
|
|
|
+ values.sort().forEach(println);
|
|
|
+ })
|
|
|
+ .finally(done);
|
|
|
+ });
|
|
|
+</script>
|