204 lines
5.4 KiB
JavaScript
204 lines
5.4 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
// Test that the network actor uses the LongStringActor
|
|
|
|
const {
|
|
DevToolsServer,
|
|
} = require("resource://devtools/server/devtools-server.js");
|
|
const LONG_STRING_LENGTH = 400;
|
|
const LONG_STRING_INITIAL_LENGTH = 400;
|
|
let ORIGINAL_LONG_STRING_LENGTH, ORIGINAL_LONG_STRING_INITIAL_LENGTH;
|
|
|
|
add_task(async function () {
|
|
const tab = await addTab(URL_ROOT + "network_requests_iframe.html");
|
|
|
|
const commands = await CommandsFactory.forTab(tab);
|
|
await commands.targetCommand.startListening();
|
|
|
|
// Override the default long string settings to lower values.
|
|
// This is done from the parent process's DevToolsServer as the LongString
|
|
// actor is being created from the parent process as network requests are
|
|
// watched from the parent process.
|
|
ORIGINAL_LONG_STRING_LENGTH = DevToolsServer.LONG_STRING_LENGTH;
|
|
ORIGINAL_LONG_STRING_INITIAL_LENGTH =
|
|
DevToolsServer.LONG_STRING_INITIAL_LENGTH;
|
|
|
|
DevToolsServer.LONG_STRING_LENGTH = LONG_STRING_LENGTH;
|
|
DevToolsServer.LONG_STRING_INITIAL_LENGTH = LONG_STRING_INITIAL_LENGTH;
|
|
|
|
info("test network POST request");
|
|
const networkResource = await new Promise(resolve => {
|
|
commands.resourceCommand
|
|
.watchResources([commands.resourceCommand.TYPES.NETWORK_EVENT], {
|
|
onAvailable: () => {},
|
|
onUpdated: resourceUpdate => {
|
|
resolve(resourceUpdate[0].resource);
|
|
},
|
|
})
|
|
.then(() => {
|
|
// Spawn the network request after we started watching
|
|
SpecialPowers.spawn(gBrowser.selectedBrowser, [], async function () {
|
|
content.wrappedJSObject.testXhrPost();
|
|
});
|
|
});
|
|
});
|
|
|
|
const netActor = networkResource.actor;
|
|
ok(netActor, "We have a netActor:" + netActor);
|
|
|
|
const { client } = commands;
|
|
const requestHeaders = await client.request({
|
|
to: netActor,
|
|
type: "getRequestHeaders",
|
|
});
|
|
assertRequestHeaders(requestHeaders);
|
|
const requestCookies = await client.request({
|
|
to: netActor,
|
|
type: "getRequestCookies",
|
|
});
|
|
assertRequestCookies(requestCookies);
|
|
const requestPostData = await client.request({
|
|
to: netActor,
|
|
type: "getRequestPostData",
|
|
});
|
|
assertRequestPostData(requestPostData);
|
|
const responseHeaders = await client.request({
|
|
to: netActor,
|
|
type: "getResponseHeaders",
|
|
});
|
|
assertResponseHeaders(responseHeaders);
|
|
const responseCookies = await client.request({
|
|
to: netActor,
|
|
type: "getResponseCookies",
|
|
});
|
|
assertResponseCookies(responseCookies);
|
|
const responseContent = await client.request({
|
|
to: netActor,
|
|
type: "getResponseContent",
|
|
});
|
|
assertResponseContent(responseContent);
|
|
const eventTimings = await client.request({
|
|
to: netActor,
|
|
type: "getEventTimings",
|
|
});
|
|
assertEventTimings(eventTimings);
|
|
|
|
await commands.destroy();
|
|
|
|
DevToolsServer.LONG_STRING_LENGTH = ORIGINAL_LONG_STRING_LENGTH;
|
|
DevToolsServer.LONG_STRING_INITIAL_LENGTH =
|
|
ORIGINAL_LONG_STRING_INITIAL_LENGTH;
|
|
});
|
|
|
|
function assertRequestHeaders(response) {
|
|
info("checking request headers");
|
|
|
|
ok(!!response.headers.length, "request headers > 0");
|
|
Assert.greater(response.headersSize, 0, "request headersSize > 0");
|
|
|
|
checkHeadersOrCookies(response.headers, {
|
|
Referer: /network_requests_iframe\.html/,
|
|
Cookie: /bug768096/,
|
|
});
|
|
}
|
|
|
|
function assertRequestCookies(response) {
|
|
info("checking request cookies");
|
|
|
|
is(response.cookies.length, 3, "request cookies length");
|
|
|
|
checkHeadersOrCookies(response.cookies, {
|
|
foobar: "fooval",
|
|
omgfoo: "bug768096",
|
|
badcookie: "bug826798=st3fan",
|
|
});
|
|
}
|
|
|
|
function assertRequestPostData(response) {
|
|
info("checking request POST data");
|
|
|
|
checkObject(response, {
|
|
postData: {
|
|
text: {
|
|
type: "longString",
|
|
initial: /^Hello world! foobaz barr.+foobaz barrfo$/,
|
|
length: 563,
|
|
actor: /[a-z]/,
|
|
},
|
|
},
|
|
postDataDiscarded: false,
|
|
});
|
|
|
|
is(
|
|
response.postData.text.initial.length,
|
|
LONG_STRING_INITIAL_LENGTH,
|
|
"postData text initial length"
|
|
);
|
|
}
|
|
|
|
function assertResponseHeaders(response) {
|
|
info("checking response headers");
|
|
|
|
ok(!!response.headers.length, "response headers > 0");
|
|
Assert.greater(response.headersSize, 0, "response headersSize > 0");
|
|
|
|
checkHeadersOrCookies(response.headers, {
|
|
"content-type": /^application\/(json|octet-stream)$/,
|
|
"content-length": /^\d+$/,
|
|
"x-very-short": "hello world",
|
|
"x-very-long": {
|
|
type: "longString",
|
|
length: 521,
|
|
initial: /^Lorem ipsum.+\. Donec vitae d$/,
|
|
actor: /[a-z]/,
|
|
},
|
|
});
|
|
}
|
|
|
|
function assertResponseCookies(response) {
|
|
info("checking response cookies");
|
|
|
|
is(response.cookies.length, 0, "response cookies length");
|
|
}
|
|
|
|
function assertResponseContent(response) {
|
|
info("checking response content");
|
|
|
|
checkObject(response, {
|
|
content: {
|
|
text: {
|
|
type: "longString",
|
|
initial: /^\{ id: "test JSON data"(.|\r|\n)+ barfoo ba$/g,
|
|
length: 1070,
|
|
actor: /[a-z]/,
|
|
},
|
|
},
|
|
contentDiscarded: false,
|
|
});
|
|
|
|
is(
|
|
response.content.text.initial.length,
|
|
LONG_STRING_INITIAL_LENGTH,
|
|
"content initial length"
|
|
);
|
|
}
|
|
|
|
function assertEventTimings(response) {
|
|
info("checking event timings");
|
|
|
|
checkObject(response, {
|
|
timings: {
|
|
blocked: /^-1|\d+$/,
|
|
dns: /^-1|\d+$/,
|
|
connect: /^-1|\d+$/,
|
|
send: /^-1|\d+$/,
|
|
wait: /^-1|\d+$/,
|
|
receive: /^-1|\d+$/,
|
|
},
|
|
totalTime: /^\d+$/,
|
|
});
|
|
}
|