Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(139)

Unified Diff: third_party/WebKit/LayoutTests/storage/indexeddb/open-request-queue.html

Issue 2148253003: IndexedDB: Implement explicit queue for IDBOpenDBRequests (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Use pending member, other review nits Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/LayoutTests/storage/indexeddb/open-request-queue.html
diff --git a/third_party/WebKit/LayoutTests/storage/indexeddb/open-request-queue.html b/third_party/WebKit/LayoutTests/storage/indexeddb/open-request-queue.html
new file mode 100644
index 0000000000000000000000000000000000000000..1f8b99bf1c985976c7ccc739d9e32da85f1b268d
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/storage/indexeddb/open-request-queue.html
@@ -0,0 +1,61 @@
+<!DOCTYPE html>
+<title>IndexedDB: open and delete requests are processed as a FIFO queue</title>
+<script src='../../resources/testharness.js'></script>
+<script src='../../resources/testharnessreport.js'></script>
+<script src='resources/testharness-helpers.js'></script>
+<script>
+
+async_test(t => {
+ let db_name = 'db' + self.location.pathname + '-' + t.name;
+ indexedDB.deleteDatabase(db_name);
+
+ // Open and hold connection while other requests are queued up.
+ let r = indexedDB.open(db_name, 1);
+ r.onerror = t.unreached_func('open should succeed');
+ r.onsuccess = t.step_func(e => {
+ let db = r.result;
+
+ let saw = expect(t, [
+ 'open1 success',
+ 'open1 versionchange',
+ 'delete1 blocked',
+ 'delete1 success',
+ 'open2 success',
+ 'open2 versionchange',
+ 'delete2 blocked',
+ 'delete2 success'
+ ]);
+
+ function open(token, version) {
+ let r = indexedDB.open(db_name, version);
+ r.onsuccess = t.step_func(e => {
+ saw(token + ' success');
+ let db = r.result;
+ db.onversionchange = t.step_func(e => {
+ saw(token + ' versionchange');
+ setTimeout(t.step_func(() => db.close()), 0);
+ });
+ });
+ r.onblocked = t.step_func(e => saw(token + ' blocked'));
+ r.onerror = t.unreached_func('open should succeed');
+ }
+
+ function deleteDatabase(token) {
+ let r = indexedDB.deleteDatabase(db_name);
+ r.onsuccess = t.step_func(e => saw(token + ' success'));
+ r.onblocked = t.step_func(e => saw(token + ' blocked'));
+ r.onerror = t.unreached_func('deleteDatabase should succeed');
+ }
+
+ open('open1', 2);
+ deleteDatabase('delete1');
+ open('open2', 3);
+ deleteDatabase('delete2');
+
+ // Now unblock the queue.
+ db.close();
+ });
+
+}, 'Opens and deletes are processed in order');
+
+</script>

Powered by Google App Engine
This is Rietveld 408576698