Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
"use strict";
Services.prefs.setBoolPref("security.allow_eval_with_system_principal", true);
registerCleanupFunction(() => {
Services.prefs.clearUserPref("security.allow_eval_with_system_principal");
});
// Test dynamic updates in the storage inspector for cookies.
add_task(async function () {
await openTabAndSetupStorage(MAIN_DOMAIN_SECURED + "storage-updates.html");
gUI.tree.expandAll();
ok(gUI.sidebar.hidden, "Sidebar is initially hidden");
const c1id = getCookieId("c1", "test1.example.org", "/browser");
await selectTableItem(c1id);
// test that value is something initially
const initialValue = [
[
{ name: "c1", value: "1.2.3.4.5.6.7" },
{ name: "c1.Path", value: "/browser" },
],
[
{ name: "c1", value: "Array" },
{ name: "c1.0", value: "1" },
{ name: "c1.6", value: "7" },
],
];
// test that value is something initially
const finalValue = [
[
{ name: "c1", value: '{"foo": 4,"bar":6}' },
{ name: "c1.Path", value: "/browser" },
],
[
{ name: "c1", value: "Object" },
{ name: "c1.foo", value: "4" },
{ name: "c1.bar", value: "6" },
],
];
// Check that sidebar shows correct initial value
await findVariableViewProperties(initialValue[0], false);
await findVariableViewProperties(initialValue[1], true);
// Check if table shows correct initial value
await checkState([
[
["cookies", "https://test1.example.org"],
[
getCookieId("c1", "test1.example.org", "/browser"),
getCookieId("c2", "test1.example.org", "/browser"),
],
],
]);
checkCell(c1id, "value", "1.2.3.4.5.6.7");
await addCookie("c1", '{"foo": 4,"bar":6}', "/browser");
await gUI.once("store-objects-edit");
await findVariableViewProperties(finalValue[0], false);
await findVariableViewProperties(finalValue[1], true);
await checkState([
[
["cookies", "https://test1.example.org"],
[
getCookieId("c1", "test1.example.org", "/browser"),
getCookieId("c2", "test1.example.org", "/browser"),
],
],
]);
checkCell(c1id, "value", '{"foo": 4,"bar":6}');
// Add a new entry
await addCookie("c3", "booyeah");
await gUI.once("store-objects-edit");
await checkState([
[
["cookies", "https://test1.example.org"],
[
getCookieId("c1", "test1.example.org", "/browser"),
getCookieId("c2", "test1.example.org", "/browser"),
getCookieId(
"c3",
"test1.example.org",
"/browser/devtools/client/storage/test"
),
],
],
]);
const c3id = getCookieId(
"c3",
"test1.example.org",
"/browser/devtools/client/storage/test"
);
checkCell(c3id, "value", "booyeah");
// Add another
await addCookie("c4", "booyeah");
await gUI.once("store-objects-edit");
await checkState([
[
["cookies", "https://test1.example.org"],
[
getCookieId("c1", "test1.example.org", "/browser"),
getCookieId("c2", "test1.example.org", "/browser"),
getCookieId(
"c3",
"test1.example.org",
"/browser/devtools/client/storage/test"
),
getCookieId(
"c4",
"test1.example.org",
"/browser/devtools/client/storage/test"
),
],
],
]);
const c4id = getCookieId(
"c4",
"test1.example.org",
"/browser/devtools/client/storage/test"
);
checkCell(c4id, "value", "booyeah");
// Removing cookies
await removeCookie("c1", "/browser");
await gUI.once("store-objects-edit");
await checkState([
[
["cookies", "https://test1.example.org"],
[
getCookieId("c2", "test1.example.org", "/browser"),
getCookieId(
"c3",
"test1.example.org",
"/browser/devtools/client/storage/test"
),
getCookieId(
"c4",
"test1.example.org",
"/browser/devtools/client/storage/test"
),
],
],
]);
ok(!gUI.sidebar.hidden, "Sidebar still visible for next row");
// Check if next element's value is visible in sidebar
await findVariableViewProperties([{ name: "c2", value: "foobar" }]);
// Keep deleting till no rows
await removeCookie("c3");
await gUI.once("store-objects-edit");
await checkState([
[
["cookies", "https://test1.example.org"],
[
getCookieId("c2", "test1.example.org", "/browser"),
getCookieId(
"c4",
"test1.example.org",
"/browser/devtools/client/storage/test"
),
],
],
]);
// Check if next element's value is visible in sidebar
await findVariableViewProperties([{ name: "c2", value: "foobar" }]);
await removeCookie("c2", "/browser");
await gUI.once("store-objects-edit");
await checkState([
[
["cookies", "https://test1.example.org"],
[
getCookieId(
"c4",
"test1.example.org",
"/browser/devtools/client/storage/test"
),
],
],
]);
// Check if next element's value is visible in sidebar
await findVariableViewProperties([{ name: "c4", value: "booyeah" }]);
await removeCookie("c4");
await gUI.once("store-objects-edit");
await checkState([[["cookies", "https://test1.example.org"], []]]);
ok(gUI.sidebar.hidden, "Sidebar is hidden when no rows");
});
async function addCookie(name, value, path) {
await SpecialPowers.spawn(
gBrowser.selectedBrowser,
[[name, value, path]],
([nam, valu, pat]) => {
content.wrappedJSObject.addCookie(nam, valu, pat);
}
);
}
async function removeCookie(name, path) {
await SpecialPowers.spawn(
gBrowser.selectedBrowser,
[[name, path]],
([nam, pat]) => {
content.wrappedJSObject.removeCookie(nam, pat);
}
);
}