107 lines
3.5 KiB
JavaScript
107 lines
3.5 KiB
JavaScript
testStorages(function(storageString) {
|
|
async_test(function(t) {
|
|
assert_true(storageString in window, storageString + " exist");
|
|
var storage = window[storageString];
|
|
t.add_cleanup(function() { storage.clear() });
|
|
|
|
clearStorage(storageString, t.step_func(step1));
|
|
assert_equals(storage.length, 0, "storage.length");
|
|
|
|
function step1(msg)
|
|
{
|
|
storage.setItem('FOO', 'BAR');
|
|
|
|
runAfterNStorageEvents(t.step_func(step2), 1);
|
|
}
|
|
|
|
function step2(msg)
|
|
{
|
|
if(msg != undefined) {
|
|
assert_unreached(msg);
|
|
}
|
|
assert_equals(storageEventList.length, 1);
|
|
assert_equals(storageEventList[0].key, "FOO");
|
|
assert_equals(storageEventList[0].oldValue, null);
|
|
assert_equals(storageEventList[0].newValue, "BAR");
|
|
|
|
storage.setItem('FU', 'BAR');
|
|
storage.setItem('a', '1');
|
|
storage.setItem('b', '2');
|
|
storage.setItem('b', '3');
|
|
|
|
runAfterNStorageEvents(t.step_func(step3), 5);
|
|
}
|
|
|
|
function step3(msg)
|
|
{
|
|
if(msg != undefined) {
|
|
assert_unreached(msg);
|
|
}
|
|
assert_equals(storageEventList.length, 5);
|
|
assert_equals(storageEventList[1].key, "FU");
|
|
assert_equals(storageEventList[1].oldValue, null);
|
|
assert_equals(storageEventList[1].newValue, "BAR");
|
|
|
|
assert_equals(storageEventList[2].key, "a");
|
|
assert_equals(storageEventList[2].oldValue, null);
|
|
assert_equals(storageEventList[2].newValue, "1");
|
|
|
|
assert_equals(storageEventList[3].key, "b");
|
|
assert_equals(storageEventList[3].oldValue, null);
|
|
assert_equals(storageEventList[3].newValue, "2");
|
|
|
|
assert_equals(storageEventList[4].key, "b");
|
|
assert_equals(storageEventList[4].oldValue, "2");
|
|
assert_equals(storageEventList[4].newValue, "3");
|
|
|
|
storage.removeItem('FOO');
|
|
|
|
runAfterNStorageEvents(t.step_func(step4), 6);
|
|
}
|
|
|
|
function step4(msg)
|
|
{
|
|
if(msg != undefined) {
|
|
assert_unreached(msg);
|
|
}
|
|
assert_equals(storageEventList.length, 6);
|
|
assert_equals(storageEventList[5].key, "FOO");
|
|
assert_equals(storageEventList[5].oldValue, "BAR");
|
|
assert_equals(storageEventList[5].newValue, null);
|
|
|
|
storage.removeItem('FU');
|
|
|
|
runAfterNStorageEvents(t.step_func(step5), 7);
|
|
}
|
|
|
|
function step5(msg)
|
|
{
|
|
if(msg != undefined) {
|
|
assert_unreached(msg);
|
|
}
|
|
assert_equals(storageEventList.length, 7);
|
|
assert_equals(storageEventList[6].key, "FU");
|
|
assert_equals(storageEventList[6].oldValue, "BAR");
|
|
assert_equals(storageEventList[6].newValue, null);
|
|
|
|
storage.clear();
|
|
|
|
runAfterNStorageEvents(t.step_func(step6), 8);
|
|
}
|
|
|
|
function step6(msg)
|
|
{
|
|
if(msg != undefined) {
|
|
assert_unreached(msg);
|
|
}
|
|
assert_equals(storageEventList.length, 8);
|
|
assert_equals(storageEventList[7].key, null);
|
|
assert_equals(storageEventList[7].oldValue, null);
|
|
assert_equals(storageEventList[7].newValue, null);
|
|
|
|
t.done();
|
|
}
|
|
|
|
}, storageString + " mutations fire StorageEvents that are caught by the event listener set via window.onstorage.");
|
|
});
|