Backed out changeset 89ab8685729d (bug 768096)

This commit is contained in:
Mihai Sucan 2012-09-28 13:19:39 +01:00
parent 2809386f63
commit 4460464e79
13 changed files with 1 additions and 1523 deletions

View File

@ -9,7 +9,7 @@ VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
TEST_DIRS += test
#TEST_DIRS += tests
include $(topsrcdir)/config/rules.mk

View File

@ -1,28 +0,0 @@
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
DEPTH = @DEPTH@
topsrcdir = @top_srcdir@
srcdir = @srcdir@
VPATH = @srcdir@
relativesrcdir = @relativesrcdir@
include $(DEPTH)/config/autoconf.mk
# Mochitest tests
MOCHITEST_FILES = \
test_basics.html \
test_cached_messages.html \
test_page_errors.html \
test_consoleapi.html \
test_jsterm.html \
test_object_actor.html \
test_network_get.html \
test_network_post.html \
network_requests_iframe.html \
data.json \
common.js \
$(NULL)
include $(topsrcdir)/config/rules.mk

View File

@ -1,128 +0,0 @@
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
Cu.import("resource://gre/modules/Services.jsm");
Cu.import("resource://gre/modules/devtools/dbg-server.jsm");
Cu.import("resource://gre/modules/devtools/dbg-client.jsm");
Cu.import("resource://gre/modules/devtools/WebConsoleUtils.jsm");
function initCommon()
{
// Always log packets when running tests.
Services.prefs.setBoolPref("devtools.debugger.log", true);
}
function initDebuggerServer()
{
if (!DebuggerServer.initialized) {
DebuggerServer.init();
DebuggerServer.addBrowserActors();
}
}
function connectToDebugger(aCallback)
{
initCommon();
initDebuggerServer();
let transport = DebuggerServer.connectPipe();
let client = new DebuggerClient(transport);
let dbgState = { dbgClient: client };
client.connect(aCallback.bind(null, dbgState));
}
function attachConsole(aListeners, aCallback)
{
function _onAttachConsole(aState, aResponse, aWebConsoleClient)
{
if (aResponse.error) {
Cu.reportError("attachConsole failed: " + aResponse.error + " " +
aResponse.message);
}
aState.client = aWebConsoleClient;
aCallback(aState, aResponse);
}
connectToDebugger(function _onConnect(aState) {
aState.dbgClient.listTabs(function _onListTabs(aResponse) {
if (aResponse.error) {
Cu.reportError("listTabs failed: " + aResponse.error + " " +
aResponse.message);
aCallback(aState, aResponse);
return;
}
let tab = aResponse.tabs[aResponse.selected];
aState.actor = tab.consoleActor;
aState.dbgClient.attachConsole(tab.consoleActor, aListeners,
_onAttachConsole.bind(null, aState));
});
});
}
function closeDebugger(aState, aCallback)
{
aState.dbgClient.close(aCallback);
aState.dbgClient = null;
aState.client = null;
}
function checkConsoleAPICall(aCall, aExpected)
{
if (aExpected.level != "trace" && aExpected.arguments) {
is(aCall.arguments.length, aExpected.arguments.length,
"number of arguments");
}
checkObject(aCall, aExpected);
}
function checkObject(aObject, aExpected)
{
for (let name of Object.keys(aExpected))
{
let expected = aExpected[name];
let value = aObject[name];
if (value === undefined) {
ok(false, "'" + name + "' is undefined");
}
else if (typeof expected == "string" ||
typeof expected == "number" ||
typeof expected == "boolean") {
is(value, expected, "property '" + name + "'");
}
else if (expected instanceof RegExp) {
ok(expected.test(value), name + ": " + expected);
}
else if (Array.isArray(expected)) {
info("checking array for property '" + name + "'");
checkObject(value, expected);
}
else if (typeof expected == "object") {
info("checking object for property '" + name + "'");
checkObject(value, expected);
}
}
}
function checkHeadersOrCookies(aArray, aExpected)
{
for (let elem of aArray) {
if (!(elem.name in aExpected)) {
continue;
}
let expected = aExpected[elem.name];
if (expected instanceof RegExp) {
ok(expected.test(elem.value), elem.name + ": " + expected);
}
else {
is(elem.value, expected, elem.name);
}
}
}

View File

@ -1 +0,0 @@
{ id: "test JSON data", myArray: [ "foo", "bar", "baz", "biff" ] }

View File

