Skip to content

Commit

Permalink
IDB WPTs: Extend several IDB WPTs to run on workers (Part 2)
Browse files Browse the repository at this point in the history
This set of IndexedDB WPTs currently only run in a window environment.
This change extends them to also run in dedicated, shared, and service
worker environments.

Bug: 41455766
Change-Id: Ib973b26a725d2b3c05e2696cee208c052e563632
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5926431
Commit-Queue: Rahul Singh <rahsin@microsoft.com>
Reviewed-by: Evan Stade <estade@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1369491}
  • Loading branch information
rahulsingh-msft authored and chromium-wpt-export-bot committed Oct 16, 2024
1 parent eb87bbb commit 477be4a
Show file tree
Hide file tree
Showing 6 changed files with 142 additions and 153 deletions.
87 changes: 87 additions & 0 deletions IndexedDB/cursor-overloads.any.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
// META: title=IndexedDB
// META: global=window,worker
// META: script=resources/support.js

'use strict';

async_test(t => {
let db;
let trans;
let store;
let index;
let request = createdb(t);

request.onupgradeneeded = function(e) {
db = e.target.result;
store = db.createObjectStore('store');
index = store.createIndex('index', 'value');
store.put({value: 0}, 0);
trans = request.transaction;
trans.oncomplete = verifyOverloads;
};

function verifyOverloads() {
trans = db.transaction('store', 'readonly', {durability: 'relaxed'});
store = trans.objectStore('store');
index = store.index('index');

checkCursorDirection(store.openCursor(), 'next');
checkCursorDirection(store.openCursor(0), 'next');
checkCursorDirection(store.openCursor(0, 'next'), 'next');
checkCursorDirection(store.openCursor(0, 'nextunique'), 'nextunique');
checkCursorDirection(store.openCursor(0, 'prev'), 'prev');
checkCursorDirection(store.openCursor(0, 'prevunique'), 'prevunique');

checkCursorDirection(store.openCursor(IDBKeyRange.only(0)), 'next');
checkCursorDirection(store.openCursor(IDBKeyRange.only(0), 'next'), 'next');
checkCursorDirection(
store.openCursor(IDBKeyRange.only(0), 'nextunique'), 'nextunique');
checkCursorDirection(store.openCursor(IDBKeyRange.only(0), 'prev'), 'prev');
checkCursorDirection(
store.openCursor(IDBKeyRange.only(0), 'prevunique'), 'prevunique');

checkCursorDirection(index.openCursor(), 'next');
checkCursorDirection(index.openCursor(0), 'next');
checkCursorDirection(index.openCursor(0, 'next'), 'next');
checkCursorDirection(index.openCursor(0, 'nextunique'), 'nextunique');
checkCursorDirection(index.openCursor(0, 'prev'), 'prev');
checkCursorDirection(index.openCursor(0, 'prevunique'), 'prevunique');

checkCursorDirection(index.openCursor(IDBKeyRange.only(0)), 'next');
checkCursorDirection(index.openCursor(IDBKeyRange.only(0), 'next'), 'next');
checkCursorDirection(
index.openCursor(IDBKeyRange.only(0), 'nextunique'), 'nextunique');
checkCursorDirection(index.openCursor(IDBKeyRange.only(0), 'prev'), 'prev');
checkCursorDirection(
index.openCursor(IDBKeyRange.only(0), 'prevunique'), 'prevunique');

checkCursorDirection(index.openKeyCursor(), 'next');
checkCursorDirection(index.openKeyCursor(0), 'next');
checkCursorDirection(index.openKeyCursor(0, 'next'), 'next');
checkCursorDirection(index.openKeyCursor(0, 'nextunique'), 'nextunique');
checkCursorDirection(index.openKeyCursor(0, 'prev'), 'prev');
checkCursorDirection(index.openKeyCursor(0, 'prevunique'), 'prevunique');

checkCursorDirection(index.openKeyCursor(IDBKeyRange.only(0)), 'next');
checkCursorDirection(
index.openKeyCursor(IDBKeyRange.only(0), 'next'), 'next');
checkCursorDirection(
index.openKeyCursor(IDBKeyRange.only(0), 'nextunique'), 'nextunique');
checkCursorDirection(
index.openKeyCursor(IDBKeyRange.only(0), 'prev'), 'prev');
checkCursorDirection(
index.openKeyCursor(IDBKeyRange.only(0), 'prevunique'), 'prevunique');

t.done();
}

function checkCursorDirection(request, direction) {
request.onsuccess = function(event) {
assert_not_equals(
event.target.result, null, 'Check the result is not null')
assert_equals(
event.target.result.direction, direction,
'Check the result direction');
};
}
}, 'Validate the overloads of IDBObjectStore.openCursor(), IDBIndex.openCursor() and IDBIndex.openKeyCursor()');
88 changes: 0 additions & 88 deletions IndexedDB/cursor-overloads.htm

This file was deleted.

23 changes: 23 additions & 0 deletions IndexedDB/delete-request-queue.any.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
// META: title=IndexedDB
// META: global=window,worker
// META: script=resources/support.js

'use strict';

let saw;
indexeddb_test(
(t, db) => {
this.saw = expect(t, ['delete1', 'delete2']);
let r = indexedDB.deleteDatabase(db.name);
r.onerror = t.unreached_func('delete should succeed');
r.onsuccess = t.step_func(e => saw('delete1'));
},
(t, db) => {
let r = indexedDB.deleteDatabase(db.name);
r.onerror = t.unreached_func('delete should succeed');
r.onsuccess = t.step_func(e => saw('delete2'));

db.close();
t.done();
},
'Deletes are processed as a FIFO queue');
27 changes: 0 additions & 27 deletions IndexedDB/delete-request-queue.html

This file was deleted.

32 changes: 32 additions & 0 deletions IndexedDB/error-attributes.any.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
// META: title=IndexedDB
// META: global=window,worker
// META: script=resources/support.js

'use strict';

indexeddb_test(
function(t, db) {
db.createObjectStore('store');
},
function(t, db) {
let tx = db.transaction('store', 'readwrite', {durability: 'relaxed'});
let store = tx.objectStore('store');
let r1 = store.add('value', 'key');
r1.onerror = t.unreached_func('first add should succeed');

let r2 = store.add('value', 'key');
r2.onsuccess = t.unreached_func('second add should fail');

r2.onerror = t.step_func(function() {
assert_true(r2.error instanceof DOMException);
assert_equals(r2.error.name, 'ConstraintError');
});

tx.oncomplete = t.unreached_func('transaction should not complete');
tx.onabort = t.step_func(function() {
assert_true(tx.error instanceof DOMException);
assert_equals(tx.error.name, 'ConstraintError');
t.done();
});
},
'IDBRequest and IDBTransaction error properties should be DOMExceptions');
38 changes: 0 additions & 38 deletions IndexedDB/error-attributes.html

This file was deleted.

0 comments on commit 477be4a

Please sign in to comment.