| async_test(t => { |
| const run_result = 'test_script_OK'; |
| const blob_contents = 'window.test_result = "' + run_result + '";'; |
| const blob = new Blob([blob_contents]); |
| const url = URL.createObjectURL(blob); |
| |
| const e = document.createElement('script'); |
| e.setAttribute('src', url); |
| e.onload = t.step_func_done(() => { |
| assert_equals(window.test_result, run_result); |
| }); |
| |
| document.body.appendChild(e); |
| }, 'Blob URLs can be used in <script> tags'); |
| |
| async_test(t => { |
| const run_result = 'test_frame_OK'; |
| const blob_contents = '<!doctype html>\n<meta charset="utf-8">\n' + |
| '<script>window.test_result = "' + run_result + '";</script>'; |
| const blob = new Blob([blob_contents], {type: 'text/html'}); |
| const url = URL.createObjectURL(blob); |
| |
| const frame = document.createElement('iframe'); |
| frame.setAttribute('src', url); |
| frame.setAttribute('style', 'display:none;'); |
| document.body.appendChild(frame); |
| |
| frame.onload = t.step_func_done(() => { |
| assert_equals(frame.contentWindow.test_result, run_result); |
| }); |
| }, 'Blob URLs can be used in iframes, and are treated same origin'); |
| |
| async_test(t => { |
| const blob_contents = '<!doctype html>\n<meta charset="utf-8">\n' + |
| '<style>body { margin: 0; } .block { height: 5000px; }</style>\n' + |
| '<body>\n' + |
| '<a id="block1"></a><div class="block"></div>\n' + |
| '<a id="block2"></a><div class="block"></div>'; |
| const blob = new Blob([blob_contents], {type: 'text/html'}); |
| const url = URL.createObjectURL(blob); |
| |
| const frame = document.createElement('iframe'); |
| frame.setAttribute('src', url + '#block2'); |
| document.body.appendChild(frame); |
| frame.contentWindow.onscroll = t.step_func_done(() => { |
| assert_equals(frame.contentWindow.scrollY, 5000); |
| }); |
| }, 'Blob URL fragment is implemented.'); |