Bug 1451991 - Devtools: Localstorage didn't list item whose key names "key" r=nchevobbe

MozReview-Commit-ID: 3AQC47GKud0

--HG--
extra : rebase_source : 0bbcebab0aeb97b51f078673d151eab263080c62
This commit is contained in:
Mike Ratcliffe 2018-04-14 00:33:42 +01:00
Родитель abe4e683f7
Коммит 38773abdb6
8 изменённых файлов: 40 добавлений и 18 удалений

Просмотреть файл

@ -48,13 +48,13 @@ const testCases = [
]
],
[["localStorage", "http://test1.example.org"],
["ls1", "ls2"]],
["key", "ls1", "ls2"]],
[["localStorage", "http://sectest1.example.org"],
["iframe-u-ls1"]],
[["localStorage", "https://sectest1.example.org"],
["iframe-s-ls1"]],
[["sessionStorage", "http://test1.example.org"],
["ss1"]],
["key", "ss1"]],
[["sessionStorage", "http://sectest1.example.org"],
["iframe-u-ss1", "iframe-u-ss2"]],
[["sessionStorage", "https://sectest1.example.org"],

Просмотреть файл

@ -33,13 +33,13 @@ const testCases = [
]
],
[["localStorage", "http://test1.example.org"],
["ls1", "ls2"]],
["key", "ls1", "ls2"]],
[["localStorage", "http://sectest1.example.org"],
["iframe-u-ls1"]],
[["localStorage", "https://sectest1.example.org"],
["iframe-s-ls1"]],
[["sessionStorage", "http://test1.example.org"],
["ss1"]],
["key", "ss1"]],
[["sessionStorage", "http://sectest1.example.org"],
["iframe-u-ss1", "iframe-u-ss2"]],
[["sessionStorage", "https://sectest1.example.org"],

Просмотреть файл

@ -18,13 +18,13 @@ add_task(async function() {
info("test state before delete");
const beforeState = [
[["localStorage", "http://test1.example.org"],
["ls1", "ls2"]],
["key", "ls1", "ls2"]],
[["localStorage", "http://sectest1.example.org"],
["iframe-u-ls1"]],
[["localStorage", "https://sectest1.example.org"],
["iframe-s-ls1"]],
[["sessionStorage", "http://test1.example.org"],
["ss1"]],
["key", "ss1"]],
[["sessionStorage", "http://sectest1.example.org"],
["iframe-u-ss1", "iframe-u-ss2"]],
[["sessionStorage", "https://sectest1.example.org"],
@ -67,13 +67,13 @@ add_task(async function() {
// iframes from the same host, one secure, one unsecure, are independent
// from each other. Delete all in one doesn't touch the other one.
[["localStorage", "http://test1.example.org"],
["ls1", "ls2"]],
["key", "ls1", "ls2"]],
[["localStorage", "http://sectest1.example.org"],
["iframe-u-ls1"]],
[["localStorage", "https://sectest1.example.org"],
[]],
[["sessionStorage", "http://test1.example.org"],
["ss1"]],
["key", "ss1"]],
[["sessionStorage", "http://sectest1.example.org"],
["iframe-u-ss1", "iframe-u-ss2"]],
[["sessionStorage", "https://sectest1.example.org"],

Просмотреть файл

@ -28,8 +28,8 @@ add_task(async function() {
getCookieId("uc2", ".example.org", "/")
]
],
[["localStorage", "http://test1.example.org"], ["ls1", "ls2"]],
[["sessionStorage", "http://test1.example.org"], ["ss1"]],
[["localStorage", "http://test1.example.org"], ["key", "ls1", "ls2"]],
[["sessionStorage", "http://test1.example.org"], ["key", "ss1"]],
[["indexedDB", "http://test1.example.org", "idb1 (default)", "obj1"], [1, 2, 3]],
[["Cache", "http://test1.example.org", "plop"],
[MAIN_DOMAIN + "404_cached_file.js", MAIN_DOMAIN + "browser_storage_basic.js"]],

Просмотреть файл

@ -51,13 +51,13 @@ const storageItemsForDefault = [
]
],
[["localStorage", "http://test1.example.org"],
["ls1", "ls2"]],
["key", "ls1", "ls2"]],
[["localStorage", "http://sectest1.example.org"],
["iframe-u-ls1"]],
[["localStorage", "https://sectest1.example.org"],
["iframe-s-ls1"]],
[["sessionStorage", "http://test1.example.org"],
["ss1"]],
["key", "ss1"]],
[["sessionStorage", "http://sectest1.example.org"],
["iframe-u-ss1", "iframe-u-ss2"]],
[["sessionStorage", "https://sectest1.example.org"],

Просмотреть файл

@ -16,13 +16,13 @@ add_task(async function() {
const state = [
[["localStorage", "http://test1.example.org"],
["ls1", "ls2"]],
["key", "ls1", "ls2"]],
[["localStorage", "http://sectest1.example.org"],
["iframe-u-ls1"]],
[["localStorage", "https://sectest1.example.org"],
["iframe-s-ls1"]],
[["sessionStorage", "http://test1.example.org"],
["ss1"]],
["key", "ss1"]],
[["sessionStorage", "http://sectest1.example.org"],
["iframe-u-ss1", "iframe-u-ss2"]],
[["sessionStorage", "https://sectest1.example.org"],

Просмотреть файл

@ -27,8 +27,20 @@ document.cookie = "c4=foobar-3; expires=" +
// ... and some local storage items ..
localStorage.setItem("ls1", "foobar");
localStorage.setItem("ls2", "foobar-2");
// Because localStorage contains key() on the prototype and it can't be iterated
// using object.keys() we check the the value "key" exists.
// See bug 1451991 for details.
localStorage.setItem("key", "value1");
// ... and finally some session storage items too
sessionStorage.setItem("ss1", "foobar-3");
// Because sessionStorage contains key() on the prototype and it can't be
// iterated using object.keys() we check the the value "key" exists.
// See bug 1451991 for details.
sessionStorage.setItem("key", "value2");
dump("added cookies and storage from main page\n");
let idbGenerator = async function () {

Просмотреть файл

@ -1168,10 +1168,20 @@ function getObjectForLocalOrSessionStorage(type) {
if (!storage) {
return [];
}
return Object.keys(storage).map(key => ({
name: key,
value: storage.getItem(key)
}));
// local and session storage cannot be iterated over using Object.keys()
// because it skips keys that are duplicated on the prototype
// e.g. "key", "getKeys" so we need to gather the real keys using the
// storage.key() function.
const storageArray = [];
for (let i = 0; i < storage.length; i++) {
const key = storage.key(i);
storageArray.push({
name: key,
value: storage.getItem(key)
});
}
return storageArray;
},
populateStoresForHost(host, window) {