mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
234 lines
8.3 KiB
JavaScript
234 lines
8.3 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
/**
|
|
* Tests if the prefs that should survive across tool reloads work.
|
|
*/
|
|
|
|
function test() {
|
|
initNetMonitor(SIMPLE_URL).then(([aTab, aDebuggee, aMonitor]) => {
|
|
info("Starting test... ");
|
|
|
|
// This test reopens the network monitor a bunch of times, for different
|
|
// hosts (bottom, side, window). This seems to be slow on debug builds.
|
|
requestLongerTimeout(3);
|
|
|
|
// Use these getters instead of caching instances inside the panel win,
|
|
// since the tool is reopened a bunch of times during this test
|
|
// and the instances will differ.
|
|
let getView = () => aMonitor.panelWin.NetMonitorView;
|
|
let getController = () => aMonitor.panelWin.NetMonitorController;
|
|
|
|
let prefsToCheck = {
|
|
filters: {
|
|
// A custom new value to be used for the verified preference.
|
|
newValue: ["html", "css"],
|
|
// Getter used to retrieve the current value from the frontend, in order
|
|
// to verify that the pref was applied properly.
|
|
validateValue: ($) => getView().RequestsMenu._activeFilters,
|
|
// Predicate used to modify the frontend when setting the new pref value,
|
|
// before trying to validate the changes.
|
|
modifyFrontend: ($, aValue) => aValue.forEach(e => getView().RequestsMenu.filterOn(e))
|
|
},
|
|
networkDetailsWidth: {
|
|
newValue: ~~(Math.random() * 200 + 100),
|
|
validateValue: ($) => ~~$("#details-pane").getAttribute("width"),
|
|
modifyFrontend: ($, aValue) => $("#details-pane").setAttribute("width", aValue)
|
|
},
|
|
networkDetailsHeight: {
|
|
newValue: ~~(Math.random() * 300 + 100),
|
|
validateValue: ($) => ~~$("#details-pane").getAttribute("height"),
|
|
modifyFrontend: ($, aValue) => $("#details-pane").setAttribute("height", aValue)
|
|
}
|
|
/* add more prefs here... */
|
|
};
|
|
|
|
function storeFirstPrefValues() {
|
|
info("Caching initial pref values.");
|
|
|
|
for (let name in prefsToCheck) {
|
|
let currentValue = aMonitor.panelWin.Prefs[name];
|
|
prefsToCheck[name].firstValue = currentValue;
|
|
}
|
|
}
|
|
|
|
function validateFirstPrefValues() {
|
|
info("Validating current pref values to the UI elements.");
|
|
|
|
for (let name in prefsToCheck) {
|
|
let currentValue = aMonitor.panelWin.Prefs[name];
|
|
let firstValue = prefsToCheck[name].firstValue;
|
|
let validateValue = prefsToCheck[name].validateValue;
|
|
|
|
is(currentValue.toSource(), firstValue.toSource(),
|
|
"Pref " + name + " should be equal to first value: " + firstValue);
|
|
is(currentValue.toSource(), validateValue(aMonitor.panelWin.$).toSource(),
|
|
"Pref " + name + " should validate: " + currentValue);
|
|
}
|
|
}
|
|
|
|
function modifyFrontend() {
|
|
info("Modifying UI elements to the specified new values.");
|
|
|
|
for (let name in prefsToCheck) {
|
|
let currentValue = aMonitor.panelWin.Prefs[name];
|
|
let firstValue = prefsToCheck[name].firstValue;
|
|
let newValue = prefsToCheck[name].newValue;
|
|
let validateValue = prefsToCheck[name].validateValue;
|
|
let modifyFrontend = prefsToCheck[name].modifyFrontend;
|
|
|
|
modifyFrontend(aMonitor.panelWin.$, newValue);
|
|
info("Modified UI element affecting " + name + " to: " + newValue);
|
|
|
|
is(currentValue.toSource(), firstValue.toSource(),
|
|
"Pref " + name + " should still be equal to first value: " + firstValue);
|
|
isnot(currentValue.toSource(), newValue.toSource(),
|
|
"Pref " + name + " should't yet be equal to second value: " + newValue);
|
|
is(newValue.toSource(), validateValue(aMonitor.panelWin.$).toSource(),
|
|
"The UI element affecting " + name + " should validate: " + newValue);
|
|
}
|
|
}
|
|
|
|
function validateNewPrefValues() {
|
|
info("Invalidating old pref values to the modified UI elements.");
|
|
|
|
for (let name in prefsToCheck) {
|
|
let currentValue = aMonitor.panelWin.Prefs[name];
|
|
let firstValue = prefsToCheck[name].firstValue;
|
|
let newValue = prefsToCheck[name].newValue;
|
|
let validateValue = prefsToCheck[name].validateValue;
|
|
|
|
isnot(currentValue.toSource(), firstValue.toSource(),
|
|
"Pref " + name + " should't be equal to first value: " + firstValue);
|
|
is(currentValue.toSource(), newValue.toSource(),
|
|
"Pref " + name + " should now be equal to second value: " + newValue);
|
|
is(newValue.toSource(), validateValue(aMonitor.panelWin.$).toSource(),
|
|
"The UI element affecting " + name + " should validate: " + newValue);
|
|
}
|
|
}
|
|
|
|
function resetFrontend() {
|
|
info("Resetting UI elements to the cached initial pref values.");
|
|
|
|
for (let name in prefsToCheck) {
|
|
let currentValue = aMonitor.panelWin.Prefs[name];
|
|
let firstValue = prefsToCheck[name].firstValue;
|
|
let newValue = prefsToCheck[name].newValue;
|
|
let validateValue = prefsToCheck[name].validateValue;
|
|
let modifyFrontend = prefsToCheck[name].modifyFrontend;
|
|
|
|
modifyFrontend(aMonitor.panelWin.$, firstValue);
|
|
info("Modified UI element affecting " + name + " to: " + firstValue);
|
|
|
|
isnot(currentValue.toSource(), firstValue.toSource(),
|
|
"Pref " + name + " should't yet be equal to first value: " + firstValue);
|
|
is(currentValue.toSource(), newValue.toSource(),
|
|
"Pref " + name + " should still be equal to second value: " + newValue);
|
|
is(firstValue.toSource(), validateValue(aMonitor.panelWin.$).toSource(),
|
|
"The UI element affecting " + name + " should validate: " + firstValue);
|
|
}
|
|
}
|
|
|
|
function testBottom() {
|
|
info("Testing prefs reload for a bottom host.");
|
|
storeFirstPrefValues();
|
|
|
|
// Validate and modify while toolbox is on the bottom.
|
|
validateFirstPrefValues();
|
|
modifyFrontend();
|
|
|
|
return restartNetMonitor(aMonitor)
|
|
.then(([,, aNewMonitor]) => {
|
|
aMonitor = aNewMonitor;
|
|
|
|
// Revalidate and reset frontend while toolbox is on the bottom.
|
|
validateNewPrefValues();
|
|
resetFrontend();
|
|
|
|
return restartNetMonitor(aMonitor);
|
|
})
|
|
.then(([,, aNewMonitor]) => {
|
|
aMonitor = aNewMonitor;
|
|
|
|
// Revalidate.
|
|
validateFirstPrefValues();
|
|
});
|
|
}
|
|
|
|
function testSide() {
|
|
info("Moving toolbox to the side...");
|
|
|
|
return aMonitor._toolbox.switchHost(Toolbox.HostType.SIDE)
|
|
.then(() => {
|
|
info("Testing prefs reload for a side host.");
|
|
storeFirstPrefValues();
|
|
|
|
// Validate and modify frontend while toolbox is on the side.
|
|
validateFirstPrefValues();
|
|
modifyFrontend();
|
|
|
|
return restartNetMonitor(aMonitor);
|
|
})
|
|
.then(([,, aNewMonitor]) => {
|
|
aMonitor = aNewMonitor;
|
|
|
|
// Revalidate and reset frontend while toolbox is on the side.
|
|
validateNewPrefValues();
|
|
resetFrontend();
|
|
|
|
return restartNetMonitor(aMonitor);
|
|
})
|
|
.then(([,, aNewMonitor]) => {
|
|
aMonitor = aNewMonitor;
|
|
|
|
// Revalidate.
|
|
validateFirstPrefValues();
|
|
});
|
|
}
|
|
|
|
function testWindow() {
|
|
info("Moving toolbox into a window...");
|
|
|
|
return aMonitor._toolbox.switchHost(Toolbox.HostType.WINDOW)
|
|
.then(() => {
|
|
info("Testing prefs reload for a window host.");
|
|
storeFirstPrefValues();
|
|
|
|
// Validate and modify frontend while toolbox is in a window.
|
|
validateFirstPrefValues();
|
|
modifyFrontend();
|
|
|
|
return restartNetMonitor(aMonitor);
|
|
})
|
|
.then(([,, aNewMonitor]) => {
|
|
aMonitor = aNewMonitor;
|
|
|
|
// Revalidate and reset frontend while toolbox is in a window.
|
|
validateNewPrefValues();
|
|
resetFrontend();
|
|
|
|
return restartNetMonitor(aMonitor);
|
|
})
|
|
.then(([,, aNewMonitor]) => {
|
|
aMonitor = aNewMonitor;
|
|
|
|
// Revalidate.
|
|
validateFirstPrefValues();
|
|
});
|
|
}
|
|
|
|
function cleanupAndFinish() {
|
|
info("Moving toolbox back to the bottom...");
|
|
|
|
aMonitor._toolbox.switchHost(Toolbox.HostType.BOTTOM)
|
|
.then(() => teardown(aMonitor))
|
|
.then(finish);
|
|
}
|
|
|
|
testBottom()
|
|
.then(testSide)
|
|
.then(testWindow)
|
|
.then(cleanupAndFinish);
|
|
});
|
|
}
|