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

Side by Side Diff: third_party/WebKit/LayoutTests/storage/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 unified diff | Download patch
OLDNEW
(Empty)
1 <!DOCTYPE html>
2 <title>IndexedDB: IDBTransaction.objectStoreNames attribute</title>
3 <script src="../../resources/testharness.js"></script>
4 <script src="../../resources/testharnessreport.js"></script>
5 <script>
6
7 async_test(function(t) {
8 var dbname = document.location + '-' + t.name;
9 var del = indexedDB.deleteDatabase(dbname);
10 del.onerror = t.unreached_func('deleteDatabase should succeed');
11 var open = indexedDB.open(dbname, 1);
12 open.onerror = t.unreached_func('open should succeed');
13
14 var tx;
15 open.onupgradeneeded = t.step_func(function() {
16 var db = open.result;
17 tx = open.transaction;
18 assert_array_equals(db.objectStoreNames, [],
19 'database should have no stores');
20 assert_array_equals(tx.objectStoreNames, [],
21 'transaction objectStoreNames should be empty');
22
23 db.createObjectStore('s1');
24 assert_array_equals(db.objectStoreNames, ['s1'],
25 'database should have one store');
26 assert_array_equals(tx.objectStoreNames, ['s1'],
27 'transaction objectStoreNames should have new store');
28
29 db.createObjectStore('s3');
30 assert_array_equals(db.objectStoreNames, ['s1', 's3'],
31 'database should have two stores');
32 assert_array_equals(tx.objectStoreNames, ['s1', 's3'],
33 'transaction objectStoreNames should have new store');
34
35 db.createObjectStore('s2');
36 assert_array_equals(db.objectStoreNames, ['s1', 's2', 's3'],
37 'database should have three stores');
38 assert_array_equals(tx.objectStoreNames, ['s1', 's2', 's3'],
39 'transaction objectStoreNames should be sorted');
40
41 db.deleteObjectStore('s1');
42 assert_array_equals(db.objectStoreNames, ['s2', 's3'],
43 'database should have two stores');
44 assert_array_equals(tx.objectStoreNames, ['s2', 's3'],
45 'transaction objectStoreNames should be updated after delete');
46 });
47 open.onsuccess = t.step_func(function() {
48 var db = open.result;
49 db.close();
50
51 assert_array_equals(db.objectStoreNames, ['s2', 's3'],
52 'connection should have snapshot of store names after close');
53 assert_array_equals(tx.objectStoreNames, ['s2', 's3'],
54 'transaction should have snapshot of store names after close');
55
56 var open2 = indexedDB.open(dbname, 2);
57 open2.onerror = t.unreached_func('open should succeed');
58 open2.onupgradeneeded = t.step_func(function() {
59 var db2 = open2.result;
60 var tx2 = open2.transaction;
61 assert_array_equals(db2.objectStoreNames, ['s2', 's3'],
62 'database should have two stores');
63 assert_array_equals(tx2.objectStoreNames, ['s2', 's3'],
64 'transaction should have two stores in scope');
65
66 db2.createObjectStore('s4');
67 assert_array_equals(db2.objectStoreNames, ['s2', 's3', 's4'],
68 'database should have three stores');
69 assert_array_equals(tx2.objectStoreNames, ['s2', 's3', 's4'],
70 'transaction should have new store in scope');
71
72 assert_array_equals(db.objectStoreNames, ['s2', 's3'],
73 'previous connection objectStoreNames should be unchanged');
74 assert_array_equals(tx.objectStoreNames, ['s2', 's3'],
75 'previous transaction objectStoreNames should be unchanged');
76
77 t.done();
78 });
79 });
80
81 }, 'IDBTransaction.objectStoreNames in upgrade transactions');
82
83 async_test(function(t) {
84 var dbname = document.location + '-' + t.name;
85 var del = indexedDB.deleteDatabase(dbname);
86 del.onerror = t.unreached_func('deleteDatabase should succeed');
87 var open = indexedDB.open(dbname, 1);
88 open.onerror = t.unreached_func('open should succeed');
89
90 open.onupgradeneeded = t.step_func(function() {
91 var db = open.result;
92 assert_array_equals(db.objectStoreNames, [],
93 'database should have no stores');
94 db.createObjectStore('s1');
95 db.createObjectStore('s2');
96 db.createObjectStore('s3');
97 assert_array_equals(db.objectStoreNames, ['s1', 's2', 's3'],
98 'database should have three stores');
99 });
100 open.onsuccess = t.step_func(function() {
101 var db = open.result;
102 assert_array_equals(db.transaction('s1').objectStoreNames, ['s1'],
103 'transaction should have one store in scope');
104
105 assert_array_equals(db.transaction(['s1', 's2']).objectStoreNames,
106 ['s1', 's2'],
107 'transaction should have two stores in scope');
108
109 assert_array_equals(db.transaction(['s3', 's1']).objectStoreNames,
110 ['s1', 's3'],
111 'transaction objectStoreNames should be sorted');
112
113 assert_array_equals(
114 db.transaction(['s2', 's1', 's2']).objectStoreNames,
115 ['s1', 's2'],
116 'transaction objectStoreNames should not have duplicates');
117 var tx = db.transaction(['s1', 's2']);
118 tx.oncomplete = t.step_func(function() {
119 assert_array_equals(tx.objectStoreNames, ['s1', 's2'],
120 'transaction objectStoreNames should be unchanged ' +
121 'when finished');
122 db.close();
123 t.done();
124 });
125 });
126 }, 'IDBTransaction.objectStoreNames in simple transactions');
127
128 async_test(function(t) {
129 var dbname = document.location + '-' + t.name;
130 var del = indexedDB.deleteDatabase(dbname);
131 del.onerror = t.unreached_func('deleteDatabase should succeed');
132 var open = indexedDB.open(dbname, 1);
133 open.onerror = t.unreached_func('open should succeed');
134
135 var names = [
136 '', // empty string
137
138 '\x00', // U+0000 NULL
139 '\xFF', // U+00FF LATIN SMALL LETTER Y WITH DIAERESIS
140
141 '1', // basic ASCII
142 '12', // basic ASCII
143 '123', // basic ASCII
144 'abc', // basic ASCII
145 'ABC', // basic ASCII
146
147 '\xA2', // U+00A2 CENT SIGN
148 '\u6C34', // U+6C34 CJK UNIFIED IDEOGRAPH (water)
149 '\uD834\uDD1E', // U+1D11E MUSICAL SYMBOL G-CLEF (UTF-16 surrogate pair)
150 '\uFFFD', // U+FFFD REPLACEMENT CHARACTER
151
152 '\uD800', // UTF-16 surrogate lead
153 '\uDC00', // UTF-16 surrogate trail
154 ];
155 names.sort();
156
157 open.onupgradeneeded = t.step_func(function() {
158 var db = open.result;
159 var tx = open.transaction;
160 assert_array_equals(db.objectStoreNames, [],
161 'database should have no stores');
162 assert_array_equals(tx.objectStoreNames, [],
163 'transaction should have no stores');
164
165 names.slice().reverse().forEach(function(name) {
166 db.createObjectStore(name);
167 });
168
169 assert_array_equals(db.objectStoreNames, names,
170 'database should have names sorted');
171 assert_array_equals(tx.objectStoreNames, names,
172 'transaction should have names sorted');
173 });
174 open.onsuccess = t.step_func(function() {
175 var db = open.result;
176 var tx = db.transaction(names.slice().reverse().concat(names));
177
178 assert_array_equals(db.objectStoreNames, names,
179 'database should have names sorted with no duplicates');
180 assert_array_equals(tx.objectStoreNames, names,
181 'transaction should have names sorted with no duplicates');
182
183 db.close();
184 t.done();
185 });
186 }, 'IDBTransaction.objectStoreNames are sorted');
187
188
189 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698