diff options
Diffstat (limited to 'devtools/client/netmonitor/test/browser_net_filter-04.js')
-rw-r--r-- | devtools/client/netmonitor/test/browser_net_filter-04.js | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/devtools/client/netmonitor/test/browser_net_filter-04.js b/devtools/client/netmonitor/test/browser_net_filter-04.js new file mode 100644 index 0000000000..d690813285 --- /dev/null +++ b/devtools/client/netmonitor/test/browser_net_filter-04.js @@ -0,0 +1,80 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +/** + * Tests if invalid filter types are sanitized when loaded from the preferences. + */ + +const BASIC_REQUESTS = [ + { url: "sjs_content-type-test-server.sjs?fmt=html&res=undefined" }, + { url: "sjs_content-type-test-server.sjs?fmt=css" }, + { url: "sjs_content-type-test-server.sjs?fmt=js" }, +]; + +const REQUESTS_WITH_MEDIA = BASIC_REQUESTS.concat([ + { url: "sjs_content-type-test-server.sjs?fmt=font" }, + { url: "sjs_content-type-test-server.sjs?fmt=image" }, + { url: "sjs_content-type-test-server.sjs?fmt=audio" }, + { url: "sjs_content-type-test-server.sjs?fmt=video" }, +]); + +const REQUESTS_WITH_MEDIA_AND_FLASH = REQUESTS_WITH_MEDIA.concat([ + { url: "sjs_content-type-test-server.sjs?fmt=flash" }, +]); + +const REQUESTS_WITH_MEDIA_AND_FLASH_AND_WS = + REQUESTS_WITH_MEDIA_AND_FLASH.concat([ + /* "Upgrade" is a reserved header and can not be set on XMLHttpRequest */ + { url: "sjs_content-type-test-server.sjs?fmt=ws" }, + ]); + +add_task(async function () { + Services.prefs.setCharPref( + "devtools.netmonitor.filters", + '["bogus", "js", "alsobogus"]' + ); + + const { monitor } = await initNetMonitor(FILTERING_URL, { + requestCount: 1, + expectedEventTimings: 0, + }); + info("Starting test... "); + + const { document, store, windowRequire } = monitor.panelWin; + const Actions = windowRequire("devtools/client/netmonitor/src/actions/index"); + const { Prefs } = windowRequire("devtools/client/netmonitor/src/utils/prefs"); + + store.dispatch(Actions.batchEnable(false)); + + is(Prefs.filters.length, 3, "All the filter types should be loaded."); + is( + Prefs.filters[0], + "bogus", + "The first filter type is invalid, but loaded anyway." + ); + + // As the view is filtered and there is only one request for which we fetch event timings + const wait = waitForNetworkEvents(monitor, 9, { expectedEventTimings: 1 }); + await performRequestsInContent(REQUESTS_WITH_MEDIA_AND_FLASH_AND_WS); + await wait; + + testFilterButtons(monitor, "js"); + ok(true, "Only the correct filter type was taken into consideration."); + + EventUtils.sendMouseEvent( + { type: "click" }, + document.querySelector(".requests-list-filter-html-button") + ); + + const filters = Services.prefs.getCharPref("devtools.netmonitor.filters"); + is( + filters, + '["html","js"]', + "The filters preferences were saved directly after the click and only" + + " with the valid." + ); + + await teardown(monitor); +}); |