Skip to content

Commit

Permalink
IDB WPTs: Extend idbobjectstore-exception related tests to workers
Browse files Browse the repository at this point in the history
The update modifies idbobjectstore-exception related WPTs to run not
only in window environments but also on dedicated, service, and shared
workers.

Change-Id: I05fbe6505699b7132501a934dfac9cfb814404c2
Bug: 41455766
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6200286
Auto-Submit: Garima Chadha <[email protected]>
Reviewed-by: Steve Becker <[email protected]>
Commit-Queue: Steve Becker <[email protected]>
Reviewed-by: Rahul Singh <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1413300}
  • Loading branch information
Garima Chadha authored and chromium-wpt-export-bot committed Jan 30, 2025
1 parent e6846ed commit 9c8557b
Show file tree
Hide file tree
Showing 10 changed files with 354 additions and 327 deletions.
81 changes: 81 additions & 0 deletions IndexedDB/idbobjectstore-add-put-exception-order.any.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
// META: global=window,worker
// META: title=IndexedDB: IDBObjectStore add()/put() Exception Ordering
// META: script=resources/support.js

// Spec: https://w3c.github.io/IndexedDB/#dom-idbobjectstore-put
// Spec: https://w3c.github.io/IndexedDB/#dom-idbobjectstore-add

'use strict';

['put', 'add'].forEach(method => {
indexeddb_test(
(t, db) => {
const store = db.createObjectStore('s');
const store2 = db.createObjectStore('s2');

db.deleteObjectStore('s2');

setTimeout(
t.step_func(() => {
assert_throws_dom(
'InvalidStateError',
() => {
store2[method]('key', 'value');
},
'"has been deleted" check (InvalidStateError) should precede ' +
'"not active" check (TransactionInactiveError)');
t.done();
}),
0);
},
(t, db) => {},
`IDBObjectStore.${method} exception order: ` +
'InvalidStateError vs. TransactionInactiveError');

indexeddb_test(
(t, db) => {
const store = db.createObjectStore('s');
},
(t, db) => {
const tx = db.transaction('s', 'readonly');
const store = tx.objectStore('s');

setTimeout(
t.step_func(() => {
assert_throws_dom(
'TransactionInactiveError',
() => {
store[method]('key', 'value');
},
'"not active" check (TransactionInactiveError) should precede ' +
'"read only" check (ReadOnlyError)');
t.done();
}),
0);
},

`IDBObjectStore.${method} exception order: ` +
'TransactionInactiveError vs. ReadOnlyError');

indexeddb_test(
(t, db) => {
const store = db.createObjectStore('s');
},
(t, db) => {
const tx = db.transaction('s', 'readonly');
const store = tx.objectStore('s');

assert_throws_dom(
'ReadOnlyError',
() => {
store[method]({}, 'value');
},
'"read only" check (ReadOnlyError) should precede ' +
'key/data check (DataError)');

t.done();
},

`IDBObjectStore.${method} exception order: ` +
'ReadOnlyError vs. DataError');
});
74 changes: 0 additions & 74 deletions IndexedDB/idbobjectstore-add-put-exception-order.html

This file was deleted.

56 changes: 56 additions & 0 deletions IndexedDB/idbobjectstore-clear-exception-order.any.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
// META: global=window,worker
// META: title=IndexedDB: IDBObjectStore clear() Exception Ordering
// META: script=resources/support.js

// Spec: https://w3c.github.io/IndexedDB/#dom-idbobjectstore-clear

'use strict';

indexeddb_test(
(t, db) => {
const store = db.createObjectStore('s');
const store2 = db.createObjectStore('s2');

db.deleteObjectStore('s2');

setTimeout(
t.step_func(() => {
assert_throws_dom(
'InvalidStateError',
() => {
store2.clear();
},
'"has been deleted" check (InvalidStateError) should precede ' +
'"not active" check (TransactionInactiveError)');
t.done();
}),
0);
},
(t, db) => {},
'IDBObjectStore.clear exception order: ' +
'InvalidStateError vs. TransactionInactiveError');

indexeddb_test(
(t, db) => {
const store = db.createObjectStore('s');
},
(t, db) => {
const tx = db.transaction('s', 'readonly');
const store = tx.objectStore('s');

setTimeout(
t.step_func(() => {
assert_throws_dom(
'TransactionInactiveError',
() => {
store.clear();
},
'"not active" check (TransactionInactiveError) should precede ' +
'"read only" check (ReadOnlyError)');
t.done();
}),
0);
},

'IDBObjectStore.clear exception order: ' +
'TransactionInactiveError vs. ReadOnlyError');
51 changes: 0 additions & 51 deletions IndexedDB/idbobjectstore-clear-exception-order.html

This file was deleted.

76 changes: 76 additions & 0 deletions IndexedDB/idbobjectstore-delete-exception-order.any.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
// META: global=window,worker
// META: title=IndexedDB: IDBObjectStore delete() Exception Ordering
// META: script=resources/support.js

// Spec: https://w3c.github.io/IndexedDB/#dom-idbobjectstore-delete

'use strict';

indexeddb_test(
(t, db) => {
const store = db.createObjectStore('s');
const store2 = db.createObjectStore('s2');

db.deleteObjectStore('s2');

setTimeout(
t.step_func(() => {
assert_throws_dom(
'InvalidStateError',
() => {
store2.delete('key');
},
'"has been deleted" check (InvalidStateError) should precede ' +
'"not active" check (TransactionInactiveError)');
t.done();
}),
0);
},
(t, db) => {},
'IDBObjectStore.delete exception order: ' +
'InvalidStateError vs. TransactionInactiveError');

indexeddb_test(
(t, db) => {
const store = db.createObjectStore('s');
},
(t, db) => {
const tx = db.transaction('s', 'readonly');
const store = tx.objectStore('s');

setTimeout(
t.step_func(() => {
assert_throws_dom(
'TransactionInactiveError',
() => {
store.delete('key');
},
'"not active" check (TransactionInactiveError) should precede ' +
'"read only" check (ReadOnlyError)');
t.done();
}),
0);
},
'IDBObjectStore.delete exception order: ' +
'TransactionInactiveError vs. ReadOnlyError');

indexeddb_test(
(t, db) => {
const store = db.createObjectStore('s');
},
(t, db) => {
const tx = db.transaction('s', 'readonly');
const store = tx.objectStore('s');

assert_throws_dom(
'ReadOnlyError',
() => {
store.delete({});
},
'"read only" check (ReadOnlyError) should precede ' +
'key/data check (DataError)');

t.done();
},
'IDBObjectStore.delete exception order: ' +
'ReadOnlyError vs. DataError');
Loading

0 comments on commit 9c8557b

Please sign in to comment.