mirror of
https://github.com/classilla/tenfourfox.git
synced 2024-08-14 10:29:31 +00:00
115 lines
3.5 KiB
JavaScript
115 lines
3.5 KiB
JavaScript
/**
|
|
* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/
|
|
*/
|
|
|
|
var testGenerator = testSteps();
|
|
|
|
function testSteps()
|
|
{
|
|
const name = this.window ? window.location.pathname : "Splendid Test";
|
|
const objectStoreInfo = [
|
|
{ name: "foo", options: { keyPath: "id" }, location: 1 },
|
|
{ name: "bar", options: { keyPath: "id" }, location: 0 },
|
|
];
|
|
const indexInfo = [
|
|
{ name: "foo", keyPath: "value", location: 1 },
|
|
{ name: "bar", keyPath: "value", location: 0 },
|
|
];
|
|
|
|
let request = indexedDB.open(name, 1);
|
|
request.onerror = errorHandler;
|
|
request.onupgradeneeded = grabEventAndContinueHandler;
|
|
request.onsuccess = unexpectedSuccessHandler;
|
|
let event = yield undefined;
|
|
let db = event.target.result;
|
|
|
|
for (let i = 0; i < objectStoreInfo.length; i++) {
|
|
let info = objectStoreInfo[i];
|
|
let objectStore = info.hasOwnProperty("options") ?
|
|
db.createObjectStore(info.name, info.options) :
|
|
db.createObjectStore(info.name);
|
|
|
|
// Test index creation, and that it ends up in indexNames.
|
|
let objectStoreName = info.name;
|
|
for (let j = 0; j < indexInfo.length; j++) {
|
|
let info = indexInfo[j];
|
|
let count = objectStore.indexNames.length;
|
|
let index = info.hasOwnProperty("options") ?
|
|
objectStore.createIndex(info.name, info.keyPath,
|
|
info.options) :
|
|
objectStore.createIndex(info.name, info.keyPath);
|
|
}
|
|
}
|
|
|
|
request.onsuccess = grabEventAndContinueHandler;
|
|
request.onupgradeneeded = unexpectedSuccessHandler;
|
|
|
|
event = yield undefined;
|
|
|
|
let objectStoreNames = []
|
|
for (let i = 0; i < objectStoreInfo.length; i++) {
|
|
let info = objectStoreInfo[i];
|
|
objectStoreNames.push(info.name);
|
|
|
|
is(db.objectStoreNames[info.location], info.name,
|
|
"Got objectStore name in the right location");
|
|
|
|
let trans = db.transaction(info.name);
|
|
let objectStore = trans.objectStore(info.name);
|
|
for (let j = 0; j < indexInfo.length; j++) {
|
|
let info = indexInfo[j];
|
|
is(objectStore.indexNames[info.location], info.name,
|
|
"Got index name in the right location");
|
|
}
|
|
}
|
|
|
|
let trans = db.transaction(objectStoreNames);
|
|
for (let i = 0; i < objectStoreInfo.length; i++) {
|
|
let info = objectStoreInfo[i];
|
|
|
|
is(trans.objectStoreNames[info.location], info.name,
|
|
"Got objectStore name in the right location");
|
|
}
|
|
|
|
db.close();
|
|
|
|
request = indexedDB.open(name, 1);
|
|
request.onerror = errorHandler;
|
|
request.onsuccess = grabEventAndContinueHandler;
|
|
request.onupgradeneeded = unexpectedSuccessHandler;
|
|
event = yield undefined;
|
|
|
|
db = event.target.result;
|
|
|
|
objectStoreNames = []
|
|
for (let i = 0; i < objectStoreInfo.length; i++) {
|
|
let info = objectStoreInfo[i];
|
|
objectStoreNames.push(info.name);
|
|
|
|
is(db.objectStoreNames[info.location], info.name,
|
|
"Got objectStore name in the right location");
|
|
|
|
let trans = db.transaction(info.name);
|
|
let objectStore = trans.objectStore(info.name);
|
|
for (let j = 0; j < indexInfo.length; j++) {
|
|
let info = indexInfo[j];
|
|
is(objectStore.indexNames[info.location], info.name,
|
|
"Got index name in the right location");
|
|
}
|
|
}
|
|
|
|
trans = db.transaction(objectStoreNames);
|
|
for (let i = 0; i < objectStoreInfo.length; i++) {
|
|
let info = objectStoreInfo[i];
|
|
|
|
is(trans.objectStoreNames[info.location], info.name,
|
|
"Got objectStore name in the right location");
|
|
}
|
|
|
|
db.close();
|
|
|
|
finishTest();
|
|
yield undefined;
|
|
}
|