Files
sousa-gecko/testing/web-platform/tests/IndexedDB/idbcursor_iterating.any.js
T
Evan Stade cfca538eeb Bug 1939909 [wpt PR 49908] - IDB: remove relaxed durability from some WPT., a=testonly
Automatic update from web-platform-tests
IDB: remove relaxed durability from some WPT.

These tests used relaxed durability to speed up test runs. Now that all
major browsers use relaxed durability by default, this just adds cruft.

Bug: none
Change-Id: I22ee2e2918ad9f33faa74e49dc6c66b08ce3aa72
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6138848
Auto-Submit: Evan Stade <estade@chromium.org>
Reviewed-by: Nathan Memmott <memmott@chromium.org>
Commit-Queue: Nathan Memmott <memmott@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1401967}

--

wpt-commits: b28af7109ba871a004f8f0b58497c80664dc55fa
wpt-pr: 49908
2025-01-10 09:26:38 +00:00

108 lines
2.7 KiB
JavaScript

// META: global=window,worker
// META: title=IDBCursor.continue() - object store
// META: script=resources/support.js
'use strict';
async_test(t => {
let db;
let count = 0;
let open_rq = createdb(t);
open_rq.onupgradeneeded = function (e) {
db = e.target.result;
t.add_cleanup(function () { db.close(); indexedDB.deleteDatabase(db.name); });
let objStore = db.createObjectStore("test", { keyPath: "key" });
for (let i = 0; i < 500; i++)
objStore.add({ key: i, val: "val_" + i });
let rq = objStore.add({ key: 500, val: "val_500" });
rq.onsuccess = t.step_func(function () {
for (let i = 999; i > 500; i--)
objStore.add({ key: i, val: "val_" + i });
});
objStore.createIndex('index', ['key', 'val']);
};
open_rq.onsuccess = function (e) {
let cursor_rq = db.transaction("test", "readwrite")
.objectStore("test")
.openCursor();
cursor_rq.onsuccess = t.step_func(function (e) {
let cursor = e.target.result,
store = e.target.source;
if (!cursor) {
assert_equals(count, 997, "cursor run count");
let rq = e.target.source.count();
rq.onsuccess = t.step_func(function (e) {
assert_equals(e.target.result, 995, "object count");
t.done();
});
return;
}
switch (cursor.key) {
case 10:
assert_equals(count, cursor.key, "count");
store.delete(11);
break;
case 12:
case 499:
case 500:
case 501:
assert_equals(count, cursor.key - 1, "count");
break;
// Delete the next key
case 510:
store.delete(511);
break;
// Delete randomly
case 512:
store.delete(611);
store.delete(499);
store.delete(500);
break;
// Delete and add a new key
case 520:
store.delete(521);
store.add({ key: 521, val: "new" });
break;
case 521:
assert_equals(cursor.value.val, "new");
break;
// We should only be here once although we're basically making the index
// "heavier" with its new key.
case 530:
assert_equals(cursor.value.val, "val_530");
cursor.update({ key: 530, val: "val_531" })
store.get(530).onsuccess = t.step_func(function (e) {
assert_equals(e.target.result.val, "val_531");
});
break;
// Shouldn't happen.
case 11:
case 511:
case 611:
assert_unreached(cursor.key + " should be deleted and never run");
break;
}
cursor.continue();
count++;
});
};
}, "Iterate and Delete elements");