Automatic update from web-platform-tests Blob constructor with detached ArrayBuffer/ArrayBufferView -- wpt-commits: 595fd5032bc5b62cb5c80c92aa2c3d61c4286ec3 wpt-pr: 60981
60 lines
1.5 KiB
JavaScript
60 lines
1.5 KiB
JavaScript
// META: title=Blob constructor with detached ArrayBuffer/ArrayBufferView
|
|
// META: script=../support/Blob.js
|
|
'use strict';
|
|
|
|
function detachBuffer(buffer) {
|
|
// Transfer the buffer to detach it. Works in both window and worker contexts.
|
|
new MessageChannel().port1.postMessage(buffer, [buffer]);
|
|
}
|
|
|
|
test_blob(function() {
|
|
const buffer = new ArrayBuffer(4);
|
|
const view = new Uint8Array(buffer);
|
|
view[0] = 0x41;
|
|
view[1] = 0x42;
|
|
view[2] = 0x43;
|
|
view[3] = 0x44;
|
|
detachBuffer(buffer);
|
|
return new Blob([view]);
|
|
}, {
|
|
expected: '',
|
|
type: '',
|
|
desc: 'Blob from a detached ArrayBufferView should be empty'
|
|
});
|
|
|
|
test_blob(function() {
|
|
const buffer = new ArrayBuffer(4);
|
|
const view = new Uint8Array(buffer, 1, 2); // offset=1, length=2
|
|
view[0] = 0x41;
|
|
view[1] = 0x42;
|
|
detachBuffer(buffer);
|
|
return new Blob([view]);
|
|
}, {
|
|
expected: '',
|
|
type: '',
|
|
desc: 'Blob from a detached ArrayBufferView with offset should be empty'
|
|
});
|
|
|
|
test_blob(function() {
|
|
const buffer = new ArrayBuffer(4);
|
|
detachBuffer(buffer);
|
|
return new Blob([buffer]);
|
|
}, {
|
|
expected: '',
|
|
type: '',
|
|
desc: 'Blob from a detached ArrayBuffer should be empty'
|
|
});
|
|
|
|
test_blob(function() {
|
|
const buffer = new ArrayBuffer(4);
|
|
const view = new Uint8Array(buffer);
|
|
view[0] = 0x41;
|
|
detachBuffer(buffer);
|
|
// Mix detached view with a string
|
|
return new Blob([view, 'hello']);
|
|
}, {
|
|
expected: 'hello',
|
|
type: '',
|
|
desc: 'Blob from a detached ArrayBufferView mixed with string, detached part ignored'
|
|
});
|