Update web-platform-tests to revision cf261625e2d230ab219eec966f4abe26e3401b64

This commit is contained in:
WPT Sync Bot 2018-05-29 21:17:45 -04:00
parent 11a89bcc47
commit 8f98acd0e7
297 changed files with 3396 additions and 1555 deletions

View file

@ -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 + '";';

View file

@ -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.');