chromium/third_party/blink/web_tests/storage/indexeddb/resources/objectstore-clear.js

if (this.importScripts) {
    importScripts('../../../resources/js-test.js');
    importScripts('shared.js');
}

description("Test IndexedDB's IDBObjectStore.clear().");

indexedDBTest(prepareDatabase, setVersionComplete);
function prepareDatabase()
{
    db = event.target.result;
    event.target.transaction.onabort = unexpectedAbortCallback;

    store = evalAndLog("store = db.createObjectStore('storeName', null)");

    self.index = evalAndLog("store.createIndex('indexName', '')");
    shouldBeTrue("store.indexNames.contains('indexName')");

    request = evalAndLog("store.add('value', 'key')");
    request.onsuccess = createSecondObjectStoreAndAddValue;
    request.onerror = unexpectedErrorCallback;
}

function createSecondObjectStoreAndAddValue()
{
    otherStore = evalAndLog("otherStore = db.createObjectStore('otherStoreName', null)");

    request = evalAndLog("otherStore.add('value', 'key')");
    request.onsuccess = clearObjectStore;
    request.onerror = unexpectedErrorCallback;
}

function clearObjectStore()
{
    request = evalAndLog("store.clear()");
    request.onsuccess = clearSuccess;
    request.onerror = unexpectedErrorCallback;
}

function clearSuccess()
{
    shouldBeUndefined("event.target.result");

    request = evalAndLog("store.openCursor()");
    request.onsuccess = openCursorSuccess;
    request.onerror = unexpectedErrorCallback;
}

function openCursorSuccess()
{
    shouldBeNull("event.target.result");

    index = evalAndLog("index = store.index('indexName')");
    request = evalAndLog("index.openKeyCursor()");
    request.onsuccess = openKeyCursorSuccess;
    request.onerror = unexpectedErrorCallback;
}

function openKeyCursorSuccess()
{
    debug("openKeyCursorSuccess():");
    shouldBeNull("event.target.result");
}

function setVersionComplete()
{
    transaction = evalAndLog("db.transaction(['otherStoreName'])");
    transaction.onabort = unexpectedErrorCallback;
    var otherStore = evalAndLog("otherStore = transaction.objectStore('otherStoreName')");

    request = evalAndLog("otherStore.get('key')");
    request.onsuccess = getSuccess;
    request.onerror = unexpectedErrorCallback;
}

function getSuccess()
{
    shouldBeEqualToString("event.target.result", "value");

    finishJSTest();
}