Bug 1326408 - Fix ESLint errors in devtools/client/netmonitor/test and devtools/client/netmonitor/har/test. r=ntim

MozReview-Commit-ID: D2eCfvpXoOJ

--HG--
extra : rebase_source : 261287bd96a878ce86778c214363fbb1b77ca5a0
This commit is contained in:
Fabien CASTERS 2017-02-26 17:11:09 +01:00
parent 3adfaf1fac
commit d8818577f1
77 changed files with 573 additions and 455 deletions

View file

@ -87,8 +87,6 @@ devtools/client/framework/**
devtools/client/inspector/markup/test/doc_markup_events_*.html devtools/client/inspector/markup/test/doc_markup_events_*.html
devtools/client/inspector/rules/test/doc_media_queries.html devtools/client/inspector/rules/test/doc_media_queries.html
devtools/client/memory/test/chrome/*.html devtools/client/memory/test/chrome/*.html
devtools/client/netmonitor/test/**
devtools/client/netmonitor/har/test/**
devtools/client/performance/components/test/test_jit_optimizations_01.html devtools/client/performance/components/test/test_jit_optimizations_01.html
devtools/client/projecteditor/** devtools/client/projecteditor/**
devtools/client/responsive.html/test/browser/touch.html devtools/client/responsive.html/test/browser/touch.html

View file

@ -11,7 +11,7 @@ add_task(function* () {
info("Starting test... "); info("Starting test... ");
let { document, gStore, windowRequire } = monitor.panelWin; let { gStore, windowRequire } = monitor.panelWin;
let Actions = windowRequire("devtools/client/netmonitor/actions/index"); let Actions = windowRequire("devtools/client/netmonitor/actions/index");
let RequestListContextMenu = windowRequire( let RequestListContextMenu = windowRequire(
"devtools/client/netmonitor/request-list-context-menu"); "devtools/client/netmonitor/request-list-context-menu");

View file

@ -12,7 +12,7 @@ add_task(function* () {
info("Starting test... "); info("Starting test... ");
let { document, gStore, windowRequire } = monitor.panelWin; let { gStore, windowRequire } = monitor.panelWin;
let Actions = windowRequire("devtools/client/netmonitor/actions/index"); let Actions = windowRequire("devtools/client/netmonitor/actions/index");
let RequestListContextMenu = windowRequire( let RequestListContextMenu = windowRequire(
"devtools/client/netmonitor/request-list-context-menu"); "devtools/client/netmonitor/request-list-context-menu");

View file

@ -16,7 +16,7 @@ function* throttleUploadTest(actuallyThrottle) {
info("Starting test... (actuallyThrottle = " + actuallyThrottle + ")"); info("Starting test... (actuallyThrottle = " + actuallyThrottle + ")");
let { document, gStore, windowRequire, NetMonitorController } = monitor.panelWin; let { gStore, windowRequire, NetMonitorController } = monitor.panelWin;
let Actions = windowRequire("devtools/client/netmonitor/actions/index"); let Actions = windowRequire("devtools/client/netmonitor/actions/index");
let RequestListContextMenu = windowRequire( let RequestListContextMenu = windowRequire(
"devtools/client/netmonitor/request-list-context-menu"); "devtools/client/netmonitor/request-list-context-menu");

View file

@ -16,22 +16,25 @@
<p>HAR POST data test</p> <p>HAR POST data test</p>
<script type="text/javascript"> <script type="text/javascript">
function post(aAddress, aData) { /* exported executeTest, executeTest2 */
var xhr = new XMLHttpRequest(); "use strict";
xhr.open("POST", aAddress, true);
function post(address, data) {
let xhr = new XMLHttpRequest();
xhr.open("POST", address, true);
xhr.setRequestHeader("Content-Type", "application/json"); xhr.setRequestHeader("Content-Type", "application/json");
xhr.send(aData); xhr.send(data);
} }
function executeTest() { function executeTest() {
var url = "html_har_post-data-test-page.html"; const url = "html_har_post-data-test-page.html";
var data = "{'first': 'John', 'last': 'Doe'}"; const data = "{'first': 'John', 'last': 'Doe'}";
post(url, data); post(url, data);
} }
function executeTest2(size) { function executeTest2(size) {
var url = "html_har_post-data-test-page.html"; const url = "html_har_post-data-test-page.html";
var data = "x".repeat(size); const data = "x".repeat(size);
post(url, data); post(url, data);
} }
</script> </script>

View file

