Source code
Revision control
Copy as Markdown
Other Tools
Test Info: Warnings
- This test gets skipped with pattern: http3 OR http2
- Manifest: dom/tests/mochitest/localstorage/mochitest.toml
<head>
<title>localStorage key order test</title>
<script src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
<!--
Check we preserve order of keys in localStorage when
keys are just modified. When a new key is added or
a key is removed order is again unspecified.
-->
<script type="text/javascript">
function startTest()
{
try
{
var keyNames = new Array;
localStorage.a = "1";
localStorage.b = "2";
localStorage.c = "3";
localStorage.d = "4";
localStorage.e = "5";
is(localStorage.a, "1", "a = 1");
is(localStorage.b, "2", "b = 2");
is(localStorage.c, "3", "c = 3");
is(localStorage.d, "4", "d = 4");
is(localStorage.e, "5", "e = 5");
is(localStorage.length, 5, "length = 5");
for (var i = 0; i < localStorage.length; ++i)
keyNames[i] = localStorage.key(i);
localStorage.a = "10";
localStorage.b = "20";
localStorage.c = "30";
localStorage.d = "40";
localStorage.e = "50";
is(localStorage.a, "10", "a = 10");
is(localStorage.b, "20", "b = 20");
is(localStorage.c, "30", "c = 30");
is(localStorage.d, "40", "d = 40");
is(localStorage.e, "50", "e = 50");
is(localStorage.length, 5, "length = 5");
for (var i = 0; i < localStorage.length; ++i)
is(keyNames[i], localStorage.key(i), "key "+keyNames[i]+" on same index");
keyNamesStringify = "[\"" + keyNames.join("\",\"") + "\"]";
keyNamesStringify;
}
catch (ex)
{
localStorage.clear();
throw ex;
}
}
SimpleTest.waitForExplicitFinish();
</script>
</head>
<body onload="startTest();">
<iframe src="" name="frame"></frame>
</body>
</html>