blob: 684719c38c5760fa72a9e148fc552ff2d38d27d3 [file] [log] [blame]
function log(s)
{
document.getElementById("console").appendChild(document.createTextNode(s + "\n"));
}
function shouldBe(a, b)
{
var evalA, evalB;
try {
evalA = eval(a);
evalB = eval(b);
} catch(e) {
evalA = e;
}
var message = (evalA === evalB)
? "PASS: " + a + " should be '" + evalB + "' and is."
: "*** FAIL: " + a + " should be '" + evalB + "' but instead is " + evalA + ". ***";
log(message);
}
function shouldBeTrue(a)
{
shouldBe(a, "true");
}
function shouldBeFalse(b)
{
shouldBe(b, "false");
}
function canGet(keyPath)
{
try {
return eval("window." + keyPath) !== undefined;
} catch(e) {
return false;
}
}
window.marker = { };
function canSet(keyPath, valuePath)
{
if (valuePath === undefined)
valuePath = "window.marker";
try {
eval("window." + keyPath + " = " + valuePath);
return eval("window." + keyPath) === eval("window." + valuePath);
} catch(e) {
return false;
}
}
function canCall(keyPath, argumentString)
{
try {
eval("window." + keyPath + "(" + (argumentString === undefined ? "" : "'" + argumentString + "'") + ")");
return true;
} catch(e) {
return false;
}
}
function toString(expression, valueForException)
{
if (valueForException === undefined)
valueForException = "[exception]";
try {
var evalExpression = eval(expression);
if (evalExpression === undefined)
throw null;
return String(evalExpression);
} catch(e) {
return valueForException;
}
}
// Frame Access Tests
function canAccessFrame(iframeURL, iframeId, passMessage, failMessage) {
if (window.layoutTestController) {
layoutTestController.dumpAsText();
layoutTestController.dumpChildFramesAsText();
layoutTestController.waitUntilDone();
}
var targetWindow = frames[0];
if (!targetWindow.document.body)
log("FAIL: targetWindow started with no document, we won't know if the test passed or failed.");
var iframe = document.getElementById(iframeId);
iframe.src = iframeURL;
var testDone = false;
setTimeout(test, 1);
setTimeout(function() {
if (!testDone) {
log(failMessage);
if (window.layoutTestController)
layoutTestController.notifyDone();
}
}, 2000);
function test() {
try {
if (targetWindow.document.body) {
if (targetWindow.document.getElementById('accessMe')) {
targetWindow.document.getElementById('accessMe').innerHTML = passMessage;
log(passMessage);
testDone = true;
if (window.layoutTestController)
layoutTestController.notifyDone();
return;
}
}
} catch (e) {
log("In catch");
}
setTimeout(test, 1);
}
}
function cannotAccessFrame(iframeURL, iframeId, passMessage, failMessage) {
if (window.layoutTestController) {
layoutTestController.dumpAsText();
layoutTestController.dumpChildFramesAsText();
layoutTestController.waitUntilDone();
}
var targetWindow = frames[0];
if (!targetWindow.document.body)
log("FAIL: targetWindow started with no document, we won't know if the test passed or failed.");
var iframe = document.getElementById(iframeId);
iframe.src = iframeURL;
var testDone = false;
setTimeout(test, 1);
setTimeout(function() {
if (!testDone) {
log(failMessage);
window.stop();
if (window.layoutTestController)
layoutTestController.notifyDone();
}
}, 2000);
function test() {
try {
if (targetWindow.document.body) {
if (targetWindow.document.getElementById('accessMe')) {
targetWindow.document.getElementById('accessMe').innerHTML = failMessage;
log(failMessage);
testDone = true;
window.stop();
if (window.layoutTestController)
layoutTestController.notifyDone();
return;
}
setTimeout(test, 1);
return;
}
} catch (e) {
}
log(passMessage);
testDone = true;
window.stop();
if (window.layoutTestController)
layoutTestController.notifyDone();
}
}
function closeWindowAndNotifyDone(win)
{
win.close();
setTimeout(doneHandler, 1);
function doneHandler() {
if (win.closed) {
if (window.layoutTestController)
layoutTestController.notifyDone();
return;
}
setTimeout(doneHandler, 1);
}
}