diff options
Diffstat (limited to 'testing/web-platform/tests/IndexedDB/request_bubble-and-capture.htm')
-rw-r--r-- | testing/web-platform/tests/IndexedDB/request_bubble-and-capture.htm | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/testing/web-platform/tests/IndexedDB/request_bubble-and-capture.htm b/testing/web-platform/tests/IndexedDB/request_bubble-and-capture.htm new file mode 100644 index 0000000000..8238e2c9ca --- /dev/null +++ b/testing/web-platform/tests/IndexedDB/request_bubble-and-capture.htm @@ -0,0 +1,69 @@ +<!DOCTYPE html> +<meta charset=utf-8> +<title>Bubbling and capturing of request events</title> +<link rel="author" href="mailto:odinho@opera.com" title="Odin Hørthe Omdal"> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script src=resources/support.js></script> + +<script> + var events = []; + + var open_rq = createdb(async_test()); + open_rq.onupgradeneeded = function(e) { + var db = e.target.result; + var txn = e.target.transaction; + var store = db.createObjectStore("s"); + var rq1 = store.add("", 1); + var rq2 = store.add("", 1); + db.onerror = function(){}; + + log_request(' db', db); + log_request('txn', txn); + log_request('rq1', rq1); + log_request('rq2', rq2); + + // Don't let it get to abort + db.addEventListener('error', function(e) { e.preventDefault() }, false); + } + + open_rq.onsuccess = function(e) { + log("open_rq.success")(e); + assert_array_equals(events, [ + "capture db.success", + "capture txn.success", + "capture rq1.success", + "bubble rq1.success", + + "capture db.error: ConstraintError", + "capture txn.error: ConstraintError", + "capture rq2.error: ConstraintError", + "bubble rq2.error: ConstraintError", + "bubble txn.error: ConstraintError", + "bubble db.error: ConstraintError", + + "open_rq.success" + ], + "events"); + this.done(); + } + + + function log_request(type, obj) { + obj.addEventListener('success', log('capture ' + type + '.success'), true); + obj.addEventListener('success', log('bubble ' + type + '.success'), false); + obj.addEventListener('error', log('capture ' + type + '.error'), true); + obj.addEventListener('error', log('bubble ' + type + '.error'), false); + } + + function log(msg) { + return function(e) { + if(e && e.target && e.target.error) + events.push(msg + ": " + e.target.error.name); + else + events.push(msg); + }; + } +</script> + +<div id=log></div> |