@ -1,43 +0,0 @@
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Console HTTP test page</title>
<!-- Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ -->
<script type="text/javascript"><!--
function makeXhr(aMethod, aUrl, aRequestBody, aCallback) {
var xmlhttp = new XMLHttpRequest();
xmlhttp.open(aMethod, aUrl, true);
if (aCallback) {
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4) {
aCallback();
}
};
}
xmlhttp.send(aRequestBody);
}
function testXhrGet(aCallback) {
makeXhr('get', 'data.json', null, aCallback);
}
function testXhrPost(aCallback) {
makeXhr('post', 'data.json', "Hello world!", aCallback);
}
document.cookie = "foobar=fooval";
document.cookie = "omgfoo=bug768096";
// --></script>
</head>
<body>
<h1>Web Console HTTP Logging Testpage</h1>
<h2>This page is used to test the HTTP logging.</h2>
<form action="?" method="post">
<input name="name" type="text" value="foo bar"><br>
<input name="age" type="text" value="144"><br>
</form>
</body>
</html>

View File

@ -1,69 +0,0 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="utf8">
<title>Basic Web Console Actor tests</title>
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<script type="text/javascript;version=1.8" src="common.js"></script>
<!-- Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ -->
</head>
<body>
<p>Basic Web Console Actor tests</p>
<script type="text/javascript;version=1.8">
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
SimpleTest.waitForExplicitFinish();
function startTest()
{
removeEventListener("load", startTest);
attachConsole(["PageError"], onStartPageError);
}
function onStartPageError(aState, aResponse)
{
is(aResponse.startedListeners.length, 1, "startedListeners.length");
is(aResponse.startedListeners[0], "PageError", "startedListeners: PageError");
ok(aResponse.nativeConsoleAPI, "nativeConsoleAPI");
closeDebugger(aState, function() {
top.console_ = top.console;
top.console = { lolz: "foo" };
attachConsole(["PageError", "ConsoleAPI", "foo"],
onStartPageErrorAndConsoleAPI);
});
}
function onStartPageErrorAndConsoleAPI(aState, aResponse)
{
let startedListeners = aResponse.startedListeners;
is(startedListeners.length, 2, "startedListeners.length");
isnot(startedListeners.indexOf("PageError"), -1, "startedListeners: PageError");
isnot(startedListeners.indexOf("ConsoleAPI"), -1,
"startedListeners: ConsoleAPI");
is(startedListeners.indexOf("foo"), -1, "startedListeners: no foo");
ok(!aResponse.nativeConsoleAPI, "!nativeConsoleAPI");
top.console = top.console_;
delete top.console_;
aState.client.stopListeners(["ConsoleAPI", "foo"],
onStopConsoleAPI.bind(null, aState));
}
function onStopConsoleAPI(aState, aResponse)
{
is(aResponse.stoppedListeners.length, 1, "stoppedListeners.length");
is(aResponse.stoppedListeners[0], "ConsoleAPI", "stoppedListeners: ConsoleAPI");
closeDebugger(aState, function() {
SimpleTest.finish();
});
}
addEventListener("load", startTest);
</script>
</body>
</html>

View File

