-
Notifications
You must be signed in to change notification settings - Fork 3.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
IDB WPTs: Extend several IDB WPTs to run on workers (Part 2)
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
1 parent
eb87bbb
commit 477be4a
Showing
6 changed files
with
142 additions
and
153 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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()'); |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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'); |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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'); |
This file was deleted.
Oops, something went wrong.