Index: LayoutTests/imported/web-platform-tests/IndexedDB/transaction-create_in_versionchange.htm |
diff --git a/LayoutTests/imported/web-platform-tests/IndexedDB/transaction-create_in_versionchange.htm b/LayoutTests/imported/web-platform-tests/IndexedDB/transaction-create_in_versionchange.htm |
new file mode 100644 |
index 0000000000000000000000000000000000000000..f95ce245c1f6566a5971bc2cc4c00c363de39d9e |
--- /dev/null |
+++ b/LayoutTests/imported/web-platform-tests/IndexedDB/transaction-create_in_versionchange.htm |
@@ -0,0 +1,82 @@ |
+<!DOCTYPE html> |
+<meta charset=utf-8> |
+<title>Attempt to create new transactions inside a versionchange transaction</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=support.js></script> |
+ |
+<script> |
+ var db, events = [], |
+ open_rq = createdb(async_test()) |
+ |
+ open_rq.onupgradeneeded = function(e) { |
+ db = e.target.result |
+ |
+ db.createObjectStore("store") |
+ .add("versionchange1", 1) |
+ .addEventListener("success", log("versionchange_add.success")) |
+ |
+ assert_throws('InvalidStateError', function() { db.transaction("store") }) |
+ |
+ e.target.transaction |
+ .objectStore("store") |
+ .count(2) |
+ .addEventListener("success", log("versionchange_count.success")) |
+ |
+ assert_throws('InvalidStateError', function() { db.transaction("store", "readwrite") }) |
+ |
+ open_rq.transaction |
+ .objectStore("store") |
+ .add("versionchange2", 2) |
+ .addEventListener("success", log("versionchange_add2.success")) |
+ |
+ open_rq.transaction.oncomplete = function(e) { |
+ log("versionchange_txn.complete")(e) |
+ |
+ db.transaction("store") |
+ .objectStore("store") |
+ .count() |
+ .addEventListener("success", log("complete_count.success")) |
+ } |
+ } |
+ |
+ open_rq.onsuccess = function(e) { |
+ log("open_rq.success")(e) |
+ |
+ var txn = db.transaction("store", "readwrite") |
+ txn.objectStore("store") |
+ .put("woo", 1) |
+ .addEventListener("success", log("complete2_get.success")) |
+ |
+ txn.oncomplete = this.step_func(function(e) { |
+ assert_object_equals(events, [ |
+ "versionchange_add.success: 1", |
+ "versionchange_count.success: 0", |
+ "versionchange_add2.success: 2", |
+ "versionchange_txn.complete", |
+ |
+ "open_rq.success: [object IDBDatabase]", |
+ |
+ "complete_count.success: 2", |
+ "complete2_get.success: 1", |
+ ], |
+ "events") |
+ this.done() |
+ }) |
+ } |
+ |
+ |
+ function log(msg) { |
+ return function(e) { |
+ if(e && e.target && e.target.error) |
+ events.push(msg + ": " + e.target.error.name) |
+ else if(e && e.target && e.target.result !== undefined) |
+ events.push(msg + ": " + e.target.result) |
+ else |
+ events.push(msg) |
+ }; |
+ } |
+</script> |
+ |
+<div id=log></div> |