@ -1,179 +0,0 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="utf8">
<title>Test for cached messages</title>
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<script type="text/javascript;version=1.8" src="common.js"></script>
<!-- Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ -->
</head>
<body>
<p>Test for cached messages</p>
<script type="application/javascript;version=1.8">
let expectedConsoleCalls = [];
let expectedPageErrors = [];
(function() {
Services.console.reset();
expectedPageErrors = [
{
_type: "PageError",
errorMessage: /fooColor/,
sourceName: /.+/,
category: "CSS Parser",
timeStamp: /^\d+$/,
error: false,
warning: true,
exception: false,
strict: false,
},
{
_type: "PageError",
errorMessage: /doTheImpossible/,
sourceName: /.+/,
category: "content javascript",
timeStamp: /^\d+$/,
error: false,
warning: false,
exception: true,
strict: false,
},
];
let container = top.document.createElement("script");
top.document.body.appendChild(container);
container.textContent = "document.body.style.color = 'fooColor';";
top.document.body.removeChild(container);
container = top.document.createElement("script");
top.document.body.appendChild(container);
container.textContent = "document.doTheImpossible();";
top.document.body.removeChild(container);
})();
function doConsoleCalls()
{
top.console.log("foobarBaz-log", undefined);
top.console.info("foobarBaz-info", null);
top.console.warn("foobarBaz-warn", document.body);
expectedConsoleCalls = [
{
_type: "ConsoleAPI",
level: "log",
filename: /test_cached_messages/,
functionName: "doConsoleCalls",
timeStamp: /^\d+$/,
arguments: ["foobarBaz-log", { type: "undefined" }],
},
{
_type: "ConsoleAPI",
level: "info",
filename: /test_cached_messages/,
functionName: "doConsoleCalls",
timeStamp: /^\d+$/,
arguments: ["foobarBaz-info", { type: "null" }],
},
{
_type: "ConsoleAPI",
level: "warn",
filename: /test_cached_messages/,
functionName: "doConsoleCalls",
timeStamp: /^\d+$/,
arguments: ["foobarBaz-warn", { type: "object", actor: /[a-z]/ }],
},
];
}
</script>
<script type="text/javascript;version=1.8">
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
SimpleTest.waitForExplicitFinish();
let consoleAPIListener;
let consoleAPICalls = 0;
let handlers = {
onConsoleAPICall: function onConsoleAPICall()
{
consoleAPICalls++;
if (consoleAPICalls == expectedConsoleCalls.length) {
checkConsoleAPICache();
}
},
};
function startTest()
{
removeEventListener("load", startTest);
consoleAPIListener = new ConsoleAPIListener(top, handlers);
consoleAPIListener.init();
doConsoleCalls();
}
function checkConsoleAPICache()
{
consoleAPIListener.destroy();
consoleAPIListener = null;
attachConsole(["ConsoleAPI"], onAttach1);
}
function onAttach1(aState, aResponse)
{
aState.client.getCachedMessages(["ConsoleAPI"],
onCachedConsoleAPI.bind(null, aState));
}
function onCachedConsoleAPI(aState, aResponse)
{
let msgs = aResponse.messages;
is(msgs.length, expectedConsoleCalls.length,
"number of cached console messages");
expectedConsoleCalls.forEach(function(aMessage, aIndex) {
info("checking received cached message #" + aIndex);
checkConsoleAPICall(msgs[aIndex], expectedConsoleCalls[aIndex]);
});
closeDebugger(aState, testPageErrors);
}
function testPageErrors()
{
attachConsole(["PageError"], onAttach2);
}
function onAttach2(aState, aResponse)
{
aState.client.getCachedMessages(["PageError"],
onCachedPageErrors.bind(null, aState));
}
function onCachedPageErrors(aState, aResponse)
{
let msgs = aResponse.messages;
is(msgs.length, expectedPageErrors.length,
"number of cached page errors");
expectedPageErrors.forEach(function(aMessage, aIndex) {
info("checking received cached message #" + aIndex);
checkObject(msgs[aIndex], expectedPageErrors[aIndex]);
});
closeDebugger(aState, function() {
SimpleTest.finish();
});
}
addEventListener("load", startTest);
</script>
</body>
</html>

View File

@ -1,148 +0,0 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="utf8">
<title>Test for the Console API</title>
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<script type="text/javascript;version=1.8" src="common.js"></script>
<!-- Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ -->
</head>
<body>
<p>Test for the Console API</p>
<script type="text/javascript;version=1.8">
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
SimpleTest.waitForExplicitFinish();
let expectedConsoleCalls = [];
function doConsoleCalls(aState)
{
console.log("foobarBaz-log", undefined);
console.info("foobarBaz-info", null);
console.warn("foobarBaz-warn", document.body);
console.debug(null);
console.trace();
console.dir(document, window);
expectedConsoleCalls = [
{
level: "log",
filename: /test_consoleapi/,
functionName: "doConsoleCalls",
timeStamp: /^\d+$/,
arguments: ["foobarBaz-log", { type: "undefined" }],
},
{
level: "info",
filename: /test_consoleapi/,
functionName: "doConsoleCalls",
timeStamp: /^\d+$/,
arguments: ["foobarBaz-info", { type: "null" }],
},
{
level: "warn",
filename: /test_consoleapi/,
functionName: "doConsoleCalls",
timeStamp: /^\d+$/,
arguments: ["foobarBaz-warn", { type: "object", actor: /[a-z]/ }],
},
{
level: "debug",
filename: /test_consoleapi/,
functionName: "doConsoleCalls",
timeStamp: /^\d+$/,
arguments: [{ type: "null" }],
},
{
level: "trace",
filename: /test_consoleapi/,
functionName: "doConsoleCalls",
timeStamp: /^\d+$/,
arguments: [
{
filename: /test_consoleapi/,
functionName: "doConsoleCalls",
},
{
filename: /test_consoleapi/,
functionName: "onAttach",
},
],
},
{
level: "dir",
filename: /test_consoleapi/,
functionName: "doConsoleCalls",
timeStamp: /^\d+$/,
arguments: [
{
type: "object",
actor: /[a-z]/,
className: "HTMLDocument",
},
{
type: "object",
actor: /[a-z]/,
className: "Window",
}
],
objectProperties: [
{
name: "ATTRIBUTE_NODE",
value: 2,
},
{
name: "CDATA_SECTION_NODE",
value: 4,
}, // ...
],
},
];
}
function startTest()
{
removeEventListener("load", startTest);
attachConsole(["ConsoleAPI"], onAttach);
}
function onAttach(aState, aResponse)
{
onConsoleAPICall = onConsoleAPICall.bind(null, aState);
aState.dbgClient.addListener("consoleAPICall", onConsoleAPICall);
doConsoleCalls(aState.actor);
}
let consoleCalls = [];
function onConsoleAPICall(aState, aType, aPacket)
{
is(aPacket.from, aState.actor, "console API call actor");
consoleCalls.push(aPacket.message);
if (consoleCalls.length != expectedConsoleCalls.length) {
return;
}
aState.dbgClient.removeListener("consoleAPICall", onConsoleAPICall);
expectedConsoleCalls.forEach(function(aMessage, aIndex) {
info("checking received console call #" + aIndex);
checkConsoleAPICall(consoleCalls[aIndex], expectedConsoleCalls[aIndex]);
});
consoleCalls = [];
closeDebugger(aState, function() {
SimpleTest.finish();
});
}
addEventListener("load", startTest);
</script>
</body>
</html>

