diff options
author | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
---|---|---|
committer | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
commit | 5f8de423f190bbb79a62f804151bc24824fa32d8 (patch) | |
tree | 10027f336435511475e392454359edea8e25895d /testing/web-platform/tests/IndexedDB/idbobjectstore-rename-abort.html | |
parent | 49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff) | |
download | UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip |
Add m-esr52 at 52.6.0
Diffstat (limited to 'testing/web-platform/tests/IndexedDB/idbobjectstore-rename-abort.html')
-rw-r--r-- | testing/web-platform/tests/IndexedDB/idbobjectstore-rename-abort.html | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/testing/web-platform/tests/IndexedDB/idbobjectstore-rename-abort.html b/testing/web-platform/tests/IndexedDB/idbobjectstore-rename-abort.html new file mode 100644 index 000000000..b59117a80 --- /dev/null +++ b/testing/web-platform/tests/IndexedDB/idbobjectstore-rename-abort.html @@ -0,0 +1,120 @@ +<!DOCTYPE html> +<title>IndexedDB: object store renaming support in aborted transactions</title> +<link rel="help" + href="https://w3c.github.io/IndexedDB/#dom-idbobjectstore-name"> +<link rel="author" href="pwnall@chromium.org" title="Victor Costan"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="support-promises.js"></script> +<script> + +promise_test(testCase => { + const dbName = databaseName(testCase); + let bookStore = null, bookStore2 = null; + return createDatabase(testCase, (database, transaction) => { + createBooksStore(testCase, database); + }).then(database => { + database.close(); + }).then(() => migrateDatabase(testCase, 2, (database, transaction) => { + bookStore = transaction.objectStore('books'); + bookStore.name = 'renamed_books'; + + transaction.abort(); + + assert_equals( + bookStore.name, 'books', + 'IDBObjectStore.name should not reflect the rename any more ' + + 'immediately after transaction.abort() returns'); + assert_array_equals( + database.objectStoreNames, ['books'], + 'IDBDatabase.objectStoreNames should not reflect the rename ' + + 'any more immediately after transaction.abort() returns'); + assert_array_equals( + transaction.objectStoreNames, ['books'], + 'IDBTransaction.objectStoreNames should not reflect the ' + + 'rename any more immediately after transaction.abort() returns'); + })).then(event => { + assert_equals(bookStore.name, 'books', + 'IDBObjectStore.name should not reflect the rename any more ' + + 'after the versionchange transaction is aborted'); + const request = indexedDB.open(dbName, 1); + return requestWatcher(testCase, request).wait_for('success'); + }).then(event => { + const database = event.target.result; + assert_array_equals( + database.objectStoreNames, ['books'], + 'IDBDatabase.objectStoreNames should not reflect the rename ' + + 'after the versionchange transaction is aborted'); + + const transaction = database.transaction('books', 'readonly'); + bookStore2 = transaction.objectStore('books'); + return checkStoreContents( + testCase, bookStore2, + 'Aborting an object store rename transaction should not change ' + + "the store's records").then(() => database.close()); + }).then(() => { + assert_equals( + bookStore.name, 'books', + 'IDBObjectStore used in aborted rename transaction should not ' + + 'reflect the rename after the transaction is aborted'); + assert_equals( + bookStore2.name, 'books', + 'IDBObjectStore obtained after an aborted rename transaction ' + + 'should not reflect the rename'); + }); +}, 'IndexedDB object store rename in aborted transaction'); + +promise_test(testCase => { + const dbName = databaseName(testCase); + let notBookStore = null; + return createDatabase(testCase, (database, transaction) => { + }).then(database => { + database.close(); + }).then(() => migrateDatabase(testCase, 2, (database, transaction) => { + notBookStore = createNotBooksStore(testCase, database); + notBookStore.name = 'not_books_renamed'; + notBookStore.name = 'not_books_renamed_again'; + + transaction.abort(); + + assert_equals( + notBookStore.name, 'not_books_renamed_again', + 'IDBObjectStore.name should reflect the last rename ' + + 'immediately after transaction.abort() returns'); + assert_array_equals( + database.objectStoreNames, [], + 'IDBDatabase.objectStoreNames should not reflect the creation ' + + 'or the rename any more immediately after transaction.abort() ' + + 'returns'); + assert_array_equals( + transaction.objectStoreNames, [], + 'IDBTransaction.objectStoreNames should not reflect the ' + + 'creation or the rename any more immediately after ' + + 'transaction.abort() returns'); + assert_array_equals(notBookStore.indexNames, [], + 'IDBObjectStore.indexNames for the newly created store ' + + 'should be empty immediately after transaction.abort() ' + + 'returns'); + })).then(event => { + assert_equals( + notBookStore.name, 'not_books_renamed_again', + 'IDBObjectStore.name should reflect the last rename after the ' + + 'versionchange transaction is aborted'); + assert_array_equals(notBookStore.indexNames, [], + 'IDBObjectStore.indexNames for the newly created store ' + + 'should be empty after the versionchange transaction is aborted ' + + 'returns'); + const request = indexedDB.open(dbName, 1); + return requestWatcher(testCase, request).wait_for('success'); + }).then(event => { + const database = event.target.result; + assert_array_equals( + database.objectStoreNames, [], + 'IDBDatabase.objectStoreNames should not reflect the creation or ' + + 'the rename after the versionchange transaction is aborted'); + + database.close(); + }); +}, 'IndexedDB object store creation and rename in an aborted transaction'); + +</script> |