mirror of
https://github.com/servo/servo.git
synced 2025-06-25 09:34:32 +01:00
36 lines
1.2 KiB
JavaScript
36 lines
1.2 KiB
JavaScript
function blob_url_reload_test(t, revoke_before_reload) {
|
|
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(() => {
|
|
if (revoke_before_reload)
|
|
URL.revokeObjectURL(url);
|
|
assert_equals(frame.contentWindow.test_result, run_result);
|
|
frame.contentWindow.test_result = null;
|
|
frame.onload = t.step_func_done(() => {
|
|
assert_equals(frame.contentWindow.test_result, run_result);
|
|
});
|
|
// Slight delay before reloading to ensure revoke actually has had a chance
|
|
// to be processed.
|
|
t.step_timeout(() => {
|
|
frame.contentWindow.location.reload();
|
|
}, 250);
|
|
});
|
|
}
|
|
|
|
async_test(t => {
|
|
blob_url_reload_test(t, false);
|
|
}, 'Reloading a blob URL succeeds.');
|
|
|
|
|
|
async_test(t => {
|
|
blob_url_reload_test(t, true);
|
|
}, 'Reloading a blob URL succeeds even if the URL was revoked.');
|