summaryrefslogtreecommitdiffstats
path: root/devtools/client/netmonitor/test/browser_net_prefs-reload.js
diff options
context:
space:
mode:
authorMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
committerMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
commit5f8de423f190bbb79a62f804151bc24824fa32d8 (patch)
tree10027f336435511475e392454359edea8e25895d /devtools/client/netmonitor/test/browser_net_prefs-reload.js
parent49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff)
downloadUXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip
Add m-esr52 at 52.6.0
Diffstat (limited to 'devtools/client/netmonitor/test/browser_net_prefs-reload.js')
-rw-r--r--devtools/client/netmonitor/test/browser_net_prefs-reload.js215
1 files changed, 215 insertions, 0 deletions
diff --git a/devtools/client/netmonitor/test/browser_net_prefs-reload.js b/devtools/client/netmonitor/test/browser_net_prefs-reload.js
new file mode 100644
index 000000000..ee56ee446
--- /dev/null
+++ b/devtools/client/netmonitor/test/browser_net_prefs-reload.js
@@ -0,0 +1,215 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+/**
+ * Tests if the prefs that should survive across tool reloads work.
+ */
+
+add_task(function* () {
+ let Actions = require("devtools/client/netmonitor/actions/index");
+ let { monitor } = yield initNetMonitor(SIMPLE_URL);
+ 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 = () => monitor.panelWin.NetMonitorView;
+ let getStore = () => monitor.panelWin.gStore;
+
+ 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: ($, value) => value.forEach(e =>
+ getStore().dispatch(Actions.toggleFilterType(e)))
+ },
+ networkDetailsWidth: {
+ newValue: ~~(Math.random() * 200 + 100),
+ validateValue: ($) => ~~$("#details-pane").getAttribute("width"),
+ modifyFrontend: ($, value) => $("#details-pane").setAttribute("width", value)
+ },
+ networkDetailsHeight: {
+ newValue: ~~(Math.random() * 300 + 100),
+ validateValue: ($) => ~~$("#details-pane").getAttribute("height"),
+ modifyFrontend: ($, value) => $("#details-pane").setAttribute("height", value)
+ }
+ /* add more prefs here... */
+ };
+
+ yield testBottom();
+ yield testSide();
+ yield testWindow();
+
+ info("Moving toolbox back to the bottom...");
+ yield monitor._toolbox.switchHost(Toolbox.HostType.BOTTOM);
+ return teardown(monitor);
+
+ function storeFirstPrefValues() {
+ info("Caching initial pref values.");
+
+ for (let name in prefsToCheck) {
+ let currentValue = monitor.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 = monitor.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(monitor.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 = monitor.panelWin.Prefs[name];
+ let firstValue = prefsToCheck[name].firstValue;
+ let newValue = prefsToCheck[name].newValue;
+ let validateValue = prefsToCheck[name].validateValue;
+ let modFrontend = prefsToCheck[name].modifyFrontend;
+
+ modFrontend(monitor.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(monitor.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 = monitor.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(monitor.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 = monitor.panelWin.Prefs[name];
+ let firstValue = prefsToCheck[name].firstValue;
+ let newValue = prefsToCheck[name].newValue;
+ let validateValue = prefsToCheck[name].validateValue;
+ let modFrontend = prefsToCheck[name].modifyFrontend;
+
+ modFrontend(monitor.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(monitor.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();
+
+ let newMonitor = yield restartNetMonitor(monitor);
+ monitor = newMonitor.monitor;
+
+ // Revalidate and reset frontend while toolbox is on the bottom.
+ validateNewPrefValues();
+ resetFrontend();
+
+ newMonitor = yield restartNetMonitor(monitor);
+ monitor = newMonitor.monitor;
+
+ // Revalidate.
+ validateFirstPrefValues();
+ }
+
+ function* testSide() {
+ info("Moving toolbox to the side...");
+
+ yield monitor._toolbox.switchHost(Toolbox.HostType.SIDE);
+ info("Testing prefs reload for a side host.");
+ storeFirstPrefValues();
+
+ // Validate and modify frontend while toolbox is on the side.
+ validateFirstPrefValues();
+ modifyFrontend();
+
+ let newMonitor = yield restartNetMonitor(monitor);
+ monitor = newMonitor.monitor;
+
+ // Revalidate and reset frontend while toolbox is on the side.
+ validateNewPrefValues();
+ resetFrontend();
+
+ newMonitor = yield restartNetMonitor(monitor);
+ monitor = newMonitor.monitor;
+
+ // Revalidate.
+ validateFirstPrefValues();
+ }
+
+ function* testWindow() {
+ info("Moving toolbox into a window...");
+
+ yield monitor._toolbox.switchHost(Toolbox.HostType.WINDOW);
+ info("Testing prefs reload for a window host.");
+ storeFirstPrefValues();
+
+ // Validate and modify frontend while toolbox is in a window.
+ validateFirstPrefValues();
+ modifyFrontend();
+
+ let newMonitor = yield restartNetMonitor(monitor);
+ monitor = newMonitor.monitor;
+
+ // Revalidate and reset frontend while toolbox is in a window.
+ validateNewPrefValues();
+ resetFrontend();
+
+ newMonitor = yield restartNetMonitor(monitor);
+ monitor = newMonitor.monitor;
+
+ // Revalidate.
+ validateFirstPrefValues();
+ }
+});