// META: global=window,worker // META: title=IDBObjectStore.clear() // META: script=resources/support.js 'use strict'; async_test(t => { let db; let open_rq = createdb(t); open_rq.onupgradeneeded = function(e) { db = e.target.result; let objStore = db.createObjectStore("store", { autoIncrement: true }); objStore.add({ property: "data" }); objStore.add({ something_different: "Yup, totally different" }); objStore.add(1234); objStore.add([1, 2, 1234]); objStore.clear().onsuccess = t.step_func(function(e) { assert_equals(e.target.result, undefined); }); }; open_rq.onsuccess = function(e) { let rq = db.transaction("store", "readonly") .objectStore("store") .openCursor(); rq.onsuccess = t.step_func(function(e) { assert_equals(e.target.result, null, 'cursor'); t.done(); }); }; }, "Verify clear removes all records "); async_test(t => { let db; let open_rq = createdb(t); open_rq.onupgradeneeded = function(e) { db = e.target.result; let objStore = db.createObjectStore("store", { autoIncrement: true }); objStore.createIndex("index", "indexedProperty"); objStore.add({ indexedProperty: "data" }); objStore.add({ indexedProperty: "yo, man", something_different: "Yup, totally different" }); objStore.add({ indexedProperty: 1234 }); objStore.add({ indexedProperty: [1, 2, 1234] }); objStore.add(1234); objStore.clear().onsuccess = t.step_func(function(e) { assert_equals(e.target.result, undefined); }); }; open_rq.onsuccess = function(e) { let rq = db.transaction("store", "readonly") .objectStore("store") .index("index") .openCursor(); rq.onsuccess = t.step_func(function(e) { assert_equals(e.target.result, null, 'cursor'); t.done(); }); }; }, "Clear removes all records from an index "); async_test(t => { let db, records = [{ pKey: "primaryKey_0"}, { pKey: "primaryKey_1"}]; let open_rq = createdb(t); open_rq.onupgradeneeded = function (event) { db = event.target.result; let objStore = db.createObjectStore("store", {keyPath:"pKey"}); for (let i = 0; i < records.length; i++) { objStore.add(records[i]); } } open_rq.onsuccess = function (event) { let txn = db.transaction("store", "readonly"); let ostore = txn.objectStore("store"); t.step(function(){ assert_throws_dom("ReadOnlyError", function(){ ostore.clear(); }); }); t.done(); } }, "If the transaction this IDBObjectStore belongs to has its mode set to readonly, throw ReadOnlyError "); async_test(t => { let db, ostore; let open_rq = createdb(t); open_rq.onupgradeneeded = function (event) { db = event.target.result; ostore = db.createObjectStore("store", {keyPath:"pKey"}); db.deleteObjectStore("store"); assert_throws_dom("InvalidStateError", function(){ ostore.clear(); }); t.done(); } }, "If the object store has been deleted, the implementation must throw a DOMException of type InvalidStateError ");