mirror of
https://github.com/servo/servo.git
synced 2025-08-07 14:35:33 +01:00
Update web-platform-tests to revision cf261625e2d230ab219eec966f4abe26e3401b64
This commit is contained in:
parent
11a89bcc47
commit
8f98acd0e7
297 changed files with 3396 additions and 1555 deletions
|
@ -37,6 +37,51 @@ async_test(t => {
|
|||
});
|
||||
}, 'Fetching a blob URL immediately before revoking it works in an iframe navigation.');
|
||||
|
||||
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 win = window.open(url);
|
||||
URL.revokeObjectURL(url);
|
||||
add_completion_callback(() => { win.close(); });
|
||||
|
||||
win.onload = t.step_func_done(() => {
|
||||
assert_equals(win.test_result, run_result);
|
||||
});
|
||||
}, 'Opening a blob URL in a new window immediately before revoking it works.');
|
||||
|
||||
function receive_message_on_channel(t, channel_name) {
|
||||
const channel = new BroadcastChannel(channel_name);
|
||||
return new Promise(resolve => {
|
||||
channel.addEventListener('message', t.step_func(e => {
|
||||
resolve(e.data);
|
||||
}));
|
||||
});
|
||||
}
|
||||
|
||||
function window_contents_for_channel(channel_name) {
|
||||
return '<!doctype html>\n' +
|
||||
'<script>\n' +
|
||||
'new BroadcastChannel("' + channel_name + '").postMessage("foobar");\n' +
|
||||
'self.close();\n' +
|
||||
'</script>';
|
||||
}
|
||||
|
||||
async_test(t => {
|
||||
const channel_name = 'noopener-window-test';
|
||||
const blob = new Blob([window_contents_for_channel(channel_name)], {type: 'text/html'});
|
||||
receive_message_on_channel(t, channel_name).then(t.step_func_done(t => {
|
||||
assert_equals(t, 'foobar');
|
||||
}));
|
||||
const url = URL.createObjectURL(blob);
|
||||
const win = window.open();
|
||||
win.opener = null;
|
||||
win.location = url;
|
||||
URL.revokeObjectURL(url);
|
||||
}, 'Opening a blob URL in a noopener about:blank window immediately before revoking it works.');
|
||||
|
||||
async_test(t => {
|
||||
const run_result = 'test_script_OK';
|
||||
const blob_contents = 'window.script_test_result = "' + run_result + '";';
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
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.');
|
Loading…
Add table
Add a link
Reference in a new issue