View File

@ -1,146 +0,0 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="utf8">
<title>Test for JavaScript terminal functionality</title>
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<script type="text/javascript;version=1.8" src="common.js"></script>
<!-- Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ -->
</head>
<body>
<p>Test for JavaScript terminal functionality</p>
<script type="text/javascript;version=1.8">
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
SimpleTest.waitForExplicitFinish();
function startTest()
{
removeEventListener("load", startTest);
attachConsole(["PageError"], onAttach);
}
function onAttach(aState, aResponse)
{
top.foobarObject = Object.create(null);
top.foobarObject.foo = 1;
top.foobarObject.foobar = 2;
top.foobarObject.foobaz = 3;
top.foobarObject.omg = 4;
top.foobarObject.omgfoo = 5;
info("test autocomplete for 'window.foo'");
onAutocomplete1 = onAutocomplete1.bind(null, aState);
aState.client.autocomplete("window.foo", 0, onAutocomplete1);
}
function onAutocomplete1(aState, aResponse)
{
let matches = aResponse.matches;
is(aResponse.matchProp, "foo", "matchProp");
is(matches.length, 1, "matches.length");
is(matches[0], "foobarObject", "matches[0]");
info("test autocomplete for 'window.foobarObject.'");
onAutocomplete2 = onAutocomplete2.bind(null, aState);
aState.client.autocomplete("window.foobarObject.", 0, onAutocomplete2);
}
function onAutocomplete2(aState, aResponse)
{
let matches = aResponse.matches;
ok(!aResponse.matchProp, "matchProp");
is(matches.length, 5, "matches.length");
checkObject(matches, ["foo", "foobar", "foobaz", "omg", "omgfoo"]);
info("test eval '2+2'");
onEval1 = onEval1.bind(null, aState);
aState.client.evaluateJS("2+2", onEval1);
}
function onEval1(aState, aResponse)
{
checkObject(aResponse, {
from: aState.actor,
input: "2+2",
result: 4,
});
ok(!aResponse.error, "no js error");
ok(!aResponse.helperResult, "no helper result");
info("test eval 'window'");
onEval2 = onEval2.bind(null, aState);
aState.client.evaluateJS("window", onEval2);
}
function onEval2(aState, aResponse)
{
checkObject(aResponse, {
from: aState.actor,
input: "window",
result: {
type: "object",
className: "Window",
actor: /[a-z]/,
},
});
ok(!aResponse.error, "no js error");
ok(!aResponse.helperResult, "no helper result");
info("test eval with exception");
onEvalWithException = onEvalWithException.bind(null, aState);
aState.client.evaluateJS("window.doTheImpossible()",
onEvalWithException);
}
function onEvalWithException(aState, aResponse)
{
checkObject(aResponse, {
from: aState.actor,
input: "window.doTheImpossible()",
result: {
type: "undefined",
},
errorMessage: /doTheImpossible/,
});
ok(aResponse.error, "js error object");
ok(!aResponse.helperResult, "no helper result");
info("test eval with helper");
onEvalWithHelper = onEvalWithHelper.bind(null, aState);
aState.client.evaluateJS("clear()", onEvalWithHelper);
}
function onEvalWithHelper(aState, aResponse)
{
checkObject(aResponse, {
from: aState.actor,
input: "clear()",
result: {
type: "undefined",
},
helperResult: { type: "clearOutput" },
});
ok(!aResponse.error, "no js error");
closeDebugger(aState, function() {
SimpleTest.finish();
});
}
addEventListener("load", startTest);
</script>
</body>
</html>

