test_complete_length.html (1589B)
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>Test different complete-length fields of Content-Range headers</title> 6 <script src="/tests/SimpleTest/SimpleTest.js"></script> 7 <script src="/tests/dom/serviceworkers/test/utils.js"></script> 8 <link rel="stylesheet" href="/tests/SimpleTest/test.css"/> 9 </head> 10 <script> 11 "use strict"; 12 13 let oncomplete; 14 navigator.serviceWorker.addEventListener("message", e => { 15 switch (e.data.type) { 16 case "is": 17 is(e.data.got, e.data.expected, e.data.name); 18 break; 19 case "done": 20 oncomplete(); 21 break; 22 default: 23 record(false, "unknown e.data.type", e.data.type); 24 } 25 }); 26 27 add_task(async () => { 28 // Unregister any previous ServiceWorkerRegistrations that may not have been 29 // removed before a page reload. 30 await unregisterAll(); 31 const registration = 32 await registerAndWaitForActive("complete_length_worker.js"); 33 SimpleTest.registerCleanupFunction(() => registration.unregister()); 34 35 const audio = new Audio("media-resource"); 36 audio.preload = "metadata"; 37 // An error event is generated because the resource is incomplete. 38 const error_promise = new Promise(r => audio.onerror = r); 39 await error_promise; 40 is(audio.error.code, MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED, "error.code"); 41 is(audio.error.message, "NS_ERROR_DOM_MEDIA_METADATA_ERR (0x806e0006)", 42 "error.message"); 43 44 // Tell the ServiceWorker that media-resource requests have completed. 45 navigator.serviceWorker.controller.postMessage({type: "got error event"}); 46 await new Promise(r => oncomplete = r); 47 }); 48 </script> 49 </html>