| Index: LayoutTests/storage/indexeddb/prefetch-race.html
|
| diff --git a/LayoutTests/storage/indexeddb/prefetch-race.html b/LayoutTests/storage/indexeddb/prefetch-race.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..ec1b7afe5d49a73be044f8d4ba346caf83dc2c96
|
| --- /dev/null
|
| +++ b/LayoutTests/storage/indexeddb/prefetch-race.html
|
| @@ -0,0 +1,55 @@
|
| +<!DOCTYPE html>
|
| +<script src="../../resources/js-test.js"></script>
|
| +<script src="resources/shared.js"></script>
|
| +<script>
|
| +
|
| +description("Ensure IndexedDB's cursor prefetch cache requests are invalidated");
|
| +
|
| +indexedDBTest(prepareDatabase, onOpenSuccess);
|
| +function prepareDatabase(evt)
|
| +{
|
| + preamble(evt);
|
| + evalAndLog("db = event.target.result");
|
| + evalAndLog("store = db.createObjectStore('store')");
|
| + debug("Populate with even records...");
|
| + for (var i = 0; i < 10; i += 2)
|
| + store.put(i, i);
|
| +}
|
| +
|
| +function onOpenSuccess(evt)
|
| +{
|
| + preamble(evt);
|
| + evalAndLog("db = event.target.result");
|
| +
|
| + evalAndLog("tx = db.transaction('store', 'readwrite')");
|
| + evalAndLog("store = tx.objectStore('store')");
|
| + evalAndLog("request = store.openCursor()");
|
| +
|
| + kPrefetchThreshold = 3;
|
| +
|
| + expected = ["0", "2", "4", "6", "7", "8", "9"];
|
| + continueCount = 0;
|
| + request.onsuccess = function cursorSuccess() {
|
| + preamble();
|
| + cursor = request.result;
|
| + if (!cursor)
|
| + return;
|
| + ++continueCount;
|
| +
|
| + expect = expected.shift();
|
| + shouldBe("cursor.key", expect);
|
| + evalAndLog("cursor.continue()");
|
| +
|
| + if (continueCount === kPrefetchThreshold) {
|
| + debug("\nThat should have triggered a prefetch, injecting odd records...");
|
| + for (var i = 1; i < 10; i += 2)
|
| + store.put(i, i);
|
| + }
|
| + };
|
| +
|
| + tx.oncomplete = function() {
|
| + shouldBe("continueCount", "7");
|
| + finishJSTest();
|
| + };
|
| +}
|
| +</script>
|
|
|