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

Side by Side Diff: third_party/WebKit/LayoutTests/storage/indexeddb/idbcursor-continue-exception-order.html

Issue 2415203002: Indexed DB: More exception precedence tests (Closed)
Patch Set: Review feedback - no more tx pinning, tweaked store create/delete tests to satisfy FF Created 4 years, 2 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 unified diff | Download patch
OLDNEW
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2 <title>IndexedDB: IDBCursor continue() Exception Ordering</title> 2 <title>IndexedDB: IDBCursor continue() Exception Ordering</title>
3 <meta charset=utf-8>
3 <link rel="help" href="https://w3c.github.io/IndexedDB/#dom-idbcursor-continue"> 4 <link rel="help" href="https://w3c.github.io/IndexedDB/#dom-idbcursor-continue">
4 <script src="../../resources/testharness.js"></script> 5 <script src="../../resources/testharness.js"></script>
5 <script src="../../resources/testharnessreport.js"></script> 6 <script src="../../resources/testharnessreport.js"></script>
6 <script src="resources/testharness-helpers.js"></script> 7 <script src="resources/testharness-helpers.js"></script>
7
8 <script> 8 <script>
9 9
10 indexeddb_test( 10 indexeddb_test(
11 function(t, db) { 11 (t, db) => {
12 var s = db.createObjectStore('s'); 12 const s = db.createObjectStore('s');
13 s.put('value', 'key'); 13 s.put('value', 'key');
14 }, 14 },
15 function(t, db) { 15 (t, db) => {
16 var s = db.transaction('s', 'readonly').objectStore('s'); 16 const s = db.transaction('s', 'readonly').objectStore('s');
17 var r = s.openKeyCursor(); 17 const r = s.openKeyCursor();
18 r.onsuccess = t.step_func(function() { 18 r.onsuccess = t.step_func(() => {
19 r.onsuccess = null; 19 r.onsuccess = null;
20 var cursor = r.result; 20 const cursor = r.result;
21 setTimeout(t.step_func(function() { 21 setTimeout(t.step_func(() => {
22 assert_throws('TransactionInactiveError', function() { 22 assert_throws('TransactionInactiveError', () => {
23 cursor.continue({not: "a valid key"}); 23 cursor.continue({not: "a valid key"});
24 }, '"Transaction inactive" check (TransactionInactiveError) ' + 24 }, '"Transaction inactive" check (TransactionInactiveError) ' +
25 'should precede "invalid key" check (DataError)'); 25 'should precede "invalid key" check (DataError)');
26 t.done(); 26 t.done();
27 }), 0); 27 }), 0);
28 }); 28 });
29 }, 29 },
30 'IDBCursor.continue exception order: TransactionInactiveError vs. DataError' 30 'IDBCursor.continue exception order: TransactionInactiveError vs. DataError'
31 ); 31 );
32 32
33 indexeddb_test( 33 indexeddb_test(
34 function(t, db) { 34 (t, db) => {
35 var s = db.createObjectStore('s'); 35 const s = db.createObjectStore('s');
36 s.put('value', 'key'); 36 s.put('value', 'key');
37 }, 37 },
38 function(t, db) { 38 (t, db) => {
39 var s = db.transaction('s', 'readonly').objectStore('s'); 39 const s = db.transaction('s', 'readonly').objectStore('s');
40 var r = s.openKeyCursor(); 40 const r = s.openKeyCursor();
41 r.onsuccess = t.step_func(function() { 41 r.onsuccess = t.step_func(() => {
42 r.onsuccess = null; 42 r.onsuccess = null;
43 var cursor = r.result; 43 const cursor = r.result;
44 cursor.continue();
45 r.onsuccess = t.step_func(() => {
46 setTimeout(t.step_func(() => {
47 assert_throws('TransactionInactiveError', () => {
44 cursor.continue(); 48 cursor.continue();
45 r.onsuccess = t.step_func(function() { 49 }, '"Transaction inactive" check (TransactionInactiveError) ' +
46 setTimeout(t.step_func(function() { 50 'should precede "got value flag" check (InvalidStateError)');
47 assert_throws('TransactionInactiveError', function() { 51 t.done();
48 cursor.continue(); 52 }), 0);
49 }, '"Transaction inactive" check (TransactionInactiveError) ' + 53 });
50 'should precede "got value flag" check (InvalidStateError )'); 54 });
51 t.done(); 55 },
52 }), 0); 56 'IDBCursor.continue exception order: TransactionInactiveError vs. InvalidState Error'
53 });
54 });
55 },
56 'IDBCursor.continue exception order: TransactionInactiveError vs. InvalidSta teError'
57 ); 57 );
58 58
59 indexeddb_test( 59 indexeddb_test(
60 function(t, db) { 60 (t, db) => {
61 var s = db.createObjectStore('s'); 61 const s = db.createObjectStore('s');
62 s.put('value', 'key'); 62 s.put('value', 'key');
63 }, 63 },
64 function(t, db) { 64 (t, db) => {
65 var s = db.transaction('s', 'readonly').objectStore('s'); 65 const s = db.transaction('s', 'readonly').objectStore('s');
66 var r = s.openKeyCursor(); 66 const r = s.openKeyCursor();
67 r.onsuccess = t.step_func(function() { 67 r.onsuccess = t.step_func(() => {
68 r.onsuccess = null; 68 r.onsuccess = null;
69 var cursor = r.result; 69 const cursor = r.result;
70 cursor.continue(); 70 cursor.continue();
71 assert_throws('InvalidStateError', function() { 71 assert_throws('InvalidStateError', () => {
72 cursor.continue({not: "a valid key"}); 72 cursor.continue({not: "a valid key"});
73 }, '"got value flag" check (InvalidStateError) should precede ' + 73 }, '"got value flag" check (InvalidStateError) should precede ' +
74 '"invalid key" check (DataError)'); 74 '"invalid key" check (DataError)');
75 t.done(); 75 t.done();
76 }); 76 });
77 }, 77 },
78 'IDBCursor.continue exception order: InvalidStateError vs. DataError' 78 'IDBCursor.continue exception order: InvalidStateError vs. DataError'
79 ); 79 );
80 80
81 </script> 81 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698