if (this.importScripts) {
importScripts('../../../resources/js-test.js');
importScripts('shared.js');
}
description("Test IndexedDB's openCursor.");
function emptyCursorWithKeySuccess()
{
debug("Empty cursor opened successfully.");
cursor = event.target.result;
shouldBeNull("cursor");
finishJSTest();
}
function openEmptyCursorWithKey()
{
debug("Opening an empty cursor.");
request = evalAndLog("objectStore.openCursor(\"InexistentKey\")");
request.onsuccess = emptyCursorWithKeySuccess;
request.onerror = unexpectedErrorCallback;
}
function cursorWithKeySuccess()
{
debug("Cursor opened successfully.");
// FIXME: check that we can iterate the cursor.
cursor = event.target.result;
shouldBeEqualToString("cursor.direction", "next");
shouldBeEqualToString("cursor.key", "myKey");
shouldBeEqualToString("cursor.value", "myValue");
debug("");
debug("Passing an invalid key into .continue({}).");
evalAndExpectException("cursor.continue({})", "0", "'DataError'");
debug("");
openEmptyCursorWithKey();
}
function openCursorWithKey()
{
debug("Opening cursor");
request = evalAndLog("event.target.source.openCursor(\"myKey\")");
request.onsuccess = cursorWithKeySuccess;
request.onerror = unexpectedErrorCallback;
}
function emptyCursorSuccess()
{
debug("Empty cursor opened successfully.");
cursor = event.target.result;
shouldBeNull("cursor");
openCursorWithKey();
}
function openEmptyCursor()
{
debug("Opening an empty cursor.");
keyRange = IDBKeyRange.upperBound("InexistentKey");
request = evalAndLog("objectStore.openCursor(keyRange)");
request.onsuccess = emptyCursorSuccess;
request.onerror = unexpectedErrorCallback;
}
function cursorSuccess()
{
debug("Cursor opened successfully.");
// FIXME: check that we can iterate the cursor.
cursor = event.target.result;
shouldBeEqualToString("cursor.direction", "next");
shouldBeEqualToString("cursor.key", "myKey");
shouldBeEqualToString("cursor.value", "myValue");
debug("");
debug("Passing an invalid key into .continue({}).");
evalAndExpectException("event.target.result.continue({})", "0", "'DataError'");
debug("");
openEmptyCursor();
}
function openCursor()
{
debug("Opening cursor");
keyRange = IDBKeyRange.lowerBound("myKey");
request = evalAndLog("event.target.source.openCursor(keyRange)");
request.onsuccess = cursorSuccess;
request.onerror = unexpectedErrorCallback;
}
indexedDBTest(prepareDatabase);
function prepareDatabase()
{
db = event.target.result;
event.target.transaction.onabort = unexpectedAbortCallback;
var objectStore = evalAndLog("objectStore = db.createObjectStore('test')");
request = evalAndLog("objectStore.add('myValue', 'myKey')");
request.onsuccess = openCursor;
request.onerror = unexpectedErrorCallback;
}