View File

@ -1,243 +0,0 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="utf8">
<title>Test for the network actor (GET request)</title>
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<script type="text/javascript;version=1.8" src="common.js"></script>
<!-- Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ -->
</head>
<body>
<p>Test for the network actor (GET request)</p>
<iframe src="/tests/toolkit/devtools/webconsole/test/network_requests_iframe.html"></iframe>
<script type="text/javascript;version=1.8">
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
SimpleTest.waitForExplicitFinish();
function startTest()
{
removeEventListener("load", startTest);
attachConsole(["NetworkActivity"], onAttach);
}
function onAttach(aState, aResponse)
{
info("test network GET request");
onNetworkEvent = onNetworkEvent.bind(null, aState);
aState.dbgClient.addListener("networkEvent", onNetworkEvent);
onNetworkEventUpdate = onNetworkEventUpdate.bind(null, aState);
aState.dbgClient.addListener("networkEventUpdate", onNetworkEventUpdate);
let iframe = document.querySelector("iframe").contentWindow;
iframe.testXhrGet();
}
function onNetworkEvent(aState, aType, aPacket)
{
is(aPacket.from, aState.actor, "network event actor");
info("checking the network event packet");
let netActor = aPacket.eventActor;
checkObject(netActor, {
actor: /[a-z]/,
startedDateTime: /^\d+\-\d+\-\d+T.+$/,
url: /data\.json/,
method: "GET",
});
aState.netActor = netActor.actor;
aState.dbgClient.removeListener("networkEvent", onNetworkEvent);
}
let updates = [];
function onNetworkEventUpdate(aState, aType, aPacket)
{
info("received networkEventUpdate " + aPacket.updateType);
is(aPacket.from, aState.netActor, "networkEventUpdate actor");
updates.push(aPacket.updateType);
let expectedPacket = null;
switch (aPacket.updateType) {
case "requestHeaders":
case "responseHeaders":
ok(aPacket.headers > 0, "headers > 0");
ok(aPacket.headersSize > 0, "headersSize > 0");
break;
case "requestCookies":
expectedPacket = {
cookies: 2,
};
break;
case "requestPostData":
ok(false, "got unexpected requestPostData");
break;
case "responseStart":
expectedPacket = {
response: {
httpVersion: /^HTTP\/\d\.\d$/,
status: 200,
statusText: "OK",
headersSize: /^\d+$/,
discardResponseBody: true,
},
};
break;
case "responseCookies":
expectedPacket = {
cookies: 0,
};
break;
case "responseContent":
expectedPacket = {
mimeType: /^application\/(json|octet-stream)$/,
contentSize: 0,
discardResponseBody: true,
};
break;
case "eventTimings":
expectedPacket = {
totalTime: /^\d+$/,
};
break;
default:
ok(false, "unknown network event update type: " +
aPacket.updateType);
return;
}
if (expectedPacket) {
info("checking the packet content");
checkObject(aPacket, expectedPacket);
}
if (updates.indexOf("responseContent") > -1 &&
updates.indexOf("eventTimings") > -1) {
aState.dbgClient.removeListener("networkEventUpdate",
onNetworkEvent);
onRequestHeaders = onRequestHeaders.bind(null, aState);
aState.client.getRequestHeaders(aState.netActor,
onRequestHeaders);
}
}
function onRequestHeaders(aState, aResponse)
{
info("checking request headers");
ok(aResponse.headers.length > 0, "request headers > 0");
ok(aResponse.headersSize > 0, "request headersSize > 0");
checkHeadersOrCookies(aResponse.headers, {
Referer: /network_requests_iframe\.html/,
Cookie: /bug768096/,
});
onRequestCookies = onRequestCookies.bind(null, aState);
aState.client.getRequestCookies(aState.netActor,
onRequestCookies);
}
function onRequestCookies(aState, aResponse)
{
info("checking request cookies");
is(aResponse.cookies.length, 2, "request cookies length");
checkHeadersOrCookies(aResponse.cookies, {
foobar: "fooval",
omgfoo: "bug768096",
});
onRequestPostData = onRequestPostData.bind(null, aState);
aState.client.getRequestPostData(aState.netActor,
onRequestPostData);
}
function onRequestPostData(aState, aResponse)
{
info("checking request POST data");
ok(!aResponse.postData.text, "no request POST data");
ok(aResponse.postDataDiscarded, "request POST data was discarded");
onResponseHeaders = onResponseHeaders.bind(null, aState);
aState.client.getResponseHeaders(aState.netActor,
onResponseHeaders);
}
function onResponseHeaders(aState, aResponse)
{
info("checking response headers");
ok(aResponse.headers.length > 0, "response headers > 0");
ok(aResponse.headersSize > 0, "response headersSize > 0");
checkHeadersOrCookies(aResponse.headers, {
"Content-Type": /^application\/(json|octet-stream)$/,
"Content-Length": /^\d+$/,
});
onResponseCookies = onResponseCookies.bind(null, aState);
aState.client.getResponseCookies(aState.netActor,
onResponseCookies);
}
function onResponseCookies(aState, aResponse)
{
info("checking response cookies");
is(aResponse.cookies.length, 0, "response cookies length");
onResponseContent = onResponseContent.bind(null, aState);
aState.client.getResponseContent(aState.netActor,
onResponseContent);
}
function onResponseContent(aState, aResponse)
{
info("checking response content");
ok(!aResponse.content.text, "no response content");
ok(aResponse.contentDiscarded, "response content was discarded");
onEventTimings = onEventTimings.bind(null, aState);
aState.client.getEventTimings(aState.netActor,
onEventTimings);
}
function onEventTimings(aState, aResponse)
{
info("checking event timings");
checkObject(aResponse, {
timings: {
blocked: /^-1|\d+$/,
dns: /^-1|\d+$/,
connect: /^-1|\d+$/,
send: /^-1|\d+$/,
wait: /^-1|\d+$/,
receive: /^-1|\d+$/,
},
totalTime: /^\d+$/,
});
closeDebugger(aState, function() {
SimpleTest.finish();
});
}
addEventListener("load", startTest);
</script>
</body>
</html>

