Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / LayoutTests / imported / web-platform-tests / IndexedDB / transaction_bubble-and-capture.htm
1 <!DOCTYPE html>
2 <meta charset=utf-8>
3 <title>Capture and bubble</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>
8
9 <script>
10     var events = [];
11
12     var open_rq = createdb(async_test(document.title, {timeout: 10000}));
13     open_rq.onupgradeneeded = function(e) {
14         var db = e.target.result;
15         var txn = e.target.transaction;
16         var store = db.createObjectStore("store");
17         var rq1 = store.add("", 1);
18         var rq2 = store.add("", 1);
19
20         db.onerror = undefined; // We will run db.error, but don't let that fail the test
21
22         log_events('db', db, 'success');
23         log_events('db', db, 'error');
24
25         log_events('txn', txn, 'success');
26         log_events('txn', txn, 'error');
27
28         log_events('rq1', rq1, 'success');
29         log_events('rq1', rq1, 'error');
30
31         log_events('rq2', rq2, 'success');
32         log_events('rq2', rq2, 'error');
33
34         // Don't let it get to abort
35         db.addEventListener('error', function(e) { e.preventDefault(); }, false);
36     }
37
38     open_rq.onsuccess = function(e) {
39         log("open_rq.success")(e);
40         assert_object_equals(events, [
41                                        "capture db.success",
42                                        "capture txn.success",
43                                        "capture rq1.success",
44                                        "bubble  rq1.success",
45
46                                        "capture db.error: ConstraintError",
47                                        "capture txn.error: ConstraintError",
48                                        "capture rq2.error: ConstraintError",
49                                        "bubble  rq2.error: ConstraintError",
50                                        "bubble  txn.error: ConstraintError",
51                                        "bubble  db.error: ConstraintError",
52
53                                        "open_rq.success",
54                                      ],
55                             "events");
56         this.done();
57     }
58
59
60     function log_events(type, obj, evt) {
61         obj.addEventListener(evt, log('capture ' + type + '.' + evt), true);
62         obj.addEventListener(evt, log('bubble  ' + type + '.' + evt), false);
63     }
64
65     function log(msg) {
66         return function(e) {
67             if(e && e.target && e.target.error)
68                 events.push(msg + ": " + e.target.error.name);
69             else
70                 events.push(msg);
71         };
72     }
73 </script>
74
75 <div id=log></div>