blob: e1e08bc47b8760e4bcfe412800a46abb076805f8 [file] [log] [blame]
<html>
<head>
<title>Consuming form data with empty blob</title>
</head>
<body>
<script src="../resources/gc.js"></script>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<script>
function sleep(ms)
{
return new Promise(resolve => setTimeout(resolve, ms));
}
async function createClonedBlobWithIndexedDB()
{
return new Promise(resolve => {
const request = indexedDB.open('db' + Math.random(), 1);
request.onupgradeneeded = e => {
const db = e.target.result;
db.createObjectStore('storage', {keyPath: 'id'});
};
request.onsuccess = e => {
const db = e.target.result;
const transaction = db.transaction(['storage'], 'readwrite');
const objectStore = transaction.objectStore('storage');
const storeRequest = objectStore.put({
id: 1,
data: new Blob(['aa'])
});
storeRequest.onsuccess = () => {
objectStore.get(1).onsuccess = e => {
gc();
resolve(e.target.result.data);
};
};
};
});
}
promise_test(async () => {
const blob = await createClonedBlobWithIndexedDB();
await sleep(100);
const formData = new FormData();
formData.append('a', blob);
let response = new Response(formData);
Object.prototype.__defineGetter__('then', () => {
response = null;
gc();
});
response.arrayBuffer();
});
</script>
</body>
</html>