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

Unified Diff: third_party/WebKit/LayoutTests/imported/web-platform-tests/IndexedDB/idbtransaction_objectStoreNames.html

Issue 1419013007: update-w3c-deps import using blink 83a52878976eaffc8753993a7689c9c178664fba: (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 1 month 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/imported/web-platform-tests/IndexedDB/idbtransaction_objectStoreNames.html
diff --git a/third_party/WebKit/LayoutTests/imported/web-platform-tests/IndexedDB/idbtransaction_objectStoreNames.html b/third_party/WebKit/LayoutTests/imported/web-platform-tests/IndexedDB/idbtransaction_objectStoreNames.html
new file mode 100644
index 0000000000000000000000000000000000000000..4d7c74501b84d005ac6a40c186551a7df221db6e
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/imported/web-platform-tests/IndexedDB/idbtransaction_objectStoreNames.html
@@ -0,0 +1,182 @@
+<!DOCTYPE html>
+<title>IndexedDB: IDBTransaction.objectStoreNames attribute</title>
+<script src="../../../resources/testharness.js"></script>
+<script src="../../../resources/testharnessreport.js"></script>
+<script>
+
+function indexeddb_test(upgrade_func, open_func, description) {
+ async_test(function(t) {
+ var dbname = document.location + '-' + t.name;
+ var del = indexedDB.deleteDatabase(dbname);
+ del.onerror = t.unreached_func('deleteDatabase should succeed');
+ var open = indexedDB.open(dbname, 1);
+ open.onerror = t.unreached_func('open should succeed');
+ open.onupgradeneeded = t.step_func(function() {
+ var db = open.result;
+ var tx = open.transaction;
+ upgrade_func(t, db, tx);
+ });
+ open.onsuccess = t.step_func(function() {
+ var db = open.result;
+ open_func(t, db);
+ });
+ }, description);
+}
+
+function with_stores_test(store_names, open_func, description) {
+ indexeddb_test(function(t, db, tx) {
+ store_names.forEach(function(name) {
+ db.createObjectStore(name);
+ });
+ }, open_func, description);
+}
+
+indexeddb_test(function(t, db, tx) {
+ assert_array_equals(tx.objectStoreNames, [],
+ 'transaction objectStoreNames should be empty');
+ assert_array_equals(db.objectStoreNames, tx.objectStoreNames,
+ 'connection and transacton objectStoreNames should match');
+
+ db.createObjectStore('s1');
+ assert_array_equals(tx.objectStoreNames, ['s1'],
+ 'transaction objectStoreNames should have new store');
+ assert_array_equals(db.objectStoreNames, tx.objectStoreNames,
+ 'connection and transacton objectStoreNames should match');
+
+ db.createObjectStore('s3');
+ assert_array_equals(tx.objectStoreNames, ['s1', 's3'],
+ 'transaction objectStoreNames should have new store');
+ assert_array_equals(db.objectStoreNames, tx.objectStoreNames,
+ 'connection and transacton objectStoreNames should match');
+
+ db.createObjectStore('s2');
+ assert_array_equals(tx.objectStoreNames, ['s1', 's2', 's3'],
+ 'transaction objectStoreNames should be sorted');
+ assert_array_equals(db.objectStoreNames, tx.objectStoreNames,
+ 'connection and transacton objectStoreNames should match');
+
+ db.deleteObjectStore('s1');
+ assert_array_equals(tx.objectStoreNames, ['s2', 's3'],
+ 'transaction objectStoreNames should be updated after delete');
+ assert_array_equals(db.objectStoreNames, tx.objectStoreNames,
+ 'connection and transacton objectStoreNames should match');
+}, function(t, db) {
+ t.done();
+}, 'IDBTransaction.objectStoreNames - during upgrade transaction');
+
+(function() {
+ var saved_tx;
+ indexeddb_test(function(t, db, tx) {
+ saved_tx = tx;
+ db.createObjectStore('s2');
+ db.createObjectStore('s3');
+ }, function(t, db) {
+ db.close();
+ var open2 = indexedDB.open(db.name, db.version + 1);
+ open2.onerror = t.unreached_func('open should succeed');
+ open2.onupgradeneeded = t.step_func(function() {
+ var db2 = open2.result;
+ var tx2 = open2.transaction;
+ assert_array_equals(tx2.objectStoreNames, ['s2', 's3'],
+ 'transaction should have previous stores in scope');
+ assert_array_equals(db2.objectStoreNames, tx2.objectStoreNames,
+ 'connection and transacton objectStoreNames should match');
+
+ db2.createObjectStore('s4');
+ assert_array_equals(tx2.objectStoreNames, ['s2', 's3', 's4'],
+ 'transaction should have new store in scope');
+ assert_array_equals(db2.objectStoreNames, tx2.objectStoreNames,
+ 'connection and transacton objectStoreNames should match');
+
+ assert_array_equals(saved_tx.objectStoreNames, ['s2', 's3'],
+ 'previous transaction objectStoreNames should be unchanged');
+ assert_array_equals(db.objectStoreNames, saved_tx.objectStoreNames,
+ 'connection and transaction objectStoreNames should match');
+ t.done();
+ });
+ }, 'IDBTransaction.objectStoreNames - value after close');
+}());
+
+with_stores_test(['s1', 's2'], function(t, db) {
+ assert_array_equals(db.transaction('s1').objectStoreNames, ['s1'],
+ 'transaction should have one store in scope');
+ assert_array_equals(db.transaction(['s1', 's2']).objectStoreNames,
+ ['s1', 's2'],
+ 'transaction should have two stores in scope');
+ t.done();
+}, 'IDBTransaction.objectStoreNames - transaction scope');
+
+with_stores_test(['s1', 's2'], function(t, db) {
+ var tx = db.transaction(['s1', 's2'], 'readwrite');
+ tx.objectStore('s1').put(0, 0);
+ tx.onabort = t.unreached_func('transaction should complete');
+ tx.oncomplete = t.step_func(function() {
+ assert_array_equals(tx.objectStoreNames, ['s1', 's2'],
+ 'objectStoreNames should return scope after transaction commits');
+ t.done();
+ });
+}, 'IDBTransaction.objectStoreNames - value after commit');
+
+with_stores_test(['s1', 's2'], function(t, db) {
+ var tx = db.transaction(['s1', 's2'], 'readwrite');
+ tx.objectStore('s1').put(0, 0);
+ tx.objectStore('s1').add(0, 0);
+ tx.oncomplete = t.unreached_func('transaction should abort');
+ tx.onabort = t.step_func(function() {
+ assert_array_equals(tx.objectStoreNames, ['s1', 's2'],
+ 'objectStoreNames should return scope after transaction aborts');
+ t.done();
+ });
+}, 'IDBTransaction.objectStoreNames - value after abort');
+
+with_stores_test(['s1', 's2', 's3'], function(t, db) {
+ assert_array_equals(db.transaction(['s3', 's2', 's1']).objectStoreNames,
+ ['s1', 's2', 's3'],
+ 'transaction objectStoreNames should be sorted');
+ t.done();
+}, 'IDBTransaction.objectStoreNames - sorting');
+
+with_stores_test(['s1', 's2'], function(t, db) {
+ assert_array_equals(
+ db.transaction(['s2', 's1', 's2']).objectStoreNames,
+ ['s1', 's2'],
+ 'transaction objectStoreNames should not have duplicates');
+ t.done();
+}, 'IDBTransaction.objectStoreNames - no duplicates');
+
+var unusual_names = [
+ '', // empty string
+
+ '\x00', // U+0000 NULL
+ '\xFF', // U+00FF LATIN SMALL LETTER Y WITH DIAERESIS
+
+ '1', // basic ASCII
+ '12', // basic ASCII
+ '123', // basic ASCII
+ 'abc', // basic ASCII
+ 'ABC', // basic ASCII
+
+ '\xA2', // U+00A2 CENT SIGN
+ '\u6C34', // U+6C34 CJK UNIFIED IDEOGRAPH (water)
+ '\uD834\uDD1E', // U+1D11E MUSICAL SYMBOL G-CLEF (UTF-16 surrogate pair)
+ '\uFFFD', // U+FFFD REPLACEMENT CHARACTER
+
+ '\uD800', // UTF-16 surrogate lead
+ '\uDC00', // UTF-16 surrogate trail
+];
+unusual_names.sort();
+
+indexeddb_test(function(t, db, tx) {
+ unusual_names.slice().reverse().forEach(function(name) {
+ db.createObjectStore(name);
+ });
+ assert_array_equals(tx.objectStoreNames, unusual_names,
+ 'transaction should have names sorted');
+}, function(t, db) {
+ var tx = db.transaction(unusual_names.slice().reverse().concat(unusual_names));
+ assert_array_equals(tx.objectStoreNames, unusual_names,
+ 'transaction should have names sorted with no duplicates');
+ t.done();
+}, 'IDBTransaction.objectStoreNames - unusual names');
+
+</script>

Powered by Google App Engine
This is Rietveld 408576698