test_orderingAfterRemoveAdd.js (1487B)
1 /** 2 * Any copyright is dedicated to the Public Domain. 3 * http://creativecommons.org/publicdomain/zero/1.0/ 4 */ 5 6 add_task(async function testSteps() { 7 const url = "http://example.com"; 8 9 info("Setting pref"); 10 11 Services.prefs.setBoolPref("dom.storage.snapshot_reusing", false); 12 13 const items = [ 14 { key: "key01", value: "value01" }, 15 { key: "key02", value: "value02" }, 16 { key: "key03", value: "value03" }, 17 { key: "key04", value: "value04" }, 18 { key: "key05", value: "value05" }, 19 ]; 20 21 info("Getting storage"); 22 23 let storage = getLocalStorage(getPrincipal(url)); 24 25 // 1st snapshot 26 27 info("Adding data"); 28 29 for (let item of items) { 30 storage.setItem(item.key, item.value); 31 } 32 33 info("Returning to event loop"); 34 35 await returnToEventLoop(); 36 37 // 2nd snapshot 38 39 // Remove first two items, add some new items and add the two items back. 40 41 storage.removeItem("key01"); 42 storage.removeItem("key02"); 43 44 storage.setItem("key06", "value06"); 45 storage.setItem("key07", "value07"); 46 storage.setItem("key08", "value08"); 47 48 storage.setItem("key01", "value01"); 49 storage.setItem("key02", "value02"); 50 51 info("Saving key order"); 52 53 let savedKeys = Object.keys(storage); 54 55 info("Returning to event loop"); 56 57 await returnToEventLoop(); 58 59 // 3rd snapshot 60 61 info("Verifying key order"); 62 63 let keys = Object.keys(storage); 64 65 is(keys.length, savedKeys.length); 66 67 for (let i = 0; i < keys.length; i++) { 68 is(keys[i], savedKeys[i], "Correct key"); 69 } 70 });