3 <title>Transactions have a request queue
</title>
4 <link rel=
"author" href=
"mailto:odinho@opera.com" title=
"Odin Hørthe Omdal">
5 <script src=../../../resources/testharness.js
></script>
6 <script src=../../../resources/testharnessreport.js
></script>
7 <script src=support.js
></script>
11 var db
, t
= async_test(document
.title
, {timeout
: 10000}),
12 keys
= { txn
: [], txn2
: [] },
15 open_rq
.onupgradeneeded = function(e
) {
19 for (i
= 1; i
< 6; i
++)
21 os
= db
.createObjectStore("os" + i
, { autoIncrement
: true, keyPath
: "k" });
22 os
.add({ os
: "os" + i
});
23 os
.put({ os
: "os" + i
, k
: i
});
24 os
.add({ os
: "os" + i
});
28 open_rq
.onsuccess = function(e
) {
29 var txn
= db
.transaction(["os2", "os1", "os3", "os5"])
30 txn
.objectStore("os1").openCursor().onsuccess
= reg("txn")
31 txn
.objectStore("os3").openCursor().onsuccess
= reg("txn")
32 txn
.objectStore("os1").get(2).onsuccess
= reg("txn")
33 txn
.objectStore("os2").get(3).onsuccess
= reg("txn")
35 var txn2
= db
.transaction(["os4", "os3", "os1", "os5"])
36 var os4
= txn2
.objectStore("os4")
38 for (var i
=0; i
< 3; i
++) {
39 os4
.openCursor().onsuccess
= reg("txn2")
40 os4
.get(5).onsuccess
= reg("txn2")
41 os4
.get(4).onsuccess
= reg("txn2")
42 txn
.objectStore("os2").get(1).onsuccess
= reg("txn")
43 txn2
.objectStore("os3").get(1).onsuccess
= reg("txn2")
46 txn2
.objectStore("os1").get(2).onsuccess
= reg("txn2")
47 txn
.objectStore("os1").openCursor(null, "prev").onsuccess
= reg("txn")
48 os4
.openCursor(null, "prev").onsuccess
= reg("txn2")
50 txn
.oncomplete
= t
.step_func(finish
);
51 txn2
.oncomplete
= t
.step_func(finish
);
56 return t
.step_func(function (e
) {
57 var v
= e
.target
.result
;
58 if (v
.value
) v
= v
.value
;
59 keys
[n
].push(v
.os
+ ": " + v
.k
);
68 assert_array_equals(keys
['txn'], [
73 "os2: 1", "os2: 1", "os2: 1",
75 ], 'transaction keys');
77 assert_array_equals(keys
['txn2'], [
78 "os4: 1", "os4: 5", "os4: 4", "os3: 1",
79 "os4: 1", "os4: 5", "os4: 4", "os3: 1",
80 "os4: 1", "os4: 5", "os4: 4", "os3: 1",
83 ], 'transaction 2 keys');