2f09c26769230834bd03128c18c188c11e9abd0f
[WebKit-https.git] / LayoutTests / storage / indexeddb / mozilla / resources / clear.js
1 // original test:
2 // http://mxr.mozilla.org/mozilla2.0/source/dom/indexedDB/test/test_clear.html
3 // license of original test:
4 // " Any copyright is dedicated to the Public Domain.
5 //   http://creativecommons.org/publicdomain/zero/1.0/ "
6
7 if (this.importScripts) {
8     importScripts('../../../../resources/js-test-pre.js');
9     importScripts('../../resources/shared.js');
10 }
11
12 description("Test IndexedDB's clearing an object store");
13
14 indexedDBTest(prepareDatabase, clear);
15 function prepareDatabase()
16 {
17     db = event.target.result;
18     event.target.transaction.onabort = unexpectedAbortCallback;
19     objectStore = evalAndLog("objectStore = db.createObjectStore('foo', { autoIncrement: true });");
20     request = evalAndLog("request = objectStore.add({});");
21     request.onerror = unexpectedErrorCallback;
22 }
23
24 function clear()
25 {
26     evalAndExpectException("db.transaction('foo').objectStore('foo').clear();", "0", "'ReadOnlyError'");
27     transaction = evalAndLog("db.transaction('foo', 'readwrite')");
28     evalAndLog("transaction.objectStore('foo').clear();");
29     transaction.oncomplete = cleared;
30     transaction.onabort = unexpectedAbortCallback;
31 }
32
33 function cleared()
34 {
35     request = evalAndLog("request = db.transaction('foo').objectStore('foo').openCursor();");
36     request.onsuccess = areWeClearYet;
37     request.onerror = unexpectedErrorCallback;
38 }
39
40 // The version of this test that existed up until revision ~163500 had the following areWeClearYet handler.
41 // The intention was apparently to verify that calling openCursor() on an empty object store returned a null cursor.
42 /*
43 function areWeClearYet()
44 {
45     cursor = evalAndLog("cursor = request.result;");
46     shouldBe("cursor", "null");
47     finishJSTest();
48 }
49 */
50
51 // The spec's current description of IDBObjectStore.openCursor(), as found here:
52 // http://www.w3.org/TR/IndexedDB/#widl-IDBObjectStore-openCursor-IDBRequest-any-range-IDBCursorDirection-direction
53 // does not allow for a null cursor to be returned. It states:
54 // "...this method creates a cursor. The cursor must implement the IDBCursorWithValue interface."
55 // and then gives no allowance for not returning that created cursor.
56 // ---
57 // So our current reading of the spec is that a cursor must be returned, but it must be pointing to an undefined key/value record.
58 function areWeClearYet()
59 {
60     cursor = evalAndLog("cursor = request.result;");
61     shouldBe("cursor.key", "undefined");
62     shouldBe("cursor.value", "undefined");
63     finishJSTest();
64 }