Files
sousa-gecko/testing/web-platform/tests/fs/FileSystemBaseHandle-IndexedDB-deferred-deserialization.https.any.js
T
Anne van Kesteren 2e7b2a02b5 Bug 2040788 [wpt PR 59970] - FileSystemHandle: more IDB coverage, a=testonly
Automatic update from web-platform-tests
FileSystemHandle: more IDB coverage

--

wpt-commits: d650253e78c8d060fc300bce369a0a3f6d4a520f
wpt-pr: 59970
2026-05-21 07:40:11 +00:00

56 lines
2.0 KiB
JavaScript

// META: script=resources/test-helpers.js
// META: script=resources/sandboxed-fs-test-helpers.js
// META: script=resources/messaging-helpers.js
// META: script=/IndexedDB/resources/support-promises.js
'use strict';
directory_test(async (t, root_dir) => {
const handle = await createFileWithContents('file', 'contents', root_dir);
const db = await createDatabase(t, db => {
db.createObjectStore('store');
});
let tx = db.transaction('store', 'readwrite');
await promiseForRequest(t, tx.objectStore('store').put(handle, 'key'));
await promiseForTransaction(t, tx);
tx = db.transaction('store', 'readwrite');
const store = tx.objectStore('store');
const getRequest = store.get('key');
await requestWatcher(t, getRequest).wait_for('success');
await promiseForRequest(t, store.delete('key'));
await promiseForTransaction(t, tx);
const retrieved = getRequest.result;
assert_true(await handle.isSameEntry(retrieved));
const file = await retrieved.getFile();
assert_equals(await file.text(), 'contents');
}, 'Reading request.result after the record is deleted still produces a usable handle.');
directory_test(async (t, root_dir) => {
const handle = await createFileWithContents('file', 'contents', root_dir);
const db = await createDatabase(t, db => {
db.createObjectStore('store');
});
const tx = db.transaction('store', 'readwrite');
await promiseForRequest(t, tx.objectStore('store').put(handle, 'key'));
await promiseForTransaction(t, tx);
const readTx = db.transaction('store', 'readonly');
const getRequest = readTx.objectStore('store').get('key');
await requestWatcher(t, getRequest).wait_for('success');
await promiseForTransaction(t, readTx);
db.close();
const retrieved = getRequest.result;
assert_true(await handle.isSameEntry(retrieved));
const file = await retrieved.getFile();
assert_equals(await file.text(), 'contents');
}, 'Reading request.result after the database is closed still produces a usable handle.');