View File

@ -1,267 +0,0 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="utf8">
<title>Test for the network actor (POST request)</title>
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<script type="text/javascript;version=1.8" src="common.js"></script>
<!-- Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ -->
</head>
<body>
<p>Test for the network actor (POST request)</p>
<iframe src="/tests/toolkit/devtools/webconsole/test/network_requests_iframe.html"></iframe>
<script type="text/javascript;version=1.8">
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
SimpleTest.waitForExplicitFinish();
function startTest()
{
removeEventListener("load", startTest);
attachConsole(["NetworkActivity"], onAttach);
}
function onAttach(aState, aResponse)
{
info("enable network request and response body logging");
onSetPreferences = onSetPreferences.bind(null, aState);
aState.client.setPreferences({
"NetworkMonitor.saveRequestAndResponseBodies": true,
}, onSetPreferences);
}
function onSetPreferences(aState, aResponse)
{
is(aResponse.updated.length, 1, "updated prefs length");
is(aResponse.updated[0], "NetworkMonitor.saveRequestAndResponseBodies",
"updated prefs length");
info("test network POST request");
onNetworkEvent = onNetworkEvent.bind(null, aState);
aState.dbgClient.addListener("networkEvent", onNetworkEvent);
onNetworkEventUpdate = onNetworkEventUpdate.bind(null, aState);
aState.dbgClient.addListener("networkEventUpdate", onNetworkEventUpdate);
let iframe = document.querySelector("iframe").contentWindow;
iframe.testXhrPost();
}
function onNetworkEvent(aState, aType, aPacket)
{
is(aPacket.from, aState.actor, "network event actor");
info("checking the network event packet");
let netActor = aPacket.eventActor;
checkObject(netActor, {
actor: /[a-z]/,
startedDateTime: /^\d+\-\d+\-\d+T.+$/,
url: /data\.json/,
method: "POST",
});
aState.netActor = netActor.actor;
aState.dbgClient.removeListener("networkEvent", onNetworkEvent);
}
let updates = [];
function onNetworkEventUpdate(aState, aType, aPacket)
{
info("received networkEventUpdate " + aPacket.updateType);
is(aPacket.from, aState.netActor, "networkEventUpdate actor");
updates.push(aPacket.updateType);
let expectedPacket = null;
switch (aPacket.updateType) {
case "requestHeaders":
case "responseHeaders":
ok(aPacket.headers > 0, "headers > 0");
ok(aPacket.headersSize > 0, "headersSize > 0");
break;
case "requestCookies":
expectedPacket = {
cookies: 2,
};
break;
case "requestPostData":
ok(aPacket.dataSize > 0, "dataSize > 0");
ok(!aPacket.discardRequestBody, "discardRequestBody");
break;
case "responseStart":
expectedPacket = {
response: {
httpVersion: /^HTTP\/\d\.\d$/,
status: 200,
statusText: "OK",
headersSize: /^\d+$/,
discardResponseBody: false,
},
};
break;
case "responseCookies":
expectedPacket = {
cookies: 0,
};
break;
case "responseContent":
expectedPacket = {
mimeType: /^application\/(json|octet-stream)$/,
contentSize: /^\d+$/,
discardResponseBody: false,
};
break;
case "eventTimings":
expectedPacket = {
totalTime: /^\d+$/,
};
break;
default:
ok(false, "unknown network event update type: " +
aPacket.updateType);
return;
}
if (expectedPacket) {
info("checking the packet content");
checkObject(aPacket, expectedPacket);
}
if (updates.indexOf("responseContent") > -1 &&
updates.indexOf("eventTimings") > -1) {
aState.dbgClient.removeListener("networkEventUpdate",
onNetworkEvent);
onRequestHeaders = onRequestHeaders.bind(null, aState);
aState.client.getRequestHeaders(aState.netActor,
onRequestHeaders);
}
}
function onRequestHeaders(aState, aResponse)
{
info("checking request headers");
ok(aResponse.headers.length > 0, "request headers > 0");
ok(aResponse.headersSize > 0, "request headersSize > 0");
checkHeadersOrCookies(aResponse.headers, {
Referer: /network_requests_iframe\.html/,
Cookie: /bug768096/,
});
onRequestCookies = onRequestCookies.bind(null, aState);
aState.client.getRequestCookies(aState.netActor,
onRequestCookies);
}
function onRequestCookies(aState, aResponse)
{
info("checking request cookies");
is(aResponse.cookies.length, 2, "request cookies length");
checkHeadersOrCookies(aResponse.cookies, {
foobar: "fooval",
omgfoo: "bug768096",
});
onRequestPostData = onRequestPostData.bind(null, aState);
aState.client.getRequestPostData(aState.netActor,
onRequestPostData);
}
function onRequestPostData(aState, aResponse)
{
info("checking request POST data");
checkObject(aResponse, {
postData: {
text: "Hello world!",
},
postDataDiscarded: false,
});
onResponseHeaders = onResponseHeaders.bind(null, aState);
aState.client.getResponseHeaders(aState.netActor,
onResponseHeaders);
}
function onResponseHeaders(aState, aResponse)
{
info("checking response headers");
ok(aResponse.headers.length > 0, "response headers > 0");
ok(aResponse.headersSize > 0, "response headersSize > 0");
checkHeadersOrCookies(aResponse.headers, {
"Content-Type": /^application\/(json|octet-stream)$/,
"Content-Length": /^\d+$/,
});
onResponseCookies = onResponseCookies.bind(null, aState);
aState.client.getResponseCookies(aState.netActor,
onResponseCookies);
}
function onResponseCookies(aState, aResponse)
{
info("checking response cookies");
is(aResponse.cookies.length, 0, "response cookies length");
onResponseContent = onResponseContent.bind(null, aState);
aState.client.getResponseContent(aState.netActor,
onResponseContent);
}
function onResponseContent(aState, aResponse)
{
info("checking response content");
checkObject(aResponse, {
content: {
text: /"test JSON data"/,
},
contentDiscarded: false,
});
onEventTimings = onEventTimings.bind(null, aState);
aState.client.getEventTimings(aState.netActor,
onEventTimings);
}
function onEventTimings(aState, aResponse)
{
info("checking event timings");
checkObject(aResponse, {
timings: {
blocked: /^-1|\d+$/,
dns: /^-1|\d+$/,
connect: /^-1|\d+$/,
send: /^-1|\d+$/,
wait: /^-1|\d+$/,
receive: /^-1|\d+$/,
},
totalTime: /^\d+$/,
});
closeDebugger(aState, function() {
SimpleTest.finish();
});
}
addEventListener("load", startTest);
</script>
</body>
</html>