@ -66,7 +66,7 @@ add_task(function* () {
info("Waiting for one network request"); info("Waiting for one network request");
yield waitForNetworkEvents(monitor, 1); yield waitForNetworkEvents(monitor, 1);
console.log(requestsContainer.scrollHeight); console.log(requestsContainer.scrollHeight);
console.log(requestsContainer.clientHeight) console.log(requestsContainer.clientHeight);
if (requestsContainer.scrollHeight > requestsContainer.clientHeight) { if (requestsContainer.scrollHeight > requestsContainer.clientHeight) {
info("The list is long enough, returning"); info("The list is long enough, returning");
return; return;

View file

@ -38,14 +38,14 @@ const EXPECTED_REQUESTS = [
url: EXAMPLE_URL + "xhr_request", url: EXAMPLE_URL + "xhr_request",
causeType: "xhr", causeType: "xhr",
causeUri: CAUSE_URL, causeUri: CAUSE_URL,
stack: [{ fn: "performXhrRequest", file: CAUSE_FILE_NAME, line: 22 }] stack: [{ fn: "performXhrRequest", file: CAUSE_FILE_NAME, line: 24 }]
}, },
{ {
method: "GET", method: "GET",
url: EXAMPLE_URL + "fetch_request", url: EXAMPLE_URL + "fetch_request",
causeType: "fetch", causeType: "fetch",
causeUri: CAUSE_URL, causeUri: CAUSE_URL,
stack: [{ fn: "performFetchRequest", file: CAUSE_FILE_NAME, line: 26 }] stack: [{ fn: "performFetchRequest", file: CAUSE_FILE_NAME, line: 28 }]
}, },
{ {
method: "GET", method: "GET",
@ -53,8 +53,8 @@ const EXPECTED_REQUESTS = [
causeType: "fetch", causeType: "fetch",
causeUri: CAUSE_URL, causeUri: CAUSE_URL,
stack: [ stack: [
{ fn: "performPromiseFetchRequest", file: CAUSE_FILE_NAME, line: 38 }, { fn: "performPromiseFetchRequest", file: CAUSE_FILE_NAME, line: 40 },
{ fn: null, file: CAUSE_FILE_NAME, line: 37, asyncCause: "promise callback" }, { fn: null, file: CAUSE_FILE_NAME, line: 39, asyncCause: "promise callback" },
] ]
}, },
{ {
@ -63,8 +63,8 @@ const EXPECTED_REQUESTS = [
causeType: "fetch", causeType: "fetch",
causeUri: CAUSE_URL, causeUri: CAUSE_URL,
stack: [ stack: [
{ fn: "performTimeoutFetchRequest", file: CAUSE_FILE_NAME, line: 40 }, { fn: "performTimeoutFetchRequest", file: CAUSE_FILE_NAME, line: 42 },
{ fn: "performPromiseFetchRequest", file: CAUSE_FILE_NAME, line: 39, { fn: "performPromiseFetchRequest", file: CAUSE_FILE_NAME, line: 41,
asyncCause: "setTimeout handler" }, asyncCause: "setTimeout handler" },
] ]
}, },
@ -73,7 +73,7 @@ const EXPECTED_REQUESTS = [
url: EXAMPLE_URL + "beacon_request", url: EXAMPLE_URL + "beacon_request",
causeType: "beacon", causeType: "beacon",
causeUri: CAUSE_URL, causeUri: CAUSE_URL,
stack: [{ fn: "performBeaconRequest", file: CAUSE_FILE_NAME, line: 30 }] stack: [{ fn: "performBeaconRequest", file: CAUSE_FILE_NAME, line: 32 }]
}, },
]; ];

View file

@ -67,7 +67,6 @@ add_task(function* () {
is(rows[0].querySelectorAll("span")[1].textContent, "label2header", is(rows[0].querySelectorAll("span")[1].textContent, "label2header",
"The second column of the header displays the correct text."); "The second column of the header displays the correct text.");
ok(rows[1].querySelector(".table-chart-row-box.chart-colored-blob"), ok(rows[1].querySelector(".table-chart-row-box.chart-colored-blob"),
"A colored blob exists for the firt row."); "A colored blob exists for the firt row.");
is(rows[1].querySelectorAll("span")[0].getAttribute("name"), "label1", is(rows[1].querySelectorAll("span")[0].getAttribute("name"), "label1",

View file

@ -14,7 +14,6 @@ add_task(function* () {
let { document, gStore, windowRequire } = monitor.panelWin; let { document, gStore, windowRequire } = monitor.panelWin;
let Actions = windowRequire("devtools/client/netmonitor/actions/index"); let Actions = windowRequire("devtools/client/netmonitor/actions/index");
let { EVENTS } = windowRequire("devtools/client/netmonitor/constants"); let { EVENTS } = windowRequire("devtools/client/netmonitor/constants");
let detailsPane = document.querySelector("#details-pane");
let detailsPanelToggleButton = document.querySelector(".network-details-panel-toggle"); let detailsPanelToggleButton = document.querySelector(".network-details-panel-toggle");
let clearButton = document.querySelector(".requests-list-clear-button"); let clearButton = document.querySelector(".requests-list-clear-button");

View file

@ -41,8 +41,9 @@ add_task(function* () {
fullMimeType: "text/xml; charset=utf-8", fullMimeType: "text/xml; charset=utf-8",
size: L10N.getFormatStrWithNumbers("networkMenu.sizeB", 42), size: L10N.getFormatStrWithNumbers("networkMenu.sizeB", 42),
time: true time: true
}); }
verifyRequestItemTarget( );
verifyRequestItemTarget(
document, document,
getDisplayedRequests(gStore.getState()), getDisplayedRequests(gStore.getState()),
getSortedRequests(gStore.getState()).get(1), getSortedRequests(gStore.getState()).get(1),
@ -55,8 +56,9 @@ add_task(function* () {
fullMimeType: "text/css; charset=utf-8", fullMimeType: "text/css; charset=utf-8",
size: L10N.getFormatStrWithNumbers("networkMenu.sizeB", 34), size: L10N.getFormatStrWithNumbers("networkMenu.sizeB", 34),
time: true time: true
}); }
verifyRequestItemTarget( );
verifyRequestItemTarget(
document, document,
getDisplayedRequests(gStore.getState()), getDisplayedRequests(gStore.getState()),
getSortedRequests(gStore.getState()).get(2), getSortedRequests(gStore.getState()).get(2),
@ -69,8 +71,9 @@ add_task(function* () {
fullMimeType: "application/javascript; charset=utf-8", fullMimeType: "application/javascript; charset=utf-8",
size: L10N.getFormatStrWithNumbers("networkMenu.sizeB", 34), size: L10N.getFormatStrWithNumbers("networkMenu.sizeB", 34),
time: true time: true
}); }
verifyRequestItemTarget( );
verifyRequestItemTarget(
document, document,
getDisplayedRequests(gStore.getState()), getDisplayedRequests(gStore.getState()),
getSortedRequests(gStore.getState()).get(3), getSortedRequests(gStore.getState()).get(3),
@ -83,26 +86,30 @@ add_task(function* () {
fullMimeType: "application/json; charset=utf-8", fullMimeType: "application/json; charset=utf-8",
size: L10N.getFormatStrWithNumbers("networkMenu.sizeB", 29), size: L10N.getFormatStrWithNumbers("networkMenu.sizeB", 29),
time: true time: true
}); }
verifyRequestItemTarget( );
verifyRequestItemTarget(
document, document,
getDisplayedRequests(gStore.getState()), getDisplayedRequests(gStore.getState()),
getSortedRequests(gStore.getState()).get(4), getSortedRequests(gStore.getState()).get(4),
"GET", "GET",
CONTENT_TYPE_SJS + "?fmt=bogus", { CONTENT_TYPE_SJS + "?fmt=bogus",
{
status: 404, status: 404,
statusText: "Not Found", statusText: "Not Found",
type: "html", type: "html",
fullMimeType: "text/html; charset=utf-8", fullMimeType: "text/html; charset=utf-8",
size: L10N.getFormatStrWithNumbers("networkMenu.sizeB", 24), size: L10N.getFormatStrWithNumbers("networkMenu.sizeB", 24),
time: true time: true
}); }
verifyRequestItemTarget( );
verifyRequestItemTarget(
document, document,
getDisplayedRequests(gStore.getState()), getDisplayedRequests(gStore.getState()),
getSortedRequests(gStore.getState()).get(5), getSortedRequests(gStore.getState()).get(5),
"GET", "GET",
TEST_IMAGE, { TEST_IMAGE,
{
fuzzyUrl: true, fuzzyUrl: true,
status: 200, status: 200,
statusText: "OK", statusText: "OK",
@ -110,13 +117,15 @@ add_task(function* () {
fullMimeType: "image/png", fullMimeType: "image/png",
size: L10N.getFormatStrWithNumbers("networkMenu.sizeB", 580), size: L10N.getFormatStrWithNumbers("networkMenu.sizeB", 580),
time: true time: true
}); }
verifyRequestItemTarget( );
verifyRequestItemTarget(
document, document,
getDisplayedRequests(gStore.getState()), getDisplayedRequests(gStore.getState()),
getSortedRequests(gStore.getState()).get(6), getSortedRequests(gStore.getState()).get(6),
"GET", "GET",
CONTENT_TYPE_SJS + "?fmt=gzip", { CONTENT_TYPE_SJS + "?fmt=gzip",
{
status: 200, status: 200,
statusText: "OK", statusText: "OK",
type: "plain", type: "plain",
@ -124,7 +133,8 @@ add_task(function* () {
transferred: L10N.getFormatStrWithNumbers("networkMenu.sizeB", 73), transferred: L10N.getFormatStrWithNumbers("networkMenu.sizeB", 73),
size: L10N.getFormatStrWithNumbers("networkMenu.sizeKB", 10.73), size: L10N.getFormatStrWithNumbers("networkMenu.sizeKB", 10.73),
time: true time: true
}); }
);
yield selectIndexAndWaitForEditor(0); yield selectIndexAndWaitForEditor(0);
yield testResponseTab("xml"); yield testResponseTab("xml");

View file

@ -41,8 +41,7 @@ add_task(function* () {
header("Cache-Control: no-cache") header("Cache-Control: no-cache")
]; ];
let { document, gStore, windowRequire } = monitor.panelWin; let { document } = monitor.panelWin;
let Actions = windowRequire("devtools/client/netmonitor/actions/index");
let wait = waitForNetworkEvents(monitor, 1); let wait = waitForNetworkEvents(monitor, 1);
yield ContentTask.spawn(tab.linkedBrowser, SIMPLE_SJS, function* (url) { yield ContentTask.spawn(tab.linkedBrowser, SIMPLE_SJS, function* (url) {

View file

@ -11,7 +11,7 @@ add_task(function* () {
let { tab, monitor } = yield initNetMonitor(CONTENT_TYPE_WITHOUT_CACHE_URL); let { tab, monitor } = yield initNetMonitor(CONTENT_TYPE_WITHOUT_CACHE_URL);
info("Starting test... "); info("Starting test... ");
let { document, gStore, windowRequire } = monitor.panelWin; let { document } = monitor.panelWin;
let wait = waitForNetworkEvents(monitor, CONTENT_TYPE_WITHOUT_CACHE_REQUESTS); let wait = waitForNetworkEvents(monitor, CONTENT_TYPE_WITHOUT_CACHE_REQUESTS);
yield ContentTask.spawn(tab.linkedBrowser, {}, function* () { yield ContentTask.spawn(tab.linkedBrowser, {}, function* () {
@ -29,7 +29,7 @@ add_task(function* () {
// toolbox.doc // toolbox.doc
monitor.toolbox.doc monitor.toolbox.doc
.querySelector("#request-list-context-copy-image-as-data-uri").click(); .querySelector("#request-list-context-copy-image-as-data-uri").click();
}, TEST_IMAGE_DATA_URI); }, TEST_IMAGE_DATA_URI);
ok(true, "Clipboard contains the currently selected image as data uri."); ok(true, "Clipboard contains the currently selected image as data uri.");

View file

@ -13,7 +13,7 @@ add_task(function* () {
let { tab, monitor } = yield initNetMonitor(CURL_UTILS_URL); let { tab, monitor } = yield initNetMonitor(CURL_UTILS_URL);
info("Starting test... "); info("Starting test... ");
let { document, gStore, windowRequire, gNetwork } = monitor.panelWin; let { gStore, windowRequire, gNetwork } = monitor.panelWin;
let Actions = windowRequire("devtools/client/netmonitor/actions/index"); let Actions = windowRequire("devtools/client/netmonitor/actions/index");
let { getSortedRequests } = windowRequire("devtools/client/netmonitor/selectors/index"); let { getSortedRequests } = windowRequire("devtools/client/netmonitor/selectors/index");

View file

@ -13,7 +13,6 @@ add_task(function* () {
info("Starting test... "); info("Starting test... ");
let { document, gStore, windowRequire } = monitor.panelWin; let { document, gStore, windowRequire } = monitor.panelWin;
let Actions = windowRequire("devtools/client/netmonitor/actions/index");
let { let {
getDisplayedRequests, getDisplayedRequests,
getSortedRequests, getSortedRequests,

View file

@ -30,7 +30,8 @@ const REQUESTS_WITH_MEDIA_AND_FLASH_AND_WS = REQUESTS_WITH_MEDIA_AND_FLASH.conca
]); ]);
add_task(function* () { add_task(function* () {
Services.prefs.setCharPref("devtools.netmonitor.filters", '["bogus", "js", "alsobogus"]'); Services.prefs.setCharPref("devtools.netmonitor.filters",
'["bogus", "js", "alsobogus"]');
let { monitor } = yield initNetMonitor(FILTERING_URL); let { monitor } = yield initNetMonitor(FILTERING_URL);
info("Starting test... "); info("Starting test... ");

View file

@ -49,8 +49,9 @@ add_task(function* () {
yield teardown(monitor); yield teardown(monitor);
function testStatus() { function testStatus() {
let value = document.querySelector(".requests-list-network-summary-button").textContent; let value = document.querySelector(".requests-list-network-summary-button")
info("Current summary: " + value); .textContent;
info("Current summary: " + value);
let state = gStore.getState(); let state = gStore.getState();
let totalRequestsCount = state.requests.requests.size; let totalRequestsCount = state.requests.requests.size;

View file

@ -39,14 +39,14 @@ const EXPECTED_REQUESTS_TOP = [
url: EXAMPLE_URL + "xhr_request", url: EXAMPLE_URL + "xhr_request",
causeType: "xhr", causeType: "xhr",
causeUri: TOP_URL, causeUri: TOP_URL,
stack: [{ fn: "performXhrRequest", file: TOP_FILE_NAME, line: 23 }] stack: [{ fn: "performXhrRequest", file: TOP_FILE_NAME, line: 25 }]
}, },
{ {
method: "GET", method: "GET",
url: EXAMPLE_URL + "fetch_request", url: EXAMPLE_URL + "fetch_request",
causeType: "fetch", causeType: "fetch",
causeUri: TOP_URL, causeUri: TOP_URL,
stack: [{ fn: "performFetchRequest", file: TOP_FILE_NAME, line: 27 }] stack: [{ fn: "performFetchRequest", file: TOP_FILE_NAME, line: 29 }]
}, },
{ {
method: "GET", method: "GET",
@ -54,8 +54,8 @@ const EXPECTED_REQUESTS_TOP = [
causeType: "fetch", causeType: "fetch",
causeUri: TOP_URL, causeUri: TOP_URL,
stack: [ stack: [
{ fn: "performPromiseFetchRequest", file: TOP_FILE_NAME, line: 39 }, { fn: "performPromiseFetchRequest", file: TOP_FILE_NAME, line: 41 },
{ fn: null, file: TOP_FILE_NAME, line: 38, asyncCause: "promise callback" }, { fn: null, file: TOP_FILE_NAME, line: 40, asyncCause: "promise callback" },
] ]
}, },
{ {
@ -64,8 +64,8 @@ const EXPECTED_REQUESTS_TOP = [
causeType: "fetch", causeType: "fetch",
causeUri: TOP_URL, causeUri: TOP_URL,
stack: [ stack: [
{ fn: "performTimeoutFetchRequest", file: TOP_FILE_NAME, line: 41 }, { fn: "performTimeoutFetchRequest", file: TOP_FILE_NAME, line: 43 },
{ fn: "performPromiseFetchRequest", file: TOP_FILE_NAME, line: 40, { fn: "performPromiseFetchRequest", file: TOP_FILE_NAME, line: 42,
asyncCause: "setTimeout handler" }, asyncCause: "setTimeout handler" },
] ]
}, },
@ -74,7 +74,7 @@ const EXPECTED_REQUESTS_TOP = [
url: EXAMPLE_URL + "beacon_request", url: EXAMPLE_URL + "beacon_request",
causeType: "beacon", causeType: "beacon",
causeUri: TOP_URL, causeUri: TOP_URL,
stack: [{ fn: "performBeaconRequest", file: TOP_FILE_NAME, line: 31 }] stack: [{ fn: "performBeaconRequest", file: TOP_FILE_NAME, line: 33 }]
}, },
]; ];
@ -105,14 +105,14 @@ const EXPECTED_REQUESTS_SUB = [
url: EXAMPLE_URL + "xhr_request", url: EXAMPLE_URL + "xhr_request",
causeType: "xhr", causeType: "xhr",
causeUri: SUB_URL, causeUri: SUB_URL,
stack: [{ fn: "performXhrRequest", file: SUB_FILE_NAME, line: 22 }] stack: [{ fn: "performXhrRequest", file: SUB_FILE_NAME, line: 24 }]
}, },
{ {
method: "GET", method: "GET",
url: EXAMPLE_URL + "fetch_request", url: EXAMPLE_URL + "fetch_request",
causeType: "fetch", causeType: "fetch",
causeUri: SUB_URL, causeUri: SUB_URL,
stack: [{ fn: "performFetchRequest", file: SUB_FILE_NAME, line: 26 }] stack: [{ fn: "performFetchRequest", file: SUB_FILE_NAME, line: 28 }]
}, },
{ {
method: "GET", method: "GET",
@ -120,8 +120,8 @@ const EXPECTED_REQUESTS_SUB = [
causeType: "fetch", causeType: "fetch",
causeUri: SUB_URL, causeUri: SUB_URL,
stack: [ stack: [
{ fn: "performPromiseFetchRequest", file: SUB_FILE_NAME, line: 38 }, { fn: "performPromiseFetchRequest", file: SUB_FILE_NAME, line: 40 },
{ fn: null, file: SUB_FILE_NAME, line: 37, asyncCause: "promise callback" }, { fn: null, file: SUB_FILE_NAME, line: 39, asyncCause: "promise callback" },
] ]
}, },
{ {
@ -130,8 +130,8 @@ const EXPECTED_REQUESTS_SUB = [
causeType: "fetch", causeType: "fetch",
causeUri: SUB_URL, causeUri: SUB_URL,
stack: [ stack: [
{ fn: "performTimeoutFetchRequest", file: SUB_FILE_NAME, line: 40 }, { fn: "performTimeoutFetchRequest", file: SUB_FILE_NAME, line: 42 },
{ fn: "performPromiseFetchRequest", file: SUB_FILE_NAME, line: 39, { fn: "performPromiseFetchRequest", file: SUB_FILE_NAME, line: 41,
asyncCause: "setTimeout handler" }, asyncCause: "setTimeout handler" },
] ]
}, },
@ -140,7 +140,7 @@ const EXPECTED_REQUESTS_SUB = [
url: EXAMPLE_URL + "beacon_request", url: EXAMPLE_URL + "beacon_request",
causeType: "beacon", causeType: "beacon",
causeUri: SUB_URL, causeUri: SUB_URL,
stack: [{ fn: "performBeaconRequest", file: SUB_FILE_NAME, line: 30 }] stack: [{ fn: "performBeaconRequest", file: SUB_FILE_NAME, line: 32 }]
}, },
]; ];

View file

@ -16,7 +16,6 @@ add_task(function* () {
let { document, gStore, windowRequire } = monitor.panelWin; let { document, gStore, windowRequire } = monitor.panelWin;
let Actions = windowRequire("devtools/client/netmonitor/actions/index"); let Actions = windowRequire("devtools/client/netmonitor/actions/index");
let { let {
getDisplayedRequests,
getSortedRequests, getSortedRequests,
} = windowRequire("devtools/client/netmonitor/selectors/index"); } = windowRequire("devtools/client/netmonitor/selectors/index");
@ -40,17 +39,19 @@ add_task(function* () {
* and only if a header is documented in MDN. * and only if a header is documented in MDN.
*/ */
function testShowLearnMore(data) { function testShowLearnMore(data) {
document.querySelectorAll(".properties-view .treeRow.stringRow").forEach((rowEl, index) => { let selector = ".properties-view .treeRow.stringRow";
let headerName = rowEl.querySelectorAll(".treeLabelCell .treeLabel")[0].textContent; document.querySelectorAll(selector).forEach((rowEl, index) => {
let headerName = rowEl.querySelectorAll(".treeLabelCell .treeLabel")[0]
.textContent;
let headerDocURL = getHeadersURL(headerName); let headerDocURL = getHeadersURL(headerName);
let learnMoreEl = rowEl.querySelectorAll(".treeValueCell .learn-more-link"); let learnMoreEl = rowEl.querySelectorAll(".treeValueCell .learn-more-link");
if (headerDocURL === null) { if (headerDocURL === null) {
ok(learnMoreEl.length === 0, ok(learnMoreEl.length === 0,
"undocumented header does not include a \"Learn More\" button"); "undocumented header does not include a \"Learn More\" button");
} else { } else {
ok(learnMoreEl[0].getAttribute("title") === headerDocURL, ok(learnMoreEl[0].getAttribute("title") === headerDocURL,
"documented header includes a \"Learn More\" button with a link to MDN"); "documented header includes a \"Learn More\" button with a link to MDN");
} }
}); });
} }

View file

@ -64,7 +64,8 @@ add_task(function* () {
function checkImageThumbnail() { function checkImageThumbnail() {
is(document.querySelectorAll(".requests-list-icon[data-type=thumbnail]").length, 1, is(document.querySelectorAll(".requests-list-icon[data-type=thumbnail]").length, 1,
"There should be only one image request with a thumbnail displayed."); "There should be only one image request with a thumbnail displayed.");
is(document.querySelector(".requests-list-icon[data-type=thumbnail]").src, TEST_IMAGE_DATA_URI, is(document.querySelector(".requests-list-icon[data-type=thumbnail]").src,
TEST_IMAGE_DATA_URI,
"The image requests-list-icon thumbnail is displayed correctly."); "The image requests-list-icon thumbnail is displayed correctly.");
is(document.querySelector(".requests-list-icon[data-type=thumbnail]").hidden, false, is(document.querySelector(".requests-list-icon[data-type=thumbnail]").hidden, false,
"The image requests-list-icon thumbnail should not be hidden."); "The image requests-list-icon thumbnail should not be hidden.");

View file

@ -16,10 +16,6 @@ add_task(function* test() {
let { document, gStore, windowRequire, NetMonitorController } = monitor.panelWin; let { document, gStore, windowRequire, NetMonitorController } = monitor.panelWin;
let Actions = windowRequire("devtools/client/netmonitor/actions/index"); let Actions = windowRequire("devtools/client/netmonitor/actions/index");
let { ACTIVITY_TYPE, EVENTS } = windowRequire("devtools/client/netmonitor/constants"); let { ACTIVITY_TYPE, EVENTS } = windowRequire("devtools/client/netmonitor/constants");
let {
getDisplayedRequests,
getSortedRequests,
} = windowRequire("devtools/client/netmonitor/selectors/index");
let toolboxDoc = monitor.toolbox.doc; let toolboxDoc = monitor.toolbox.doc;
gStore.dispatch(Actions.batchEnable(false)); gStore.dispatch(Actions.batchEnable(false));
@ -31,14 +27,12 @@ add_task(function* test() {
yield onThumbnail; yield onThumbnail;
info("Checking the image thumbnail after a few requests were made..."); info("Checking the image thumbnail after a few requests were made...");
yield showTooltipAndVerify(toolboxDoc, yield showTooltipAndVerify(document.querySelectorAll(".request-list-item")[0]);
document.querySelectorAll(".request-list-item")[0]);
// Hide tooltip before next test, to avoid the situation that tooltip covers // Hide tooltip before next test, to avoid the situation that tooltip covers
// the icon for the request of the next test. // the icon for the request of the next test.
info("Checking the image thumbnail gets hidden..."); info("Checking the image thumbnail gets hidden...");
yield hideTooltipAndVerify(monitor.toolbox.doc, yield hideTooltipAndVerify(document.querySelectorAll(".request-list-item")[0]);
document.querySelectorAll(".request-list-item")[0]);
// +1 extra document reload // +1 extra document reload
onEvents = waitForNetworkEvents(monitor, IMAGE_TOOLTIP_REQUESTS + 1); onEvents = waitForNetworkEvents(monitor, IMAGE_TOOLTIP_REQUESTS + 1);
@ -51,12 +45,12 @@ add_task(function* test() {
yield onThumbnail; yield onThumbnail;
info("Checking the image thumbnail after a reload."); info("Checking the image thumbnail after a reload.");
yield showTooltipAndVerify(toolboxDoc, yield showTooltipAndVerify(document.querySelectorAll(".request-list-item")[1]);
document.querySelectorAll(".request-list-item")[1]);
info("Checking if the image thumbnail is hidden when mouse leaves the menu widget"); info("Checking if the image thumbnail is hidden when mouse leaves the menu widget");
let requestsListContents = document.querySelector(".requests-list-contents"); let requestsListContents = document.querySelector(".requests-list-contents");
EventUtils.synthesizeMouse(requestsListContents, 0, 0, { type: "mouseout" }, monitor.panelWin); EventUtils.synthesizeMouse(requestsListContents, 0, 0, { type: "mouseout" },
monitor.panelWin);
yield waitUntil(() => !toolboxDoc.querySelector(".tooltip-container.tooltip-visible")); yield waitUntil(() => !toolboxDoc.querySelector(".tooltip-container.tooltip-visible"));
yield teardown(monitor); yield teardown(monitor);
@ -71,9 +65,9 @@ add_task(function* test() {
* Show a tooltip on the {target} and verify that it was displayed * Show a tooltip on the {target} and verify that it was displayed
* with the expected content. * with the expected content.
*/ */
function* showTooltipAndVerify(toolboxDoc, target) { function* showTooltipAndVerify(target) {
let anchor = target.querySelector(".requests-list-file"); let anchor = target.querySelector(".requests-list-file");
yield showTooltipOn(toolboxDoc, anchor); yield showTooltipOn(anchor);
info("Tooltip was successfully opened for the image request."); info("Tooltip was successfully opened for the image request.");
is(toolboxDoc.querySelector(".tooltip-panel img").src, TEST_IMAGE_DATA_URI, is(toolboxDoc.querySelector(".tooltip-panel img").src, TEST_IMAGE_DATA_URI,
@ -84,7 +78,7 @@ add_task(function* test() {
* Trigger a tooltip over an element by sending mousemove event. * Trigger a tooltip over an element by sending mousemove event.
* @return a promise that resolves when the tooltip is shown * @return a promise that resolves when the tooltip is shown
*/ */
function* showTooltipOn(toolboxDoc, element) { function* showTooltipOn(element) {
let win = element.ownerDocument.defaultView; let win = element.ownerDocument.defaultView;
EventUtils.synthesizeMouseAtCenter(element, { type: "mousemove" }, win); EventUtils.synthesizeMouseAtCenter(element, { type: "mousemove" }, win);
yield waitUntil(() => toolboxDoc.querySelector(".tooltip-panel img")); yield waitUntil(() => toolboxDoc.querySelector(".tooltip-panel img"));
@ -93,13 +87,14 @@ add_task(function* test() {
/** /**
* Hide a tooltip on the {target} and verify that it was closed. * Hide a tooltip on the {target} and verify that it was closed.
*/ */
function* hideTooltipAndVerify(toolboxDoc, target) { function* hideTooltipAndVerify(target) {
// Hovering over the "method" column hides the tooltip. // Hovering over the "method" column hides the tooltip.
let anchor = target.querySelector(".requests-list-method"); let anchor = target.querySelector(".requests-list-method");
let win = anchor.ownerDocument.defaultView; let win = anchor.ownerDocument.defaultView;
EventUtils.synthesizeMouseAtCenter(anchor, { type: "mousemove" }, win); EventUtils.synthesizeMouseAtCenter(anchor, { type: "mousemove" }, win);
yield waitUntil(() => !toolboxDoc.querySelector(".tooltip-container.tooltip-visible")); yield waitUntil(
() => !toolboxDoc.querySelector(".tooltip-container.tooltip-visible"));
info("Tooltip was successfully closed."); info("Tooltip was successfully closed.");
} }
}); });

View file

@ -15,10 +15,6 @@ add_task(function* () {
let { document, gStore, windowRequire } = monitor.panelWin; let { document, gStore, windowRequire } = monitor.panelWin;
let Actions = windowRequire("devtools/client/netmonitor/actions/index"); let Actions = windowRequire("devtools/client/netmonitor/actions/index");
let {
getDisplayedRequests,
getSortedRequests,
} = windowRequire("devtools/client/netmonitor/selectors/index");
gStore.dispatch(Actions.batchEnable(false)); gStore.dispatch(Actions.batchEnable(false));

View file

@ -13,10 +13,6 @@ add_task(function* () {
let { document, gStore, windowRequire } = monitor.panelWin; let { document, gStore, windowRequire } = monitor.panelWin;
let Actions = windowRequire("devtools/client/netmonitor/actions/index"); let Actions = windowRequire("devtools/client/netmonitor/actions/index");
let {
getDisplayedRequests,
getSortedRequests,
} = windowRequire("devtools/client/netmonitor/selectors/index");
gStore.dispatch(Actions.batchEnable(false)); gStore.dispatch(Actions.batchEnable(false));

View file

@ -12,7 +12,7 @@ add_task(function* () {
let { tab, monitor } = yield initNetMonitor(SINGLE_GET_URL); let { tab, monitor } = yield initNetMonitor(SINGLE_GET_URL);
info("Starting test... "); info("Starting test... ");
let { document, windowRequire } = monitor.panelWin; let { document } = monitor.panelWin;
Services.prefs.setBoolPref("devtools.webconsole.persistlog", false); Services.prefs.setBoolPref("devtools.webconsole.persistlog", false);

View file

@ -44,8 +44,9 @@ add_task(function* () {
fullMimeType: "text/plain; charset=utf-8", fullMimeType: "text/plain; charset=utf-8",
size: L10N.getFormatStrWithNumbers("networkMenu.sizeB", 12), size: L10N.getFormatStrWithNumbers("networkMenu.sizeB", 12),
time: true time: true
}); }
verifyRequestItemTarget( );
verifyRequestItemTarget(
document, document,
getDisplayedRequests(gStore.getState()), getDisplayedRequests(gStore.getState()),
getSortedRequests(gStore.getState()).get(1), getSortedRequests(gStore.getState()).get(1),
@ -58,7 +59,8 @@ add_task(function* () {
fullMimeType: "text/plain; charset=utf-8", fullMimeType: "text/plain; charset=utf-8",
size: L10N.getFormatStrWithNumbers("networkMenu.sizeB", 12), size: L10N.getFormatStrWithNumbers("networkMenu.sizeB", 12),
time: true time: true
}); }
);
// Wait for all tree sections updated by react // Wait for all tree sections updated by react
wait = waitForDOM(document, "#params-panel .tree-section", 2); wait = waitForDOM(document, "#params-panel .tree-section", 2);
@ -107,15 +109,18 @@ add_task(function* () {
L10N.getStr(type == "urlencoded" ? "paramsFormData" : "paramsPostPayload"), L10N.getStr(type == "urlencoded" ? "paramsFormData" : "paramsPostPayload"),
"The post section doesn't have the correct title."); "The post section doesn't have the correct title.");
let labels = tabpanel.querySelectorAll("tr:not(.tree-section) .treeLabelCell .treeLabel"); let labels = tabpanel
let values = tabpanel.querySelectorAll("tr:not(.tree-section) .treeValueCell .objectBox"); .querySelectorAll("tr:not(.tree-section) .treeLabelCell .treeLabel");
let values = tabpanel
.querySelectorAll("tr:not(.tree-section) .treeValueCell .objectBox");
is(labels[0].textContent, "foo", "The first query param name was incorrect."); is(labels[0].textContent, "foo", "The first query param name was incorrect.");
is(values[0].textContent, "\"bar\"", "The first query param value was incorrect."); is(values[0].textContent, "\"bar\"", "The first query param value was incorrect.");
is(labels[1].textContent, "baz", "The second query param name was incorrect."); is(labels[1].textContent, "baz", "The second query param name was incorrect.");
is(values[1].textContent, "\"42\"", "The second query param value was incorrect."); is(values[1].textContent, "\"42\"", "The second query param value was incorrect.");
is(labels[2].textContent, "type", "The third query param name was incorrect."); is(labels[2].textContent, "type", "The third query param name was incorrect.");
is(values[2].textContent, "\"" + type + "\"", "The third query param value was incorrect."); is(values[2].textContent, "\"" + type + "\"",
"The third query param value was incorrect.");
if (type == "urlencoded") { if (type == "urlencoded") {
checkVisibility("params"); checkVisibility("params");
@ -129,7 +134,8 @@ add_task(function* () {
is(labels.length, 3, "There should be 3 param values displayed in this tabpanel."); is(labels.length, 3, "There should be 3 param values displayed in this tabpanel.");
let text = editorFrames[0].contentDocument.querySelector(".CodeMirror-code").textContent; let text = editorFrames[0].contentDocument.querySelector(".CodeMirror-code")
.textContent;
ok(text.includes("Content-Disposition: form-data; name=\"text\""), ok(text.includes("Content-Disposition: form-data; name=\"text\""),
"The text shown in the source editor is incorrect (1.1)."); "The text shown in the source editor is incorrect (1.1).");

View file

@ -16,10 +16,6 @@ add_task(function* () {
let { document, gStore, windowRequire } = monitor.panelWin; let { document, gStore, windowRequire } = monitor.panelWin;
let Actions = windowRequire("devtools/client/netmonitor/actions/index"); let Actions = windowRequire("devtools/client/netmonitor/actions/index");
let {
getDisplayedRequests,
getSortedRequests,
} = windowRequire("devtools/client/netmonitor/selectors/index");
gStore.dispatch(Actions.batchEnable(false)); gStore.dispatch(Actions.batchEnable(false));

View file

@ -11,7 +11,8 @@ add_task(function* () {
let { monitor } = yield initNetMonitor(SIMPLE_URL); let { monitor } = yield initNetMonitor(SIMPLE_URL);
let { getRequestFilterTypes } = monitor.panelWin let { getRequestFilterTypes } = monitor.panelWin
.windowRequire("devtools/client/netmonitor/selectors/index"); .windowRequire("devtools/client/netmonitor/selectors/index");
let Actions = monitor.panelWin.windowRequire("devtools/client/netmonitor/actions/index"); let Actions = monitor.panelWin
.windowRequire("devtools/client/netmonitor/actions/index");
info("Starting test... "); info("Starting test... ");
// This test reopens the network monitor a bunch of times, for different // This test reopens the network monitor a bunch of times, for different
@ -22,7 +23,8 @@ add_task(function* () {
// since the tool is reopened a bunch of times during this test // since the tool is reopened a bunch of times during this test
// and the instances will differ. // and the instances will differ.
let getDoc = () => monitor.panelWin.document; let getDoc = () => monitor.panelWin.document;
let getPrefs = () => monitor.panelWin.windowRequire("devtools/client/netmonitor/utils/prefs").Prefs; let getPrefs = () => monitor.panelWin
.windowRequire("devtools/client/netmonitor/utils/prefs").Prefs;
let getStore = () => monitor.panelWin.gStore; let getStore = () => monitor.panelWin.gStore;
let getState = () => getStore().getState(); let getState = () => getStore().getState();
@ -44,15 +46,19 @@ add_task(function* () {
newValue: ~~(Math.random() * 200 + 100), newValue: ~~(Math.random() * 200 + 100),
validateValue: () => validateValue: () =>
getDoc().querySelector(".monitor-panel .split-box .controlled").clientWidth, getDoc().querySelector(".monitor-panel .split-box .controlled").clientWidth,
modifyFrontend: (value) => modifyFrontend: function (value) {
getDoc().querySelector(".monitor-panel .split-box .controlled").style.width = `${value}px`, getDoc().querySelector(".monitor-panel .split-box .controlled")
.style.width = `${value}px`;
}
}, },
networkDetailsHeight: { networkDetailsHeight: {
newValue: ~~(Math.random() * 300 + 100), newValue: ~~(Math.random() * 300 + 100),
validateValue: () => validateValue: () =>
getDoc().querySelector(".monitor-panel .split-box .controlled").clientHeight, getDoc().querySelector(".monitor-panel .split-box .controlled").clientHeight,
modifyFrontend: (value) => modifyFrontend: function (value) {
getDoc().querySelector(".monitor-panel .split-box .controlled").style.height = `${value}px` getDoc().querySelector(".monitor-panel .split-box .controlled")
.style.height = `${value}px`;
}
} }
/* add more prefs here... */ /* add more prefs here... */
}; };
@ -80,7 +86,7 @@ add_task(function* () {
for (let name in prefsToCheck) { for (let name in prefsToCheck) {
if ((isVerticalSplitter && name === "networkDetailsHeight") || if ((isVerticalSplitter && name === "networkDetailsHeight") ||
(!isVerticalSplitter && name === "networkDetailsWidth")) { (!isVerticalSplitter && name === "networkDetailsWidth")) {
continue continue;
} }
let currentValue = getPrefs()[name]; let currentValue = getPrefs()[name];
@ -100,7 +106,7 @@ add_task(function* () {
for (let name in prefsToCheck) { for (let name in prefsToCheck) {
if ((isVerticalSplitter && name === "networkDetailsHeight") || if ((isVerticalSplitter && name === "networkDetailsHeight") ||
(!isVerticalSplitter && name === "networkDetailsWidth")) { (!isVerticalSplitter && name === "networkDetailsWidth")) {
continue continue;
} }
let currentValue = getPrefs()[name]; let currentValue = getPrefs()[name];
@ -127,7 +133,7 @@ add_task(function* () {
for (let name in prefsToCheck) { for (let name in prefsToCheck) {
if ((isVerticalSplitter && name === "networkDetailsHeight") || if ((isVerticalSplitter && name === "networkDetailsHeight") ||
(!isVerticalSplitter && name === "networkDetailsWidth")) { (!isVerticalSplitter && name === "networkDetailsWidth")) {
continue continue;
} }
let currentValue = getPrefs()[name]; let currentValue = getPrefs()[name];
@ -150,7 +156,7 @@ add_task(function* () {
for (let name in prefsToCheck) { for (let name in prefsToCheck) {
if ((isVerticalSplitter && name === "networkDetailsHeight") || if ((isVerticalSplitter && name === "networkDetailsHeight") ||
(!isVerticalSplitter && name === "networkDetailsWidth")) { (!isVerticalSplitter && name === "networkDetailsWidth")) {
continue continue;
} }
let currentValue = getPrefs()[name]; let currentValue = getPrefs()[name];

View file

@ -11,7 +11,7 @@ add_task(function* () {
let { monitor } = yield initNetMonitor(SIMPLE_URL); let { monitor } = yield initNetMonitor(SIMPLE_URL);
info("Starting test... "); info("Starting test... ");
let { document, windowRequire } = monitor.panelWin; let { document } = monitor.panelWin;
let button = document.querySelector(".requests-list-reload-notice-button"); let button = document.querySelector(".requests-list-reload-notice-button");
button.click(); button.click();

View file

@ -74,7 +74,7 @@ add_task(function* () {
/* /*
* Test that the New Request form was populated correctly * Test that the New Request form was populated correctly
*/ */
function testCustomForm(data) { function* testCustomForm(data) {
yield waitUntil(() => document.querySelector(".custom-request-panel")); yield waitUntil(() => document.querySelector(".custom-request-panel"));
is(document.getElementById("custom-method-value").value, data.method, is(document.getElementById("custom-method-value").value, data.method,
"new request form showing correct method"); "new request form showing correct method");

View file

@ -12,10 +12,9 @@ add_task(function* () {
let { tab, monitor } = yield initNetMonitor(CORS_URL); let { tab, monitor } = yield initNetMonitor(CORS_URL);
info("Starting test... "); info("Starting test... ");
let { document, gStore, windowRequire } = monitor.panelWin; let { gStore, windowRequire } = monitor.panelWin;
let Actions = windowRequire("devtools/client/netmonitor/actions/index"); let Actions = windowRequire("devtools/client/netmonitor/actions/index");
let { let {
getDisplayedRequests,
getSortedRequests, getSortedRequests,
} = windowRequire("devtools/client/netmonitor/selectors/index"); } = windowRequire("devtools/client/netmonitor/selectors/index");
@ -44,7 +43,7 @@ add_task(function* () {
let onRequests = waitForNetworkEvents(monitor, 1, 0); let onRequests = waitForNetworkEvents(monitor, 1, 0);
ITEMS.forEach((item) => { ITEMS.forEach((item) => {
info(`Selecting the ${item.method} request`); info(`Selecting the ${item.method} request`);
gStore.dispatch(Actions.selectRequest(item.id)) gStore.dispatch(Actions.selectRequest(item.id));
info("Cloning the selected request into a custom clone"); info("Cloning the selected request into a custom clone");
gStore.dispatch(Actions.cloneSelectedRequest()); gStore.dispatch(Actions.cloneSelectedRequest());

View file

@ -11,10 +11,9 @@ add_task(function* () {
let { monitor } = yield initNetMonitor(SIMPLE_SJS); let { monitor } = yield initNetMonitor(SIMPLE_SJS);
info("Starting test... "); info("Starting test... ");
let { document, gStore, windowRequire, NetMonitorController } = monitor.panelWin; let { gStore, windowRequire, NetMonitorController } = monitor.panelWin;
let Actions = windowRequire("devtools/client/netmonitor/actions/index"); let Actions = windowRequire("devtools/client/netmonitor/actions/index");
let { let {
getDisplayedRequests,
getSortedRequests, getSortedRequests,
} = windowRequire("devtools/client/netmonitor/selectors/index"); } = windowRequire("devtools/client/netmonitor/selectors/index");

View file

@ -46,8 +46,8 @@ add_task(function* () {
// Host // Host
is(tabpanel.querySelectorAll(".treeLabel.objectLabel")[1].textContent, is(tabpanel.querySelectorAll(".treeLabel.objectLabel")[1].textContent,
"Host example.com:", "Host example.com:",
"Label has the expected value."); "Label has the expected value.");
is(textboxes[2].value, "Disabled", "Label has the expected value."); is(textboxes[2].value, "Disabled", "Label has the expected value.");
is(textboxes[3].value, "Disabled", "Label has the expected value."); is(textboxes[3].value, "Disabled", "Label has the expected value.");
@ -56,7 +56,8 @@ add_task(function* () {
is(textboxes[5].value, "<Not Available>", "Label has the expected value."); is(textboxes[5].value, "<Not Available>", "Label has the expected value.");
is(textboxes[6].value, "<Not Available>", "Label has the expected value."); is(textboxes[6].value, "<Not Available>", "Label has the expected value.");
is(textboxes[7].value, "Temporary Certificate Authority", "Label has the expected value."); is(textboxes[7].value, "Temporary Certificate Authority",
"Label has the expected value.");
is(textboxes[8].value, "Mozilla Testing", "Label has the expected value."); is(textboxes[8].value, "Mozilla Testing", "Label has the expected value.");
is(textboxes[9].value, "Profile Guided Optimization", "Label has the expected value."); is(textboxes[9].value, "Profile Guided Optimization", "Label has the expected value.");

View file

@ -11,10 +11,6 @@ add_task(function* () {
let { tab, monitor } = yield initNetMonitor(CUSTOM_GET_URL); let { tab, monitor } = yield initNetMonitor(CUSTOM_GET_URL);
let { document, gStore, windowRequire } = monitor.panelWin; let { document, gStore, windowRequire } = monitor.panelWin;
let Actions = windowRequire("devtools/client/netmonitor/actions/index"); let Actions = windowRequire("devtools/client/netmonitor/actions/index");
let {
getDisplayedRequests,
getSortedRequests,
} = windowRequire("devtools/client/netmonitor/selectors/index");
gStore.dispatch(Actions.batchEnable(false)); gStore.dispatch(Actions.batchEnable(false));
@ -54,6 +50,7 @@ add_task(function* () {
info("Clicking security icon of the first request and waiting for panel update."); info("Clicking security icon of the first request and waiting for panel update.");
EventUtils.synthesizeMouseAtCenter(icon, {}, monitor.panelWin); EventUtils.synthesizeMouseAtCenter(icon, {}, monitor.panelWin);
ok(document.querySelector("#security-tab[aria-selected=true]"), "Security tab is selected."); ok(document.querySelector("#security-tab[aria-selected=true]"),
"Security tab is selected.");
} }
}); });

View file

@ -12,10 +12,6 @@ add_task(function* () {
let { tab, monitor } = yield initNetMonitor(CUSTOM_GET_URL); let { tab, monitor } = yield initNetMonitor(CUSTOM_GET_URL);
let { document, gStore, windowRequire } = monitor.panelWin; let { document, gStore, windowRequire } = monitor.panelWin;
let Actions = windowRequire("devtools/client/netmonitor/actions/index"); let Actions = windowRequire("devtools/client/netmonitor/actions/index");
let {
getDisplayedRequests,
getSortedRequests,
} = windowRequire("devtools/client/netmonitor/selectors/index");
gStore.dispatch(Actions.batchEnable(false)); gStore.dispatch(Actions.batchEnable(false));
@ -25,13 +21,13 @@ add_task(function* () {
}); });
yield wait; yield wait;
is(gStore.getState().requests.requests.size, 2, "There were two requests due to redirect."); is(gStore.getState().requests.requests.size, 2,
"There were two requests due to redirect.");
let initial = getSortedRequests(gStore.getState()).get(0); let [
let redirect = getSortedRequests(gStore.getState()).get(1); initialSecurityIcon,
redirectSecurityIcon,
let initialSecurityIcon = document.querySelectorAll(".requests-security-state-icon")[0]; ] = document.querySelectorAll(".requests-security-state-icon");
let redirectSecurityIcon = document.querySelectorAll(".requests-security-state-icon")[1];
ok(initialSecurityIcon.classList.contains("security-state-insecure"), ok(initialSecurityIcon.classList.contains("security-state-insecure"),
"Initial request was marked insecure."); "Initial request was marked insecure.");

View file

@ -19,10 +19,6 @@ add_task(function* () {
let { tab, monitor } = yield initNetMonitor(CUSTOM_GET_URL); let { tab, monitor } = yield initNetMonitor(CUSTOM_GET_URL);
let { document, gStore, windowRequire } = monitor.panelWin; let { document, gStore, windowRequire } = monitor.panelWin;
let Actions = windowRequire("devtools/client/netmonitor/actions/index"); let Actions = windowRequire("devtools/client/netmonitor/actions/index");
let {
getDisplayedRequests,
getSortedRequests,
} = windowRequire("devtools/client/netmonitor/selectors/index");
gStore.dispatch(Actions.batchEnable(false)); gStore.dispatch(Actions.batchEnable(false));

View file

@ -34,7 +34,9 @@ add_task(function* () {
let { tab, monitor } = yield initNetMonitor(CUSTOM_GET_URL); let { tab, monitor } = yield initNetMonitor(CUSTOM_GET_URL);
let { document, gStore, windowRequire } = monitor.panelWin; let { document, gStore, windowRequire } = monitor.panelWin;
let Actions = windowRequire("devtools/client/netmonitor/actions/index"); let Actions = windowRequire("devtools/client/netmonitor/actions/index");
let { getSelectedRequest } = windowRequire("devtools/client/netmonitor/selectors/index"); let {
getSelectedRequest,
} = windowRequire("devtools/client/netmonitor/selectors/index");
gStore.dispatch(Actions.batchEnable(false)); gStore.dispatch(Actions.batchEnable(false));

View file

@ -9,7 +9,7 @@
add_task(function* () { add_task(function* () {
let { tab, monitor } = yield initNetMonitor(SEND_BEACON_URL); let { tab, monitor } = yield initNetMonitor(SEND_BEACON_URL);
let { gStore, windowRequire } = monitor.panelWin; let { gStore, windowRequire } = monitor.panelWin;
let Actions = windowRequire("devtools/client/netmonitor/actions/index"); let Actions = windowRequire("devtools/client/netmonitor/actions/index");
let { getSortedRequests } = windowRequire("devtools/client/netmonitor/selectors/index"); let { getSortedRequests } = windowRequire("devtools/client/netmonitor/selectors/index");

View file

@ -223,12 +223,15 @@ function test() {
ok(requestItem.responseContent, ok(requestItem.responseContent,
"There should be a responseContent data available."); "There should be a responseContent data available.");
// eslint-disable-next-line mozilla/no-cpows-in-tests
is(requestItem.responseContent.content.mimeType, is(requestItem.responseContent.content.mimeType,
"text/plain; charset=utf-8", "text/plain; charset=utf-8",
"The responseContent data has an incorrect |content.mimeType| property."); "The responseContent data has an incorrect |content.mimeType| property.");
// eslint-disable-next-line mozilla/no-cpows-in-tests
is(requestItem.responseContent.content.text, is(requestItem.responseContent.content.text,
"Hello world!", "Hello world!",
"The responseContent data has an incorrect |content.text| property."); "The responseContent data has an incorrect |content.text| property.");
// eslint-disable-next-line mozilla/no-cpows-in-tests
is(requestItem.responseContent.content.size, is(requestItem.responseContent.content.size,
12, 12,
"The responseContent data has an incorrect |content.size| property."); "The responseContent data has an incorrect |content.size| property.");

View file

@ -13,13 +13,14 @@ add_task(function* () {
let { tab, monitor } = yield initNetMonitor(SIMPLE_SJS); let { tab, monitor } = yield initNetMonitor(SIMPLE_SJS);
info("Starting test... "); info("Starting test... ");
let { document, gStore, windowRequire } = monitor.panelWin; let { document, gStore, windowRequire, NetMonitorView } = monitor.panelWin;
let Actions = windowRequire("devtools/client/netmonitor/actions/index"); let Actions = windowRequire("devtools/client/netmonitor/actions/index");
let { EVENTS } = windowRequire("devtools/client/netmonitor/constants"); let { EVENTS } = windowRequire("devtools/client/netmonitor/constants");
let { let {
getDisplayedRequests, getSelectedRequest,
getSortedRequests, getSortedRequests,
} = windowRequire("devtools/client/netmonitor/selectors/index"); } = windowRequire("devtools/client/netmonitor/selectors/index");
let Editor = require("devtools/client/sourceeditor/editor");
gStore.dispatch(Actions.batchEnable(false)); gStore.dispatch(Actions.batchEnable(false));

View file

@ -18,11 +18,6 @@ add_task(function* () {
let { document, gStore, windowRequire } = monitor.panelWin; let { document, gStore, windowRequire } = monitor.panelWin;
let Actions = windowRequire("devtools/client/netmonitor/actions/index"); let Actions = windowRequire("devtools/client/netmonitor/actions/index");
let { EVENTS } = windowRequire("devtools/client/netmonitor/constants");
let {
getDisplayedRequests,
getSortedRequests,
} = windowRequire("devtools/client/netmonitor/selectors/index");
gStore.dispatch(Actions.batchEnable(false)); gStore.dispatch(Actions.batchEnable(false));

View file

@ -27,21 +27,25 @@ add_task(function* () {
info("Waiting for placeholder to display"); info("Waiting for placeholder to display");
yield waitUntil( yield waitUntil(
() => document.querySelectorAll(".pie-chart-container[placeholder=true]").length == 2); () => document.querySelectorAll(".pie-chart-container[placeholder=true]")
.length == 2);
ok(true, "Two placeholder pie charts appear to be rendered correctly."); ok(true, "Two placeholder pie charts appear to be rendered correctly.");
yield waitUntil( yield waitUntil(
() => document.querySelectorAll(".table-chart-container[placeholder=true]").length == 2); () => document.querySelectorAll(".table-chart-container[placeholder=true]")
.length == 2);
ok(true, "Two placeholde table charts appear to be rendered correctly."); ok(true, "Two placeholde table charts appear to be rendered correctly.");
info("Waiting for chart to display"); info("Waiting for chart to display");
yield waitUntil( yield waitUntil(
() => document.querySelectorAll(".pie-chart-container:not([placeholder=true])").length == 2); () => document.querySelectorAll(".pie-chart-container:not([placeholder=true])")
.length == 2);
ok(true, "Two real pie charts appear to be rendered correctly."); ok(true, "Two real pie charts appear to be rendered correctly.");
yield waitUntil( yield waitUntil(
() => document.querySelectorAll(".table-chart-container:not([placeholder=true])").length == 2); () => document.querySelectorAll(".table-chart-container:not([placeholder=true])")
.length == 2);
ok(true, "Two real table charts appear to be rendered correctly."); ok(true, "Two real table charts appear to be rendered correctly.");
yield teardown(monitor); yield teardown(monitor);

View file

@ -35,7 +35,8 @@ add_task(function* () {
"The main panel is switched to the statistics panel."); "The main panel is switched to the statistics panel.");
yield waitUntil( yield waitUntil(
() => document.querySelectorAll(".pie-chart-container:not([placeholder=true])").length == 2); () => document.querySelectorAll(".pie-chart-container:not([placeholder=true])")
.length == 2);
ok(true, "Two real pie charts appear to be rendered correctly."); ok(true, "Two real pie charts appear to be rendered correctly.");
EventUtils.sendMouseEvent({ type: "click" }, EventUtils.sendMouseEvent({ type: "click" },

View file

@ -14,8 +14,7 @@ function* throttleTest(actuallyThrottle) {
requestLongerTimeout(2); requestLongerTimeout(2);
let { monitor } = yield initNetMonitor(SIMPLE_URL); let { monitor } = yield initNetMonitor(SIMPLE_URL);
let { document, gStore, windowRequire, NetMonitorController } = monitor.panelWin; let { gStore, windowRequire, NetMonitorController } = monitor.panelWin;
let Actions = windowRequire("devtools/client/netmonitor/actions/index");
let { ACTIVITY_TYPE } = windowRequire("devtools/client/netmonitor/constants"); let { ACTIVITY_TYPE } = windowRequire("devtools/client/netmonitor/constants");
let { EVENTS } = windowRequire("devtools/client/netmonitor/constants"); let { EVENTS } = windowRequire("devtools/client/netmonitor/constants");
let { let {

View file

@ -39,20 +39,21 @@ add_task(function* () {
secDivs.forEach(div => info(`Second division: ${div.textContent}`)); secDivs.forEach(div => info(`Second division: ${div.textContent}`));
minDivs.forEach(div => info(`Minute division: ${div.textContent}`)); minDivs.forEach(div => info(`Minute division: ${div.textContent}`));
is(gStore.getState().requests.requests.size, 2, "There should be only two requests made."); is(gStore.getState().requests.requests.size, 2,
"There should be only two requests made.");
let firstRequest = getSortedRequests(gStore.getState()).get(0); let firstRequest = getSortedRequests(gStore.getState()).get(0);
let lastRequest = getSortedRequests(gStore.getState()).get(1); let lastRequest = getSortedRequests(gStore.getState()).get(1);
info("First request happened at: " + info("First request happened at: " +
firstRequest.responseHeaders.headers.find(e => e.name == "Date").value); firstRequest.responseHeaders.headers.find(e => e.name == "Date").value);
info("Last request happened at: " + info("Last request happened at: " +
lastRequest.responseHeaders.headers.find(e => e.name == "Date").value); lastRequest.responseHeaders.headers.find(e => e.name == "Date").value);
ok(secDivs.length, ok(secDivs.length,
"There should be at least one division on the seconds time scale."); "There should be at least one division on the seconds time scale.");
ok(secDivs[0].textContent.match(/\d+\.\d{2}\s\w+/), ok(secDivs[0].textContent.match(/\d+\.\d{2}\s\w+/),
"The division on the seconds time scale looks legit."); "The division on the seconds time scale looks legit.");
return teardown(monitor); return teardown(monitor);
}); });

View file

@ -2,6 +2,9 @@
http://creativecommons.org/publicdomain/zero/1.0/ */ http://creativecommons.org/publicdomain/zero/1.0/ */
/* import-globals-from ../../framework/test/shared-head.js */ /* import-globals-from ../../framework/test/shared-head.js */
/* exported Toolbox, restartNetMonitor, teardown, waitForExplicitFinish,
verifyRequestItemTarget, waitFor, testFilterButtons, loadCommonFrameScript,
performRequestsInContent, waitForNetworkEvents */
"use strict"; "use strict";
@ -11,7 +14,7 @@ Services.scriptloader.loadSubScript(
this); this);
const { EVENTS } = require("devtools/client/netmonitor/constants"); const { EVENTS } = require("devtools/client/netmonitor/constants");
var { Toolbox } = require("devtools/client/framework/toolbox"); let { Toolbox } = require("devtools/client/framework/toolbox");
const { const {
decodeUnicodeUrl, decodeUnicodeUrl,
getUrlBaseName, getUrlBaseName,
@ -19,6 +22,7 @@ const {
getUrlHost, getUrlHost,
} = require("devtools/client/netmonitor/utils/request-utils"); } = require("devtools/client/netmonitor/utils/request-utils");
/* eslint-disable no-unused-vars, max-len */
const EXAMPLE_URL = "http://example.com/browser/devtools/client/netmonitor/test/"; const EXAMPLE_URL = "http://example.com/browser/devtools/client/netmonitor/test/";
const HTTPS_EXAMPLE_URL = "https://example.com/browser/devtools/client/netmonitor/test/"; const HTTPS_EXAMPLE_URL = "https://example.com/browser/devtools/client/netmonitor/test/";
@ -69,6 +73,7 @@ const TEST_IMAGE = EXAMPLE_URL + "test-image.png";
const TEST_IMAGE_DATA_URI = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg=="; const TEST_IMAGE_DATA_URI = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg==";
const FRAME_SCRIPT_UTILS_URL = "chrome://devtools/content/shared/frame-script-utils.js"; const FRAME_SCRIPT_UTILS_URL = "chrome://devtools/content/shared/frame-script-utils.js";
/* eslint-enable no-unused-vars, max-len */
// All tests are asynchronous. // All tests are asynchronous.
waitForExplicitFinish(); waitForExplicitFinish();
@ -91,45 +96,45 @@ registerCleanupFunction(() => {
Services.prefs.clearUserPref("devtools.cache.disabled"); Services.prefs.clearUserPref("devtools.cache.disabled");
}); });
function waitForNavigation(aTarget) { function waitForNavigation(target) {
let deferred = promise.defer(); let deferred = promise.defer();
aTarget.once("will-navigate", () => { target.once("will-navigate", () => {
aTarget.once("navigate", () => { target.once("navigate", () => {
deferred.resolve(); deferred.resolve();
}); });
}); });
return deferred.promise; return deferred.promise;
} }
function reconfigureTab(aTarget, aOptions) { function reconfigureTab(target, options) {
let deferred = promise.defer(); let deferred = promise.defer();
aTarget.activeTab.reconfigure(aOptions, deferred.resolve); target.activeTab.reconfigure(options, deferred.resolve);
return deferred.promise; return deferred.promise;
} }
function toggleCache(aTarget, aDisabled) { function toggleCache(target, disabled) {
let options = { cacheDisabled: aDisabled, performReload: true }; let options = { cacheDisabled: disabled, performReload: true };
let navigationFinished = waitForNavigation(aTarget); let navigationFinished = waitForNavigation(target);
// Disable the cache for any toolbox that it is opened from this point on. // Disable the cache for any toolbox that it is opened from this point on.
Services.prefs.setBoolPref("devtools.cache.disabled", aDisabled); Services.prefs.setBoolPref("devtools.cache.disabled", disabled);
return reconfigureTab(aTarget, options).then(() => navigationFinished); return reconfigureTab(target, options).then(() => navigationFinished);
} }
function initNetMonitor(aUrl, aWindow, aEnableCache) { function initNetMonitor(url, window, enableCache) {
info("Initializing a network monitor pane."); info("Initializing a network monitor pane.");
return Task.spawn(function* () { return Task.spawn(function* () {
let tab = yield addTab(aUrl); let tab = yield addTab(url);
info("Net tab added successfully: " + aUrl); info("Net tab added successfully: " + url);
let target = TargetFactory.forTab(tab); let target = TargetFactory.forTab(tab);
yield target.makeRemote(); yield target.makeRemote();
info("Target remoted."); info("Target remoted.");
if (!aEnableCache) { if (!enableCache) {
info("Disabling cache and reloading page."); info("Disabling cache and reloading page.");
yield toggleCache(target, true); yield toggleCache(target, true);
info("Cache disabled when the current and all future toolboxes are open."); info("Cache disabled when the current and all future toolboxes are open.");
@ -175,9 +180,9 @@ function teardown(monitor) {
}); });
} }
function waitForNetworkEvents(aMonitor, aGetRequests, aPostRequests = 0) { function waitForNetworkEvents(monitor, getRequests, postRequests = 0) {
let deferred = promise.defer(); let deferred = promise.defer();
let panel = aMonitor.panelWin; let panel = monitor.panelWin;
let progress = {}; let progress = {};
let genericEvents = 0; let genericEvents = 0;
let postEvents = 0; let postEvents = 0;
@ -200,9 +205,13 @@ function waitForNetworkEvents(aMonitor, aGetRequests, aPostRequests = 0) {
]; ];
function initProgressForURL(url) { function initProgressForURL(url) {
if (progress[url]) return; if (progress[url]) {
return;
}
progress[url] = {}; progress[url] = {};
awaitedEventsToListeners.forEach(([e]) => progress[url][e] = 0); awaitedEventsToListeners.forEach(function ([e]) {
progress[url][e] = 0;
});
} }
function updateProgressForURL(url, event) { function updateProgressForURL(url, event) {
@ -222,8 +231,8 @@ function waitForNetworkEvents(aMonitor, aGetRequests, aPostRequests = 0) {
function maybeResolve(event, actor) { function maybeResolve(event, actor) {
info("> Network events progress: " + info("> Network events progress: " +
genericEvents + "/" + ((aGetRequests + aPostRequests) * 13) + ", " + genericEvents + "/" + ((getRequests + postRequests) * 13) + ", " +
postEvents + "/" + (aPostRequests * 2) + ", " + postEvents + "/" + (postRequests * 2) + ", " +
"got " + event + " for " + actor); "got " + event + " for " + actor);
let networkInfo = let networkInfo =
@ -237,9 +246,8 @@ function waitForNetworkEvents(aMonitor, aGetRequests, aPostRequests = 0) {
// There are 15 updates which need to be fired for a request to be // There are 15 updates which need to be fired for a request to be
// considered finished. The "requestPostData" packet isn't fired for // considered finished. The "requestPostData" packet isn't fired for
// non-POST requests. // non-POST requests.
if (genericEvents >= (aGetRequests + aPostRequests) * 13 && if (genericEvents >= (getRequests + postRequests) * 13 &&
postEvents >= aPostRequests * 2) { postEvents >= postRequests * 2) {
awaitedEventsToListeners.forEach(([e, l]) => panel.off(EVENTS[e], l)); awaitedEventsToListeners.forEach(([e, l]) => panel.off(EVENTS[e], l));
executeSoon(deferred.resolve); executeSoon(deferred.resolve);
} }
@ -249,39 +257,40 @@ function waitForNetworkEvents(aMonitor, aGetRequests, aPostRequests = 0) {
return deferred.promise; return deferred.promise;
} }
function verifyRequestItemTarget(document, requestList, requestItem, aMethod, function verifyRequestItemTarget(document, requestList, requestItem, method,
aUrl, aData = {}) { url, data = {}) {
info("> Verifying: " + aMethod + " " + aUrl + " " + aData.toSource()); info("> Verifying: " + method + " " + url + " " + data.toSource());
let visibleIndex = requestList.indexOf(requestItem); let visibleIndex = requestList.indexOf(requestItem);
info("Visible index of item: " + visibleIndex); info("Visible index of item: " + visibleIndex);
let { fuzzyUrl, status, statusText, cause, type, fullMimeType, let { fuzzyUrl, status, statusText, cause, type, fullMimeType,
transferred, size, time, displayedStatus } = aData; transferred, size, time, displayedStatus } = data;
let target = document.querySelectorAll(".request-list-item")[visibleIndex]; let target = document.querySelectorAll(".request-list-item")[visibleIndex];
let unicodeUrl = decodeUnicodeUrl(aUrl); let unicodeUrl = decodeUnicodeUrl(url);
let name = getUrlBaseName(aUrl); let name = getUrlBaseName(url);
let query = getUrlQuery(aUrl); let query = getUrlQuery(url);
let hostPort = getUrlHost(aUrl); let hostPort = getUrlHost(url);
let remoteAddress = requestItem.remoteAddress; let remoteAddress = requestItem.remoteAddress;
if (fuzzyUrl) { if (fuzzyUrl) {
ok(requestItem.method.startsWith(aMethod), "The attached method is correct."); ok(requestItem.method.startsWith(method), "The attached method is correct.");
ok(requestItem.url.startsWith(aUrl), "The attached url is correct."); ok(requestItem.url.startsWith(url), "The attached url is correct.");
} else { } else {
is(requestItem.method, aMethod, "The attached method is correct."); is(requestItem.method, method, "The attached method is correct.");
is(requestItem.url, aUrl, "The attached url is correct."); is(requestItem.url, url, "The attached url is correct.");
} }
is(target.querySelector(".requests-list-method").textContent, is(target.querySelector(".requests-list-method").textContent,
aMethod, "The displayed method is correct."); method, "The displayed method is correct.");
if (fuzzyUrl) { if (fuzzyUrl) {
ok(target.querySelector(".requests-list-file").textContent.startsWith( ok(target.querySelector(".requests-list-file").textContent.startsWith(
name + (query ? "?" + query : "")), "The displayed file is correct."); name + (query ? "?" + query : "")), "The displayed file is correct.");
ok(target.querySelector(".requests-list-file").getAttribute("title").startsWith(unicodeUrl), ok(target.querySelector(".requests-list-file").getAttribute("title")
.startsWith(unicodeUrl),
"The tooltip file is correct."); "The tooltip file is correct.");
} else { } else {
is(target.querySelector(".requests-list-file").textContent, is(target.querySelector(".requests-list-file").textContent,
@ -298,13 +307,15 @@ function verifyRequestItemTarget(document, requestList, requestItem, aMethod,
domainTooltip, "The tooltip domain is correct."); domainTooltip, "The tooltip domain is correct.");
if (status !== undefined) { if (status !== undefined) {
let value = target.querySelector(".requests-list-status-icon").getAttribute("data-code"); let value = target.querySelector(".requests-list-status-icon")
.getAttribute("data-code");
let codeValue = target.querySelector(".requests-list-status-code").textContent; let codeValue = target.querySelector(".requests-list-status-code").textContent;
let tooltip = target.querySelector(".requests-list-status").getAttribute("title"); let tooltip = target.querySelector(".requests-list-status").getAttribute("title");
info("Displayed status: " + value); info("Displayed status: " + value);
info("Displayed code: " + codeValue); info("Displayed code: " + codeValue);
info("Tooltip status: " + tooltip); info("Tooltip status: " + tooltip);
is(value, displayedStatus ? displayedStatus : status, "The displayed status is correct."); is(value, displayedStatus ? displayedStatus : status,
"The displayed status is correct.");
is(codeValue, status, "The displayed status code is correct."); is(codeValue, status, "The displayed status code is correct.");
is(tooltip, status + " " + statusText, "The tooltip status is correct."); is(tooltip, status + " " + statusText, "The tooltip status is correct.");
} }
@ -314,7 +325,7 @@ function verifyRequestItemTarget(document, requestList, requestItem, aMethod,
info("Displayed cause: " + value); info("Displayed cause: " + value);
info("Tooltip cause: " + tooltip); info("Tooltip cause: " + tooltip);
is(value, cause.type, "The displayed cause is correct."); is(value, cause.type, "The displayed cause is correct.");
is(tooltip, cause.loadingDocumentUri, "The tooltip cause is correct.") is(tooltip, cause.loadingDocumentUri, "The tooltip cause is correct.");
} }
if (type !== undefined) { if (type !== undefined) {
let value = target.querySelector(".requests-list-type").textContent; let value = target.querySelector(".requests-list-type").textContent;
@ -326,7 +337,8 @@ function verifyRequestItemTarget(document, requestList, requestItem, aMethod,
} }
if (transferred !== undefined) { if (transferred !== undefined) {
let value = target.querySelector(".requests-list-transferred").textContent; let value = target.querySelector(".requests-list-transferred").textContent;
let tooltip = target.querySelector(".requests-list-transferred").getAttribute("title"); let tooltip = target.querySelector(".requests-list-transferred")
.getAttribute("title");
info("Displayed transferred size: " + value); info("Displayed transferred size: " + value);
info("Tooltip transferred size: " + tooltip); info("Tooltip transferred size: " + tooltip);
is(value, transferred, "The displayed transferred size is correct."); is(value, transferred, "The displayed transferred size is correct.");
@ -342,7 +354,8 @@ function verifyRequestItemTarget(document, requestList, requestItem, aMethod,
} }
if (time !== undefined) { if (time !== undefined) {
let value = target.querySelector(".requests-list-timings-total").textContent; let value = target.querySelector(".requests-list-timings-total").textContent;
let tooltip = target.querySelector(".requests-list-timings-total").getAttribute("title"); let tooltip = target.querySelector(".requests-list-timings-total")
.getAttribute("title");
info("Displayed time: " + value); info("Displayed time: " + value);
info("Tooltip time: " + tooltip); info("Tooltip time: " + tooltip);
ok(~~(value.match(/[0-9]+/)) >= 0, "The displayed time is correct."); ok(~~(value.match(/[0-9]+/)) >= 0, "The displayed time is correct.");
@ -403,12 +416,12 @@ function testFilterButtons(monitor, filterType) {
* 'checked' attribute. For example, if the third item of the array * 'checked' attribute. For example, if the third item of the array
* evaluates to true, the third button should be checked. * evaluates to true, the third button should be checked.
*/ */
function testFilterButtonsCustom(aMonitor, aIsChecked) { function testFilterButtonsCustom(monitor, isChecked) {
let doc = aMonitor.panelWin.document; let doc = monitor.panelWin.document;
let buttons = doc.querySelectorAll("#requests-list-filter-buttons button"); let buttons = doc.querySelectorAll("#requests-list-filter-buttons button");
for (let i = 0; i < aIsChecked.length; i++) { for (let i = 0; i < isChecked.length; i++) {
let button = buttons[i]; let button = buttons[i];
if (aIsChecked[i]) { if (isChecked[i]) {
is(button.classList.contains("checked"), true, is(button.classList.contains("checked"), true,
"The " + button.id + " button should have a 'checked' class."); "The " + button.id + " button should have a 'checked' class.");
is(button.getAttribute("aria-pressed"), "true", is(button.getAttribute("aria-pressed"), "true",
@ -473,9 +486,8 @@ function executeInContent(name, data = {}, objects = {}, expectResponse = true)
mm.sendAsyncMessage(name, data, objects); mm.sendAsyncMessage(name, data, objects);
if (expectResponse) { if (expectResponse) {
return waitForContentMessage(name); return waitForContentMessage(name);
} else {
return promise.resolve();
} }
return promise.resolve();
} }
/** /**

View file

@ -15,30 +15,35 @@
<p>API calls request test</p> <p>API calls request test</p>
<script type="text/javascript"> <script type="text/javascript">
function get(aAddress, aCallback) { /* exported performRequests */
var xhr = new XMLHttpRequest(); "use strict";
xhr.open("GET", aAddress, true);
xhr.onreadystatechange = function() { function get(address, callback) {
let xhr = new XMLHttpRequest();
xhr.open("GET", address, true);
xhr.onreadystatechange = function () {
if (this.readyState == this.DONE) { if (this.readyState == this.DONE) {
aCallback(); callback();
} }
}; };
xhr.send(); xhr.send();
} }
function performRequests() { function performRequests() {
get("/api/fileName.xml", function() { /* eslint-disable max-nested-callbacks */
get("/api/file%E2%98%A2.xml", function() { get("/api/fileName.xml", function () {
get("/api/ascii/get/", function() { get("/api/file%E2%98%A2.xml", function () {
get("/api/unicode/%E2%98%A2/", function() { get("/api/ascii/get/", function () {
get("/api/search/?q=search%E2%98%A2", function() { get("/api/unicode/%E2%98%A2/", function () {
get("/api/search/?q=search%E2%98%A2", function () {
// Done. // Done.
}); });
}); });
}); });
}); });
}); });
/* eslint-enable max-nested-callbacks */
} }
</script> </script>
</body> </body>

View file

@ -15,20 +15,23 @@
<p>Brotli test</p> <p>Brotli test</p>
<script type="text/javascript"> <script type="text/javascript">
function get(aAddress, aCallback) { /* exported performRequests */
var xhr = new XMLHttpRequest(); "use strict";
xhr.open("GET", aAddress, true);
xhr.onreadystatechange = function() { function get(address, callback) {
let xhr = new XMLHttpRequest();
xhr.open("GET", address, true);
xhr.onreadystatechange = function () {
if (this.readyState == this.DONE) { if (this.readyState == this.DONE) {
aCallback(); callback();
} }
}; };
xhr.send(null); xhr.send(null);
} }
function performRequests() { function performRequests() {
get("sjs_content-type-test-server.sjs?fmt=br", function() { get("sjs_content-type-test-server.sjs?fmt=br", function () {
// Done. // Done.
}); });
} }

View file

@ -16,8 +16,10 @@
<p>Request cause test</p> <p>Request cause test</p>
<img src="img_request" /> <img src="img_request" />
<script type="text/javascript"> <script type="text/javascript">
"use strict";
function performXhrRequest() { function performXhrRequest() {
var xhr = new XMLHttpRequest(); let xhr = new XMLHttpRequest();
xhr.open("GET", "xhr_request", true); xhr.open("GET", "xhr_request", true);
xhr.send(); xhr.send();
} }

View file

@ -15,25 +15,29 @@
<p>Content type test</p> <p>Content type test</p>
<script type="text/javascript"> <script type="text/javascript">
function get(aAddress, aCallback) { /* exported performRequests */
var xhr = new XMLHttpRequest(); "use strict";
xhr.open("GET", aAddress, true);
xhr.onreadystatechange = function() { function get(address, callback) {
let xhr = new XMLHttpRequest();
xhr.open("GET", address, true);
xhr.onreadystatechange = function () {
if (this.readyState == this.DONE) { if (this.readyState == this.DONE) {
aCallback(); callback();
} }
}; };
xhr.send(null); xhr.send(null);
} }
function performRequests() { function performRequests() {
get("sjs_content-type-test-server.sjs?fmt=xml", function() { /* eslint-disable max-nested-callbacks */
get("sjs_content-type-test-server.sjs?fmt=css", function() { get("sjs_content-type-test-server.sjs?fmt=xml", function () {
get("sjs_content-type-test-server.sjs?fmt=js", function() { get("sjs_content-type-test-server.sjs?fmt=css", function () {
get("sjs_content-type-test-server.sjs?fmt=json", function() { get("sjs_content-type-test-server.sjs?fmt=js", function () {
get("sjs_content-type-test-server.sjs?fmt=bogus", function() { get("sjs_content-type-test-server.sjs?fmt=json", function () {
get("test-image.png", function() { get("sjs_content-type-test-server.sjs?fmt=bogus", function () {
get("test-image.png", function () {
// Done. // Done.
}); });
}); });
@ -41,6 +45,7 @@
}); });
}); });
}); });
/* eslint-enable max-nested-callbacks */
} }
</script> </script>
</body> </body>

View file

@ -15,27 +15,31 @@
<p>Content type test</p> <p>Content type test</p>
<script type="text/javascript"> <script type="text/javascript">
function get(aAddress, aCallback) { /* exported performRequests */
var xhr = new XMLHttpRequest(); "use strict";
xhr.open("GET", aAddress, true);
xhr.onreadystatechange = function() { function get(address, callback) {
let xhr = new XMLHttpRequest();
xhr.open("GET", address, true);
xhr.onreadystatechange = function () {
if (this.readyState == this.DONE) { if (this.readyState == this.DONE) {
aCallback(); callback();
} }
}; };
xhr.send(null); xhr.send(null);
} }
function performRequests() { function performRequests() {
get("sjs_content-type-test-server.sjs?fmt=xml", function() { /* eslint-disable max-nested-callbacks */
get("sjs_content-type-test-server.sjs?fmt=css", function() { get("sjs_content-type-test-server.sjs?fmt=xml", function () {
get("sjs_content-type-test-server.sjs?fmt=js", function() { get("sjs_content-type-test-server.sjs?fmt=css", function () {
get("sjs_content-type-test-server.sjs?fmt=json", function() { get("sjs_content-type-test-server.sjs?fmt=js", function () {
get("sjs_content-type-test-server.sjs?fmt=bogus", function() { get("sjs_content-type-test-server.sjs?fmt=json", function () {
get("test-image.png?v=" + Math.random(), function() { get("sjs_content-type-test-server.sjs?fmt=bogus", function () {
get("sjs_content-type-test-server.sjs?fmt=gzip", function() { get("test-image.png?v=" + Math.random(), function () {
get("sjs_content-type-test-server.sjs?fmt=br", function() { get("sjs_content-type-test-server.sjs?fmt=gzip", function () {
get("sjs_content-type-test-server.sjs?fmt=br", function () {
// Done. // Done.
}); });
}); });
@ -45,6 +49,7 @@
}); });
}); });
}); });
/* eslint-enable max-nested-callbacks */
} }
</script> </script>
</body> </body>

View file

@ -15,9 +15,12 @@
<p>Performing a GET request</p> <p>Performing a GET request</p>
<script type="text/javascript"> <script type="text/javascript">
function performRequest(aUrl) { /* exported performRequest */
var xhr = new XMLHttpRequest(); "use strict";
xhr.open("GET", aUrl, true);
function performRequest(url) {
let xhr = new XMLHttpRequest();
xhr.open("GET", url, true);
xhr.setRequestHeader("Accept-Language", window.navigator.language); xhr.setRequestHeader("Accept-Language", window.navigator.language);
xhr.setRequestHeader("X-Custom-Header-1", "Custom value"); xhr.setRequestHeader("X-Custom-Header-1", "Custom value");
xhr.setRequestHeader("X-Custom-Header-2", "8.8.8.8"); xhr.setRequestHeader("X-Custom-Header-2", "8.8.8.8");

View file

@ -15,8 +15,11 @@
<p>POST with CORS test page</p> <p>POST with CORS test page</p>
<script type="text/javascript"> <script type="text/javascript">
/* exported performRequests */
"use strict";
function post(url, contentType, postData) { function post(url, contentType, postData) {
var xhr = new XMLHttpRequest(); let xhr = new XMLHttpRequest();
xhr.open("POST", url, true); xhr.open("POST", url, true);
xhr.setRequestHeader("Content-Type", contentType); xhr.setRequestHeader("Content-Type", contentType);
xhr.send(postData); xhr.send(postData);

View file

@ -29,39 +29,41 @@
<iframe name="target"></iframe> <iframe name="target"></iframe>
<script type="text/javascript"> <script type="text/javascript">
/* exported performRequests */
"use strict";
function ajaxGet(aUrl, aCallback) { function ajaxGet(url, callback) {
var xhr = new XMLHttpRequest(); let xhr = new XMLHttpRequest();
xhr.open("GET", aUrl + "?param1=value1&param2=value2&param3=value3", true); xhr.open("GET", url + "?param1=value1&param2=value2&param3=value3", true);
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest"); xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
xhr.onload = function() { xhr.onload = function () {
aCallback(); callback();
}; };
xhr.send(); xhr.send();
} }
function ajaxPost(aUrl, aCallback) { function ajaxPost(url, callback) {
var xhr = new XMLHttpRequest(); let xhr = new XMLHttpRequest();
xhr.open("POST", aUrl, true); xhr.open("POST", url, true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest"); xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
xhr.onload = function() { xhr.onload = function () {
aCallback(); callback();
}; };
var params = "param1=value1&param2=value2&param3=value3"; const params = "param1=value1&param2=value2&param3=value3";
xhr.send(params); xhr.send(params);
} }
function ajaxMultipart(aUrl, aCallback) { function ajaxMultipart(url, callback) {
var xhr = new XMLHttpRequest(); let xhr = new XMLHttpRequest();
xhr.open("POST", aUrl, true); xhr.open("POST", url, true);
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest"); xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
xhr.onload = function() { xhr.onload = function () {
aCallback(); callback();
}; };
getCanvasElem().toBlob((blob) => { getCanvasElem().toBlob((blob) => {
var formData = new FormData(); let formData = new FormData();
formData.append("param1", "value1"); formData.append("param1", "value1");
formData.append("file", blob, "filename.png"); formData.append("file", blob, "filename.png");
xhr.send(formData); xhr.send(formData);
@ -69,7 +71,7 @@
} }
function submitForm() { function submitForm() {
var form = document.querySelector("#post-form"); let form = document.querySelector("#post-form");
form.submit(); form.submit();
} }
@ -78,17 +80,17 @@
} }
function initCanvas() { function initCanvas() {
var canvas = getCanvasElem(); let canvas = getCanvasElem();
var ctx = canvas.getContext("2d"); let ctx = canvas.getContext("2d");
ctx.fillRect(0,0,100,100); ctx.fillRect(0, 0, 100, 100);
ctx.clearRect(20,20,60,60); ctx.clearRect(20, 20, 60, 60);
ctx.strokeRect(25,25,50,50); ctx.strokeRect(25, 25, 50, 50);
} }
function performRequests(aUrl) { function performRequests(url) {
ajaxGet(aUrl, () => { ajaxGet(url, () => {
ajaxPost(aUrl, () => { ajaxPost(url, () => {
ajaxMultipart(aUrl, () => { ajaxMultipart(url, () => {
submitForm(); submitForm();
}); });
}); });

View file

@ -15,27 +15,30 @@
<p>Performing a custom number of GETs</p> <p>Performing a custom number of GETs</p>
<script type="text/javascript"> <script type="text/javascript">
function get(aAddress, aCallback) { /* exported performRequests */
var xhr = new XMLHttpRequest(); "use strict";
xhr.open("GET", aAddress, true);
xhr.onreadystatechange = function() { function get(address, callback) {
let xhr = new XMLHttpRequest();
xhr.open("GET", address, true);
xhr.onreadystatechange = function () {
if (this.readyState == this.DONE) { if (this.readyState == this.DONE) {
aCallback(); callback();
} }
}; };
xhr.send(null); xhr.send(null);
} }
// Use a count parameter to defeat caching. // Use a count parameter to defeat caching.
var count = 0; let count = 0;
function performRequests(aTotal, aUrl, aTimeout = 0) { function performRequests(total, url, timeout = 0) {
if (!aTotal) { if (!total) {
return; return;
} }
get(aUrl || "request_" + (count++), function() { get(url || "request_" + (count++), function () {
setTimeout(performRequests.bind(this, --aTotal, aUrl, aTimeout), aTimeout); setTimeout(performRequests.bind(this, --total, url, timeout), timeout);
}); });
} }
</script> </script>

View file

@ -16,20 +16,23 @@
<p>Братан, ты вообще качаешься?</p> <p>Братан, ты вообще качаешься?</p>
<script type="text/javascript"> <script type="text/javascript">
function get(aAddress, aCallback) { /* exported performRequests */
var xhr = new XMLHttpRequest(); "use strict";
xhr.open("GET", aAddress, true);
xhr.onreadystatechange = function() { function get(address, callback) {
let xhr = new XMLHttpRequest();
xhr.open("GET", address, true);
xhr.onreadystatechange = function () {
if (this.readyState == this.DONE) { if (this.readyState == this.DONE) {
aCallback(); callback();
} }
}; };
xhr.send(null); xhr.send(null);
} }
function performRequests() { function performRequests() {
get("sjs_content-type-test-server.sjs?fmt=txt", function() { get("sjs_content-type-test-server.sjs?fmt=txt", function () {
// Done. // Done.
}); });
} }

View file

@ -15,44 +15,52 @@
<p>Filtering test</p> <p>Filtering test</p>
<script type="text/javascript"> <script type="text/javascript">
function get(aAddress, aCallback) { /* exported performRequests */
var xhr = new XMLHttpRequest(); "use strict";
// Use a random parameter to defeat caching.
xhr.open("GET", aAddress + "&" + Math.random(), true);
xhr.onreadystatechange = function() { function get(address, callback) {
let xhr = new XMLHttpRequest();
// Use a random parameter to defeat caching.
xhr.open("GET", address + "&" + Math.random(), true);
xhr.onreadystatechange = function () {
if (this.readyState == this.DONE) { if (this.readyState == this.DONE) {
aCallback(); callback();
} }
}; };
xhr.send(null); xhr.send(null);
} }
function performRequests(aOptions) { function performRequests(optionsText) {
var options = JSON.parse(aOptions); const options = JSON.parse(optionsText);
get("sjs_content-type-test-server.sjs?fmt=html&res=" + options.htmlContent, function() {
get("sjs_content-type-test-server.sjs?fmt=css", function() { /* eslint-disable max-nested-callbacks */
get("sjs_content-type-test-server.sjs?fmt=js", function() { get("sjs_content-type-test-server.sjs?fmt=html&res=" + options.htmlContent,
if (!options.getMedia) { function () {
return; get("sjs_content-type-test-server.sjs?fmt=css", function () {
} get("sjs_content-type-test-server.sjs?fmt=js", function () {
get("sjs_content-type-test-server.sjs?fmt=font", function() { if (!options.getMedia) {
get("sjs_content-type-test-server.sjs?fmt=image", function() { return;
get("sjs_content-type-test-server.sjs?fmt=audio", function() { }
get("sjs_content-type-test-server.sjs?fmt=video", function() { get("sjs_content-type-test-server.sjs?fmt=font", function () {
if (!options.getFlash) { get("sjs_content-type-test-server.sjs?fmt=image", function () {
return; get("sjs_content-type-test-server.sjs?fmt=audio", function () {
} get("sjs_content-type-test-server.sjs?fmt=video", function () {
get("sjs_content-type-test-server.sjs?fmt=flash", function() { if (!options.getFlash) {
// Done. return;
}
get("sjs_content-type-test-server.sjs?fmt=flash", function () {
// Done.
});
});
}); });
}); });
}); });
}); });
}); });
}); }
}); );
}); /* eslint-enable max-nested-callbacks */
} }
</script> </script>
</body> </body>

View file

@ -16,8 +16,10 @@
<p>Request frame test</p> <p>Request frame test</p>
<img src="img_request" /> <img src="img_request" />
<script type="text/javascript"> <script type="text/javascript">
"use strict";
function performXhrRequest() { function performXhrRequest() {
var xhr = new XMLHttpRequest(); let xhr = new XMLHttpRequest();
xhr.open("GET", "xhr_request", true); xhr.open("GET", "xhr_request", true);
xhr.send(); xhr.send();
} }

View file

@ -17,8 +17,10 @@
<img src="img_request" /> <img src="img_request" />
<iframe src="html_frame-subdocument.html"></iframe> <iframe src="html_frame-subdocument.html"></iframe>
<script type="text/javascript"> <script type="text/javascript">
"use strict";
function performXhrRequest() { function performXhrRequest() {
var xhr = new XMLHttpRequest(); let xhr = new XMLHttpRequest();
xhr.open("GET", "xhr_request", true); xhr.open("GET", "xhr_request", true);
xhr.send(); xhr.send();
} }

View file

@ -15,8 +15,11 @@
<p>tooltip test</p> <p>tooltip test</p>
<script type="text/javascript"> <script type="text/javascript">
/* exported performRequests */
"use strict";
function performRequests() { function performRequests() {
var xhr = new XMLHttpRequest(); let xhr = new XMLHttpRequest();
xhr.open("GET", "test-image.png?v=" + Math.random(), true); xhr.open("GET", "test-image.png?v=" + Math.random(), true);
xhr.send(null); xhr.send(null);
} }

View file

@ -15,23 +15,25 @@
<p>Infinite GETs</p> <p>Infinite GETs</p>
<script type="text/javascript"> <script type="text/javascript">
function get(aAddress, aCallback) { "use strict";
var xhr = new XMLHttpRequest();
xhr.open("GET", aAddress, true);
xhr.onreadystatechange = function() { function get(address, callback) {
let xhr = new XMLHttpRequest();
xhr.open("GET", address, true);
xhr.onreadystatechange = function () {
if (this.readyState == this.DONE) { if (this.readyState == this.DONE) {
aCallback(); callback();
} }
}; };
xhr.send(null); xhr.send(null);
} }
// Use a count parameter to defeat caching. // Use a count parameter to defeat caching.
var count = 0; let count = 0;
(function performRequests() { (function performRequests() {
get("request_" + (count++), function() { get("request_" + (count++), function () {
setTimeout(performRequests, 50); setTimeout(performRequests, 50);
}); });
})(); })();

View file

@ -15,20 +15,23 @@
<p>JSON b64 test</p> <p>JSON b64 test</p>
<script type="text/javascript"> <script type="text/javascript">
function get(aAddress, aCallback) { /* exported performRequests */
var xhr = new XMLHttpRequest(); "use strict";
xhr.open("GET", aAddress, true);
xhr.onreadystatechange = function() { function get(address, callback) {
let xhr = new XMLHttpRequest();
xhr.open("GET", address, true);
xhr.onreadystatechange = function () {
if (this.readyState == this.DONE) { if (this.readyState == this.DONE) {
aCallback(); callback();
} }
}; };
xhr.send(null); xhr.send(null);
} }
function performRequests() { function performRequests() {
get("sjs_content-type-test-server.sjs?fmt=json-b64", function() { get("sjs_content-type-test-server.sjs?fmt=json-b64", function () {
// Done. // Done.
}); });
} }

View file

@ -16,13 +16,16 @@
<p>Pass the JSON name (as supported by sjs_json-test-server.sjs) as a query parameter</p> <p>Pass the JSON name (as supported by sjs_json-test-server.sjs) as a query parameter</p>
<script type="text/javascript"> <script type="text/javascript">
function get(aAddress, aCallback) { /* exported performRequests */
var xhr = new XMLHttpRequest(); "use strict";
xhr.open("GET", aAddress, true);
xhr.onreadystatechange = function() { function get(address, callback) {
let xhr = new XMLHttpRequest();
xhr.open("GET", address, true);
xhr.onreadystatechange = function () {
if (this.readyState == this.DONE) { if (this.readyState == this.DONE) {
aCallback(); callback();
} }
}; };
xhr.send(null); xhr.send(null);
@ -30,7 +33,7 @@
function performRequests() { function performRequests() {
// Forward the query parameter for this page to sjs_json-test-server // Forward the query parameter for this page to sjs_json-test-server
get("sjs_json-test-server.sjs" + window.location.search, function() { get("sjs_json-test-server.sjs" + window.location.search, function () {
// Done. // Done.
}); });
} }

View file

@ -15,20 +15,23 @@
<p>JSONP test</p> <p>JSONP test</p>
<script type="text/javascript"> <script type="text/javascript">
function get(aAddress, aCallback) { /* exported performRequests */
var xhr = new XMLHttpRequest(); "use strict";
xhr.open("GET", aAddress, true);
xhr.onreadystatechange = function() { function get(address, callback) {
let xhr = new XMLHttpRequest();
xhr.open("GET", address, true);
xhr.onreadystatechange = function () {
if (this.readyState == this.DONE) { if (this.readyState == this.DONE) {
aCallback(); callback();
} }
}; };
xhr.send(null); xhr.send(null);
} }
function performRequests() { function performRequests() {
get("sjs_content-type-test-server.sjs?fmt=json-custom-mime", function() { get("sjs_content-type-test-server.sjs?fmt=json-custom-mime", function () {
// Done. // Done.
}); });
} }

View file

@ -15,20 +15,23 @@
<p>JSON long string test</p> <p>JSON long string test</p>
<script type="text/javascript"> <script type="text/javascript">
function get(aAddress, aCallback) { /* exported performRequests */
var xhr = new XMLHttpRequest(); "use strict";
xhr.open("GET", aAddress, true);
xhr.onreadystatechange = function() { function get(address, callback) {
let xhr = new XMLHttpRequest();
xhr.open("GET", address, true);
xhr.onreadystatechange = function () {
if (this.readyState == this.DONE) { if (this.readyState == this.DONE) {
aCallback(); callback();
} }
}; };
xhr.send(null); xhr.send(null);
} }
function performRequests() { function performRequests() {
get("sjs_content-type-test-server.sjs?fmt=json-long", function() { get("sjs_content-type-test-server.sjs?fmt=json-long", function () {
// Done. // Done.
}); });
} }

View file

@ -15,20 +15,23 @@
<p>JSON malformed test</p> <p>JSON malformed test</p>
<script type="text/javascript"> <script type="text/javascript">
function get(aAddress, aCallback) { /* exported performRequests */
var xhr = new XMLHttpRequest(); "use strict";
xhr.open("GET", aAddress, true);
xhr.onreadystatechange = function() { function get(address, callback) {
let xhr = new XMLHttpRequest();
xhr.open("GET", address, true);
xhr.onreadystatechange = function () {
if (this.readyState == this.DONE) { if (this.readyState == this.DONE) {
aCallback(); callback();
} }
}; };
xhr.send(null); xhr.send(null);
} }
function performRequests() { function performRequests() {
get("sjs_content-type-test-server.sjs?fmt=json-malformed", function() { get("sjs_content-type-test-server.sjs?fmt=json-malformed", function () {
// Done. // Done.
}); });
} }

View file

@ -15,20 +15,23 @@
<p>JSON text test</p> <p>JSON text test</p>
<script type="text/javascript"> <script type="text/javascript">
function get(aAddress, aCallback) { /* exported performRequests */
var xhr = new XMLHttpRequest(); "use strict";
xhr.open("GET", aAddress, true);
xhr.onreadystatechange = function() { function get(address, callback) {
let xhr = new XMLHttpRequest();
xhr.open("GET", address, true);
xhr.onreadystatechange = function () {
if (this.readyState == this.DONE) { if (this.readyState == this.DONE) {
aCallback(); callback();
} }
}; };
xhr.send(null); xhr.send(null);
} }
function performRequests() { function performRequests() {
get("sjs_content-type-test-server.sjs?fmt=json-text-mime", function() { get("sjs_content-type-test-server.sjs?fmt=json-text-mime", function () {
// Done. // Done.
}); });
} }

View file

@ -15,21 +15,24 @@
<p>JSONP test</p> <p>JSONP test</p>
<script type="text/javascript"> <script type="text/javascript">
function get(aAddress, aCallback) { /* exported performRequests */
var xhr = new XMLHttpRequest(); "use strict";
xhr.open("GET", aAddress, true);
xhr.onreadystatechange = function() { function get(address, callback) {
let xhr = new XMLHttpRequest();
xhr.open("GET", address, true);
xhr.onreadystatechange = function () {
if (this.readyState == this.DONE) { if (this.readyState == this.DONE) {
aCallback(); callback();
} }
}; };
xhr.send(null); xhr.send(null);
} }
function performRequests() { function performRequests() {
get("sjs_content-type-test-server.sjs?fmt=jsonp&jsonp=$_0123Fun", function() { get("sjs_content-type-test-server.sjs?fmt=jsonp&jsonp=$_0123Fun", function () {
get("sjs_content-type-test-server.sjs?fmt=jsonp2&jsonp=$_4567Sad", function() { get("sjs_content-type-test-server.sjs?fmt=jsonp2&jsonp=$_4567Sad", function () {
// Done. // Done.
}); });
}); });

View file

@ -15,41 +15,45 @@
<p>Request params type test</p> <p>Request params type test</p>
<script type="text/javascript"> <script type="text/javascript">
function get(aAddress, aQuery) { /* exported performRequests */
var xhr = new XMLHttpRequest(); "use strict";
xhr.open("GET", aAddress + aQuery, true);
function get(address, query) {
let xhr = new XMLHttpRequest();
xhr.open("GET", address + query, true);
xhr.send(); xhr.send();
} }
function post(aAddress, aQuery, aContentType, aPostBody) { function post(address, query, contentType, postBody) {
var xhr = new XMLHttpRequest(); let xhr = new XMLHttpRequest();
xhr.open("POST", aAddress + aQuery, true); xhr.open("POST", address + query, true);
xhr.setRequestHeader("content-type", aContentType); xhr.setRequestHeader("content-type", contentType);
xhr.send(aPostBody); xhr.send(postBody);
} }
function performRequests() { function performRequests() {
var urlencoded = "application/x-www-form-urlencoded"; const urlencoded = "application/x-www-form-urlencoded";
setTimeout(function() { /* eslint-disable max-nested-callbacks */
setTimeout(function () {
post("baz", "?a", urlencoded, '{ "foo": "bar" }'); post("baz", "?a", urlencoded, '{ "foo": "bar" }');
setTimeout(function() { setTimeout(function () {
post("baz", "?a=b", urlencoded, '{ "foo": "bar" }'); post("baz", "?a=b", urlencoded, '{ "foo": "bar" }');
setTimeout(function() { setTimeout(function () {
post("baz", "?a=b", urlencoded, '?foo=bar'); post("baz", "?a=b", urlencoded, "?foo=bar");
setTimeout(function() { setTimeout(function () {
post("baz", "?a", undefined, '{ "foo": "bar" }'); post("baz", "?a", undefined, '{ "foo": "bar" }');
setTimeout(function() { setTimeout(function () {
post("baz", "?a=b", undefined, '{ "foo": "bar" }'); post("baz", "?a=b", undefined, '{ "foo": "bar" }');
setTimeout(function() { setTimeout(function () {
post("baz", "?a=b", undefined, '?foo=bar'); post("baz", "?a=b", undefined, "?foo=bar");
setTimeout(function() { setTimeout(function () {
get("baz", ""); get("baz", "");
// Done. // Done.
@ -60,6 +64,7 @@
}, 10); }, 10);
}, 10); }, 10);
}, 10); }, 10);
/* eslint-enable max-nested-callbacks */
} }
</script> </script>
</body> </body>

View file

@ -27,46 +27,49 @@
</form> </form>
<script type="text/javascript"> <script type="text/javascript">
function post(aAddress, aMessage, aCallback) { /* exported performRequests */
var xhr = new XMLHttpRequest(); "use strict";
xhr.open("POST", aAddress, true);
function post(address, message, callback) {
let xhr = new XMLHttpRequest();
xhr.open("POST", address, true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
var data = ""; let data = "";
for (var i in aMessage) { for (let i in message) {
data += "&" + i + "=" + aMessage[i]; data += "&" + i + "=" + message[i];
} }
xhr.onreadystatechange = function() { xhr.onreadystatechange = function () {
if (this.readyState == this.DONE) { if (this.readyState == this.DONE) {
aCallback(); callback();
} }
}; };
xhr.send(data); xhr.send(data);
} }
function form(aAddress, aForm, aCallback) { function form(address, formName, callback) {
var formData = new FormData(document.forms.namedItem(aForm)); let formData = new FormData(document.forms.namedItem(formName));
formData.append("Custom field", "Extra data"); formData.append("Custom field", "Extra data");
var xhr = new XMLHttpRequest(); let xhr = new XMLHttpRequest();
xhr.open("POST", aAddress, true); xhr.open("POST", address, true);
xhr.onreadystatechange = function() { xhr.onreadystatechange = function () {
if (this.readyState == this.DONE) { if (this.readyState == this.DONE) {
aCallback(); callback();
} }
}; };
xhr.send(formData); xhr.send(formData);
} }
function performRequests() { function performRequests() {
var url = "sjs_simple-test-server.sjs"; const url = "sjs_simple-test-server.sjs";
var url1 = url + "?foo=bar&baz=42&type=urlencoded"; const url1 = url + "?foo=bar&baz=42&type=urlencoded";
var url2 = url + "?foo=bar&baz=42&type=multipart"; const url2 = url + "?foo=bar&baz=42&type=multipart";
post(url1, { foo: "bar", baz: 123 }, function() { post(url1, { foo: "bar", baz: 123 }, function () {
form(url2, "form-name", function() { form(url2, "form-name", function () {
// Done. // Done.
}); });
}); });

View file

@ -15,6 +15,9 @@
<p>POST raw test</p> <p>POST raw test</p>
<script type="text/javascript"> <script type="text/javascript">
/* exported performRequests */
"use strict";
function post(address, message, callback) { function post(address, message, callback) {
let xhr = new XMLHttpRequest(); let xhr = new XMLHttpRequest();
xhr.open("POST", address, true); xhr.open("POST", address, true);

View file

@ -15,22 +15,25 @@
<p>POST raw test</p> <p>POST raw test</p>
<script type="text/javascript"> <script type="text/javascript">
function post(aAddress, aMessage, aCallback) { /* exported performRequests */
var xhr = new XMLHttpRequest(); "use strict";
xhr.open("POST", aAddress, true);
function post(address, message, callback) {
let xhr = new XMLHttpRequest();
xhr.open("POST", address, true);
xhr.setRequestHeader("content-type", "application/x-www-form-urlencoded"); xhr.setRequestHeader("content-type", "application/x-www-form-urlencoded");
xhr.onreadystatechange = function() { xhr.onreadystatechange = function () {
if (this.readyState == this.DONE) { if (this.readyState == this.DONE) {
aCallback(); callback();
} }
}; };
xhr.send(aMessage); xhr.send(message);
} }
function performRequests() { function performRequests() {
var rawData = "foo=bar&baz=123"; const rawData = "foo=bar&baz=123";
post("sjs_simple-test-server.sjs", rawData, function() { post("sjs_simple-test-server.sjs", rawData, function () {
// Done. // Done.
}); });
} }

View file

@ -15,27 +15,30 @@
<p>POST raw with headers test</p> <p>POST raw with headers test</p>
<script type="text/javascript"> <script type="text/javascript">
function post(aAddress, aMessage, aCallback) { /* exported performRequests */
var xhr = new XMLHttpRequest(); "use strict";
xhr.open("POST", aAddress, true);
xhr.onreadystatechange = function() { function post(address, message, callback) {
let xhr = new XMLHttpRequest();
xhr.open("POST", address, true);
xhr.onreadystatechange = function () {
if (this.readyState == this.DONE) { if (this.readyState == this.DONE) {
aCallback(); callback();
} }
}; };
xhr.send(aMessage); xhr.send(message);
} }
function performRequests() { function performRequests() {
var rawData = [ let rawData = [
"content-type: application/x-www-form-urlencoded\r", "content-type: application/x-www-form-urlencoded\r",
"custom-header: hello world!\r", "custom-header: hello world!\r",
"\r", "\r",
"\r", "\r",
"foo=bar&baz=123" "foo=bar&baz=123"
]; ];
post("sjs_simple-test-server.sjs", rawData.join("\n"), function() { post("sjs_simple-test-server.sjs", rawData.join("\n"), function () {
// Done. // Done.
}); });
} }

View file

@ -15,6 +15,9 @@
<p>Send beacon test</p> <p>Send beacon test</p>
<script type="text/javascript"> <script type="text/javascript">
/* exported performRequest */
"use strict";
function performRequest() { function performRequest() {
navigator.sendBeacon("beacon_request"); navigator.sendBeacon("beacon_request");
} }

View file

@ -15,20 +15,22 @@
<p>Performing a custom number of GETs</p> <p>Performing a custom number of GETs</p>
<script type="text/javascript"> <script type="text/javascript">
function get(aAddress, aCallback) { "use strict";
var xhr = new XMLHttpRequest();
xhr.open("GET", aAddress, true);
xhr.onreadystatechange = function() { function get(address, callback) {
let xhr = new XMLHttpRequest();
xhr.open("GET", address, true);
xhr.onreadystatechange = function () {
if (this.readyState == this.DONE) { if (this.readyState == this.DONE) {
aCallback(); callback();
} }
}; };
xhr.send(null); xhr.send(null);
} }
(function performRequests() { (function performRequests() {
get("request_0", function() {}); get("request_0", function () {});
})(); })();
</script> </script>
</body> </body>

View file

@ -15,9 +15,11 @@
<p>Statistics test</p> <p>Statistics test</p>
<script type="text/javascript"> <script type="text/javascript">
function get(aAddress) { "use strict";
var xhr = new XMLHttpRequest();
xhr.open("GET", aAddress, true); function get(address) {
let xhr = new XMLHttpRequest();
xhr.open("GET", address, true);
xhr.send(null); xhr.send(null);
} }

View file

@ -15,35 +15,40 @@
<p>Status codes test</p> <p>Status codes test</p>
<script type="text/javascript"> <script type="text/javascript">
function get(aAddress, aCallback) { /* exported performRequests, performCachedRequests */
var xhr = new XMLHttpRequest(); "use strict";
xhr.open("GET", aAddress, true);
xhr.onreadystatechange = function() { function get(address, callback) {
let xhr = new XMLHttpRequest();
xhr.open("GET", address, true);
xhr.onreadystatechange = function () {
if (this.readyState == this.DONE) { if (this.readyState == this.DONE) {
aCallback(); callback();
} }
}; };
xhr.send(null); xhr.send(null);
} }
function performRequests() { function performRequests() {
get("sjs_status-codes-test-server.sjs?sts=100", function() { /* eslint-disable max-nested-callbacks */
get("sjs_status-codes-test-server.sjs?sts=200", function() { get("sjs_status-codes-test-server.sjs?sts=100", function () {
get("sjs_status-codes-test-server.sjs?sts=300", function() { get("sjs_status-codes-test-server.sjs?sts=200", function () {
get("sjs_status-codes-test-server.sjs?sts=400", function() { get("sjs_status-codes-test-server.sjs?sts=300", function () {
get("sjs_status-codes-test-server.sjs?sts=500", function() { get("sjs_status-codes-test-server.sjs?sts=400", function () {
get("sjs_status-codes-test-server.sjs?sts=500", function () {
// Done. // Done.
}); });
}); });
}); });
}); });
}); });
/* eslint-enable max-nested-callbacks */
} }
function performCachedRequests() { function performCachedRequests() {
get("sjs_status-codes-test-server.sjs?sts=ok&cached", function() { get("sjs_status-codes-test-server.sjs?sts=ok&cached", function () {
get("sjs_status-codes-test-server.sjs?sts=redirect&cached", function() { get("sjs_status-codes-test-server.sjs?sts=redirect&cached", function () {
// Done. // Done.
}); });
}); });

View file

@ -31,4 +31,6 @@ requireHacker.global_hook("default", path => {
case "devtools/client/shared/redux/create-store": case "devtools/client/shared/redux/create-store":
return `module.exports = require("devtools/client/netmonitor/test/fixtures/create-store")`; return `module.exports = require("devtools/client/netmonitor/test/fixtures/create-store")`;
} }
return null;
}); });

View file

@ -16,6 +16,9 @@
<p>Status codes test</p> <p>Status codes test</p>
<script type="text/javascript"> <script type="text/javascript">
/* exported registerServiceWorker, unregisterServiceWorker, performRequests */
"use strict";
let swRegistration; let swRegistration;
function registerServiceWorker() { function registerServiceWorker() {
@ -31,7 +34,7 @@
if (sw.controller) { if (sw.controller) {
resolve(); resolve();
} else { } else {
sw.addEventListener('controllerchange', function () { sw.addEventListener("controllerchange", function () {
resolve(); resolve();
}, {once: true}); }, {once: true});
} }