214 lines
6.6 KiB
JavaScript
214 lines
6.6 KiB
JavaScript
/* 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";
|
|
|
|
add_task(function* () {
|
|
yield openTabAndSetupStorage(MAIN_DOMAIN + "storage-updates.html");
|
|
|
|
let $ = id => gPanelWindow.document.querySelector(id);
|
|
let $$ = sel => gPanelWindow.document.querySelectorAll(sel);
|
|
|
|
gUI.tree.expandAll();
|
|
|
|
ok(gUI.sidebar.hidden, "Sidebar is initially hidden");
|
|
yield selectTableItem("c1");
|
|
|
|
// test that value is something initially
|
|
let 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
|
|
let 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
|
|
yield findVariableViewProperties(initialValue[0], false);
|
|
yield findVariableViewProperties(initialValue[1], true);
|
|
// Check if table shows correct initial value
|
|
ok($("#value [data-id='c1'].table-widget-cell"), "cell is present");
|
|
is($("#value [data-id='c1'].table-widget-cell").value, "1.2.3.4.5.6.7",
|
|
"correct initial value in table");
|
|
gWindow.addCookie("c1", '{"foo": 4,"bar":6}', "/browser");
|
|
yield gUI.once("sidebar-updated");
|
|
|
|
yield findVariableViewProperties(finalValue[0], false);
|
|
yield findVariableViewProperties(finalValue[1], true);
|
|
ok($("#value [data-id='c1'].table-widget-cell"),
|
|
"cell is present after update");
|
|
is($("#value [data-id='c1'].table-widget-cell").value, '{"foo": 4,"bar":6}',
|
|
"correct final value in table");
|
|
|
|
// Add a new entry
|
|
is($$("#value .table-widget-cell").length, 2,
|
|
"Correct number of rows before update 0");
|
|
|
|
gWindow.addCookie("c3", "booyeah");
|
|
|
|
// Wait once for update and another time for value fetching
|
|
yield gUI.once("store-objects-updated");
|
|
yield gUI.once("store-objects-updated");
|
|
|
|
is($$("#value .table-widget-cell").length, 3,
|
|
"Correct number of rows after update 1");
|
|
|
|
// Add another
|
|
gWindow.addCookie("c4", "booyeah");
|
|
|
|
// Wait once for update and another time for value fetching
|
|
yield gUI.once("store-objects-updated");
|
|
yield gUI.once("store-objects-updated");
|
|
|
|
is($$("#value .table-widget-cell").length, 4,
|
|
"Correct number of rows after update 2");
|
|
|
|
// Removing cookies
|
|
gWindow.removeCookie("c1", "/browser");
|
|
|
|
yield gUI.once("sidebar-updated");
|
|
|
|
is($$("#value .table-widget-cell").length, 3,
|
|
"Correct number of rows after delete update 3");
|
|
|
|
ok(!$("#c1"), "Correct row got deleted");
|
|
|
|
ok(!gUI.sidebar.hidden, "Sidebar still visible for next row");
|
|
|
|
// Check if next element's value is visible in sidebar
|
|
yield findVariableViewProperties([{name: "c2", value: "foobar"}]);
|
|
|
|
// Keep deleting till no rows
|
|
|
|
gWindow.removeCookie("c3");
|
|
|
|
yield gUI.once("store-objects-updated");
|
|
|
|
is($$("#value .table-widget-cell").length, 2,
|
|
"Correct number of rows after delete update 4");
|
|
|
|
// Check if next element's value is visible in sidebar
|
|
yield findVariableViewProperties([{name: "c2", value: "foobar"}]);
|
|
|
|
gWindow.removeCookie("c2", "/browser");
|
|
|
|
yield gUI.once("sidebar-updated");
|
|
|
|
yield findVariableViewProperties([{name: "c4", value: "booyeah"}]);
|
|
|
|
is($$("#value .table-widget-cell").length, 1,
|
|
"Correct number of rows after delete update 5");
|
|
|
|
gWindow.removeCookie("c4");
|
|
|
|
yield gUI.once("store-objects-updated");
|
|
|
|
is($$("#value .table-widget-cell").length, 0,
|
|
"Correct number of rows after delete update 6");
|
|
ok(gUI.sidebar.hidden, "Sidebar is hidden when no rows");
|
|
|
|
// Testing in local storage
|
|
yield selectTreeItem(["localStorage", "http://test1.example.org"]);
|
|
|
|
is($$("#value .table-widget-cell").length, 7,
|
|
"Correct number of rows after delete update 7");
|
|
|
|
ok($(".table-widget-cell[data-id='ls4']"), "ls4 exists before deleting");
|
|
|
|
gWindow.localStorage.removeItem("ls4");
|
|
|
|
yield gUI.once("store-objects-updated");
|
|
|
|
is($$("#value .table-widget-cell").length, 6,
|
|
"Correct number of rows after delete update 8");
|
|
ok(!$(".table-widget-cell[data-id='ls4']"),
|
|
"ls4 does not exists after deleting");
|
|
|
|
gWindow.localStorage.setItem("ls4", "again");
|
|
|
|
yield gUI.once("store-objects-updated");
|
|
yield gUI.once("store-objects-updated");
|
|
|
|
is($$("#value .table-widget-cell").length, 7,
|
|
"Correct number of rows after delete update 9");
|
|
ok($(".table-widget-cell[data-id='ls4']"),
|
|
"ls4 came back after adding it again");
|
|
|
|
// Updating a row
|
|
gWindow.localStorage.setItem("ls2", "ls2-changed");
|
|
|
|
yield gUI.once("store-objects-updated");
|
|
yield gUI.once("store-objects-updated");
|
|
|
|
is($("#value [data-id='ls2']").value, "ls2-changed",
|
|
"Value got updated for local storage");
|
|
|
|
// Testing in session storage
|
|
yield selectTreeItem(["sessionStorage", "http://test1.example.org"]);
|
|
|
|
is($$("#value .table-widget-cell").length, 3,
|
|
"Correct number of rows for session storage");
|
|
|
|
gWindow.sessionStorage.setItem("ss4", "new-item");
|
|
|
|
yield gUI.once("store-objects-updated");
|
|
yield gUI.once("store-objects-updated");
|
|
|
|
is($$("#value .table-widget-cell").length, 4,
|
|
"Correct number of rows after session storage update");
|
|
|
|
// deleting item
|
|
|
|
gWindow.sessionStorage.removeItem("ss3");
|
|
|
|
yield gUI.once("store-objects-updated");
|
|
|
|
gWindow.sessionStorage.removeItem("ss1");
|
|
|
|
yield gUI.once("store-objects-updated");
|
|
|
|
is($$("#value .table-widget-cell").length, 2,
|
|
"Correct number of rows after removing items from session storage");
|
|
|
|
yield selectTableItem("ss2");
|
|
|
|
ok(!gUI.sidebar.hidden, "sidebar is visible");
|
|
|
|
// Checking for correct value in sidebar before update
|
|
yield findVariableViewProperties([{name: "ss2", value: "foobar"}]);
|
|
|
|
gWindow.sessionStorage.setItem("ss2", "changed=ss2");
|
|
|
|
yield gUI.once("sidebar-updated");
|
|
|
|
is($("#value [data-id='ss2']").value, "changed=ss2",
|
|
"Value got updated for session storage in the table");
|
|
|
|
yield findVariableViewProperties([{name: "ss2", value: "changed=ss2"}]);
|
|
|
|
// Clearing items. Bug 1233497 makes it so that we can no longer yield
|
|
// CPOWs from Tasks. We work around this by calling clear via a ContentTask
|
|
// instead.
|
|
yield ContentTask.spawn(gBrowser.selectedBrowser, null, function* () {
|
|
return Task.spawn(content.wrappedJSObject.clear);
|
|
});
|
|
|
|
yield gUI.once("store-objects-cleared");
|
|
|
|
is($$("#value .table-widget-cell").length, 0,
|
|
"Table should be cleared");
|
|
|
|
yield finishTests();
|
|
});
|