View File

@ -1,172 +0,0 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="utf8">
<title>Test for the object actor</title>
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<script type="text/javascript;version=1.8" src="common.js"></script>
<!-- Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ -->
</head>
<body>
<p>Test for the object actor</p>
<script type="text/javascript;version=1.8">
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
SimpleTest.waitForExplicitFinish();
let expectedProps = [];
function startTest()
{
removeEventListener("load", startTest);
attachConsole(["ConsoleAPI"], onAttach);
}
function onAttach(aState, aResponse)
{
onConsoleCall = onConsoleCall.bind(null, aState);
aState.dbgClient.addListener("consoleAPICall", onConsoleCall);
window.foobarObject = Object.create(null);
foobarObject.foo = 1;
foobarObject.foobar = "hello";
foobarObject.foobaz = document;
foobarObject.omg = null;
foobarObject.testfoo = false;
foobarObject.notInspectable = {};
foobarObject.omgfn = function _omgfn() {
return "myResult";
};
foobarObject.abArray = ["a", "b"];
Object.defineProperty(foobarObject, "getterAndSetter", {
enumerable: true,
get: function fooGet() { return "foo"; },
set: function fooSet() { 1+2 },
});
console.log("hello", foobarObject);
expectedProps = [
{
name: "abArray",
value: {
type: "object",
className: "Array",
actor: /[a-z]/,
inspectable: true,
},
},
{
name: "foo",
configurable: true,
enumerable: true,
writable: true,
value: 1,
},
{
name: "foobar",
value: "hello",
},
{
name: "foobaz",
value: {
type: "object",
className: "HTMLDocument",
displayString: /\[object HTMLDocument/,
inspectable: true,
actor: /[a-z]/,
},
},
{
name: "getterAndSetter",
get: {
type: "function",
className: "function",
displayString: /function fooGet/,
actor: /[a-z]/,
inspectable: false,
},
set: {
type: "function",
className: "function",
displayString: /function fooSet/,
actor: /[a-z]/,
inspectable: false,
},
},
{
name: "notInspectable",
value: {
type: "object",
className: "Object",
actor: /[a-z]/,
inspectable: false,
},
},
{
name: "omg",
value: { type: "null" },
},
{
name: "omgfn",
value: {
type: "function",
className: "function",
displayString: /function _omgfn/,
actor: /[a-z]/,
inspectable: false,
},
},
{
name: "testfoo",
value: false,
},
];
}
function onConsoleCall(aState, aType, aPacket)
{
is(aPacket.from, aState.actor, "console API call actor");
info("checking the console API call packet");
checkConsoleAPICall(aPacket.message, {
level: "log",
filename: /test_object_actor/,
functionName: "onAttach",
arguments: ["hello", {
type: "object",
actor: /[a-z]/,
inspectable: true,
}],
});
aState.dbgClient.removeListener("consoleAPICall", onConsoleCall);
info("inspecting object properties");
let args = aPacket.message.arguments;
onProperties = onProperties.bind(null, aState);
aState.client.inspectObjectProperties(args[1].actor, onProperties);
}
function onProperties(aState, aResponse)
{
let props = aResponse.properties;
is(props.length, expectedProps.length,
"number of enumerable properties");
checkObject(props, expectedProps);
expectedProps = [];
closeDebugger(aState, function() {
SimpleTest.finish();
});
}
addEventListener("load", startTest);
</script>
</body>
</html>

View File

@ -1,98 +0,0 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="utf8">
<title>Test for page errors</title>
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<script type="text/javascript;version=1.8" src="common.js"></script>
<!-- Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ -->
</head>
<body>
<p>Test for page errors</p>
<script type="text/javascript;version=1.8">
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
SimpleTest.waitForExplicitFinish();
let expectedPageErrors = [];
function doPageErrors()
{
expectedPageErrors = [
{
errorMessage: /fooColor/,
sourceName: /test_page_errors/,
category: "CSS Parser",
timeStamp: /^\d+$/,
error: false,
warning: true,
exception: false,
strict: false,
},
{
errorMessage: /doTheImpossible/,
sourceName: /test_page_errors/,
category: "content javascript",
timeStamp: /^\d+$/,
error: false,
warning: false,
exception: true,
strict: false,
},
];
let container = document.createElement("script");
document.body.appendChild(container);
container.textContent = "document.body.style.color = 'fooColor';";
document.body.removeChild(container);
SimpleTest.expectUncaughtException();
container = document.createElement("script");
document.body.appendChild(container);
container.textContent = "document.doTheImpossible();";
document.body.removeChild(container);
}
function startTest()
{
removeEventListener("load", startTest);
attachConsole(["PageError"], onAttach);
}
function onAttach(aState, aResponse)
{
onPageError = onPageError.bind(null, aState);
aState.dbgClient.addListener("pageError", onPageError);
doPageErrors();
}
let pageErrors = [];
function onPageError(aState, aType, aPacket)
{
is(aPacket.from, aState.actor, "page error actor");
pageErrors.push(aPacket.pageError);
if (pageErrors.length != expectedPageErrors.length) {
return;
}
aState.dbgClient.removeListener("pageError", onPageError);
expectedPageErrors.forEach(function(aMessage, aIndex) {
info("checking received page error #" + aIndex);
checkObject(pageErrors[aIndex], expectedPageErrors[aIndex]);
});
closeDebugger(aState, function() {
SimpleTest.finish();
});
}
addEventListener("load", startTest);
</script>
</body>
</html>