| // original test: |
| // http://mxr.mozilla.org/mozilla2.0/source/dom/indexedDB/test/test_autoIncrement_indexes.html?force=1 |
| // license of original test: |
| // " Any copyright is dedicated to the Public Domain. |
| // http://creativecommons.org/publicdomain/zero/1.0/ " |
| |
| if (this.importScripts) { |
| importScripts('../../../../resources/js-test.js'); |
| importScripts('../../resources/shared.js'); |
| } |
| |
| description("Test IndexedDB indexes against autoincrementing keys"); |
| |
| indexedDBTest(prepareDatabase, setVersionComplete); |
| function prepareDatabase() |
| { |
| db = event.target.result; |
| event.target.transaction.onabort = unexpectedAbortCallback; |
| |
| objectStore = evalAndLog("objectStore = db.createObjectStore('autoincrement-id', { keyPath: 'id', autoIncrement: true });"); |
| evalAndLog("objectStore.createIndex('first', 'first');"); |
| evalAndLog("objectStore.createIndex('second', 'second');"); |
| evalAndLog("objectStore.createIndex('third', 'third');"); |
| data = evalAndLog("data = { first: 'foo', second: 'foo', third: 'foo' };"); |
| request = evalAndLog("request = objectStore.add(data);"); |
| request.onsuccess = setupIndexes; |
| request.onerror = unexpectedErrorCallback; |
| } |
| |
| function setupIndexes() |
| { |
| key = evalAndLog("key = event.target.result;"); |
| shouldBeFalse("key == null"); |
| debug("expected key is " + key); |
| } |
| |
| function setVersionComplete() |
| { |
| objectStore = evalAndLog("objectStore = db.transaction('autoincrement-id').objectStore('autoincrement-id');"); |
| first = evalAndLog("first = objectStore.index('first');"); |
| request = evalAndLog("request = first.get('foo');"); |
| request.onsuccess = checkFirstIndexAndPrepareSecond; |
| request.onerror = unexpectedErrorCallback; |
| } |
| |
| function checkFirstIndexAndPrepareSecond() |
| { |
| shouldBe("event.target.result.id", "key"); |
| second = evalAndLog("second = objectStore.index('second');"); |
| request = evalAndLog("request = second.get('foo');"); |
| request.onsuccess = checkSecondIndexAndPrepareThird; |
| request.onerror = unexpectedErrorCallback; |
| } |
| |
| function checkSecondIndexAndPrepareThird() |
| { |
| shouldBe("event.target.result.id", "key"); |
| third = evalAndLog("third = objectStore.index('third');"); |
| request = evalAndLog("request = third.get('foo');"); |
| request.onsuccess = checkThirdIndex; |
| request.onerror = unexpectedErrorCallback; |
| } |
| |
| function checkThirdIndex() |
| { |
| shouldBe("event.target.result.id", "key"); |
| finishJSTest(); |
| } |