| Index: LayoutTests/storage/indexeddb/metadata-race.html
|
| diff --git a/LayoutTests/storage/indexeddb/metadata-race.html b/LayoutTests/storage/indexeddb/metadata-race.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..2ac0bc479445472ba391de0bb004ab802e81771b
|
| --- /dev/null
|
| +++ b/LayoutTests/storage/indexeddb/metadata-race.html
|
| @@ -0,0 +1,40 @@
|
| +<!DOCTYPE html>
|
| +<script src="../../fast/js/resources/js-test-pre.js"></script>
|
| +<script src="resources/shared.js"></script>
|
| +<script>
|
| +
|
| +description("Ensure IndexedDB transactions created before open onsuccess have correct metadata");
|
| +
|
| +indexedDBTest(prepareDatabase, onOpenSuccess);
|
| +function prepareDatabase(evt)
|
| +{
|
| + preamble(evt);
|
| + evalAndLog("db = event.target.result");
|
| + evalAndLog("store = db.createObjectStore('store')");
|
| + evalAndLog("store.createIndex('index', 'keyPath')");
|
| + evalAndLog("transaction = event.target.transaction");
|
| + shouldNotThrow("index = transaction.objectStore('store').index('index')");
|
| + transaction.oncomplete = onTransactionComplete;
|
| +}
|
| +
|
| +function onTransactionComplete(evt)
|
| +{
|
| + preamble(evt);
|
| + debug("In multiprocess mode, 'complete' event may be dispatched before\n" +
|
| + "the 'success' arrives with updated metadata. Ensure the new metadata\n" +
|
| + "is still used for transactions.");
|
| + evalAndLog("store = db.transaction('store').objectStore('store')");
|
| + shouldNotThrow("index = store.index('index')");
|
| +}
|
| +
|
| +function onOpenSuccess(evt)
|
| +{
|
| + preamble(evt);
|
| + evalAndLog("db = event.target.result");
|
| + evalAndLog("store = db.transaction('store').objectStore('store')");
|
| + shouldNotThrow("index = store.index('index')");
|
| + finishJSTest();
|
| +}
|
| +
|
| +</script>
|
| +<script src="../../fast/js/resources/js-test-post.js"></script>
|
|
|