|
1 <!DOCTYPE html> |
|
2 <html> |
|
3 <body> |
|
4 foobar! |
|
5 </body> |
|
6 <script> |
|
7 var data = [ |
|
8 { id: "0", name: "foo" }, |
|
9 ]; |
|
10 |
|
11 var action = window.location.search.substring(1); |
|
12 var finished = false; |
|
13 var created = false; // We use that for 'read-no' action. |
|
14 |
|
15 function finish(value) { |
|
16 value ? alert('success') : alert('failure'); |
|
17 finished = true; |
|
18 } |
|
19 |
|
20 var request = window.indexedDB.open('AppIsolationTest'); |
|
21 |
|
22 request.onupgradeneeded = function(event) { |
|
23 if (finished) { |
|
24 finish(false); |
|
25 return; |
|
26 } |
|
27 |
|
28 switch (action) { |
|
29 case 'read-no': |
|
30 created = true; |
|
31 break; |
|
32 case 'read-yes': |
|
33 finish(false); |
|
34 break; |
|
35 case 'write': |
|
36 created = true; |
|
37 |
|
38 var db = event.target.result; |
|
39 |
|
40 var objectStore = db.createObjectStore("test", { keyPath: "id" }); |
|
41 for (var i in data) { |
|
42 objectStore.add(data[i]); |
|
43 } |
|
44 break; |
|
45 } |
|
46 } |
|
47 |
|
48 request.onsuccess = function(event) { |
|
49 if (finished) { |
|
50 finish(false); |
|
51 return; |
|
52 } |
|
53 |
|
54 var db = event.target.result; |
|
55 |
|
56 // Think about close the db! |
|
57 switch (action) { |
|
58 case 'read-no': |
|
59 db.close(); |
|
60 |
|
61 if (created) { // That means we have created it. |
|
62 indexedDB.deleteDatabase('AppIsolationTest').onsuccess = function() { |
|
63 finish(true); |
|
64 }; |
|
65 } else { |
|
66 finish(false); |
|
67 } |
|
68 break; |
|
69 case 'read-yes': |
|
70 db.transaction("test").objectStore("test").get("0").onsuccess = function(event) { |
|
71 var name = event.target.result.name; |
|
72 db.close(); |
|
73 |
|
74 indexedDB.deleteDatabase('AppIsolationTest').onsuccess = function() { |
|
75 finish(name == 'foo'); |
|
76 }; |
|
77 }; |
|
78 break; |
|
79 case 'write': |
|
80 db.close(); |
|
81 |
|
82 // Success only if the db was actually created. |
|
83 finish(created); |
|
84 break; |
|
85 } |
|
86 }; |
|
87 </script> |
|
88 </html> |