Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
- This WPT test may be referenced by the following Test IDs:
- /IndexedDB/idbobjectstore_clear.any.html - WPT Dashboard Interop Dashboard
- /IndexedDB/idbobjectstore_clear.any.serviceworker.html - WPT Dashboard Interop Dashboard
- /IndexedDB/idbobjectstore_clear.any.sharedworker.html - WPT Dashboard Interop Dashboard
- /IndexedDB/idbobjectstore_clear.any.worker.html - WPT Dashboard Interop Dashboard
// 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", {durability: 'relaxed'})
.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", {durability: 'relaxed'})
.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", {durability: 'relaxed'});
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 ");