%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
<!doctype html> <meta charset="utf-8"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <body> <script> promise_test(t => { const blob_contents = 'test blob contents'; const blob = new Blob([blob_contents]); const worker = new Worker('resources/create-helper.js'); let url; return new Promise(resolve => { worker.onmessage = e => resolve(e.data); worker.postMessage({blob: blob}); }).then(data => { url = data.url; let result = fetch(url); worker.terminate(); return result; }).then(response => response.text()).then(text => { assert_equals(text, blob_contents); return new Promise(resolve => t.step_timeout(resolve, 100)); }).then(() => promise_rejects_js(t, TypeError, fetch(url))); }, 'Terminating worker revokes its URLs'); promise_test(t => { const blob_contents = 'test blob contents'; const blob = new Blob([blob_contents]); const frame = document.createElement('iframe'); frame.setAttribute('style', 'display:none;'); frame.src = 'resources/create-helper.html'; document.body.appendChild(frame); let url; return new Promise(resolve => { frame.onload = t.step_func(e => { resolve(e); }); }).then(e => { frame.contentWindow.postMessage({blob: blob}, '*'); return new Promise(resolve => { self.addEventListener('message', t.step_func(e => { if (e.source === frame.contentWindow) resolve(e); })); }); }).then(e => { url = e.data.url; let fetch_result = fetch(url); document.body.removeChild(frame); return fetch_result; }).then(response => response.text()).then(text => { assert_equals(text, blob_contents); return new Promise(resolve => t.step_timeout(resolve, 100)); }).then(() => promise_rejects_js(t, TypeError, fetch(url))); }, 'Removing an iframe revokes its URLs'); </script>