blob: 1d395fe4bf4bf1031711d9009bb9fc6638c35e87 [file] [log] [blame]
<html><head>
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="-1" />
<link rel="stylesheet" href="test_page.css">
<script>
function AdjustHeight(frameWin) {
var div = frameWin.document.getElementsByTagName("div")[0];
var height = frameWin.getComputedStyle(div).height;
frameWin.frameElement.style.height = height;
}
function DidExecuteTests() {
if (window == top)
return;
// Otherwise, we are in a subframe, so we can use this opportunity to resize
// ourselves.
AdjustHeight(window);
}
function AppendFrame(testcase, i) {
var p = document.createElement("P");
p.setAttribute("class", "frame-container");
var title = document.createElement("H2");
title.appendChild(document.createTextNode(testcase));
p.appendChild(title);
var frame = document.createElement("IFRAME");
var mode = ExtractSearchParameter("mode");
if (mode == "nacl")
frame.setAttribute("src", "?testcase=" + testcase + "&mode=nacl");
else
frame.setAttribute("src", "?testcase=" + testcase);
frame.setAttribute("onload", "LoadNext(" + (i + 1) + ")");
p.appendChild(frame);
document.body.appendChild(p);
}
function LoadNext(i) {
var links = document.links;
if (links.length > i)
AppendFrame(links[i].firstChild.nodeValue, i);
}
function RunAll() {
// Remove any existing frames.
var existing = document.getElementsByClassName("frame-container");
while (existing.length)
existing[0].parentNode.removeChild(existing[0]);
// Add new frames for each test, but do so one frame at a time.
LoadNext(0);
}
function ExtractSearchParameter(name) {
var nameIndex = location.search.indexOf(name + "=");
if (nameIndex != -1) {
var value = location.search.substring(nameIndex + name.length + 1);
var endIndex = value.indexOf("&");
if (endIndex != -1)
value = value.substring(0, endIndex);
return value;
}
return "";
}
// Parses the message, looking for strings of the form:
// TESTING_MESSAGE:<message_type>:<message_contents>
//
// If the message_data is not a string or does not match the above format, then
// undefined is returned.
//
// Otherwise, returns an array containing 2 items. The 0th element is the
// message_type, one of:
// - ClearContents
// - DidExecuteTests
// - LogHTML
// - SetCookie
// The second item is the verbatim message_contents.
function ParseTestingMessage(message_data) {
if (typeof(message_data)!='string')
return undefined;
var testing_message_prefix = "TESTING_MESSAGE";
var delim_str = ":";
var delim1 = message_data.indexOf(delim_str);
if (message_data.substring(0, delim1) !== testing_message_prefix)
return undefined;
var delim2 = message_data.indexOf(delim_str, delim1 + 1);
if (delim2 == -1)
delim2 = message_data.length;
var message_type = message_data.substring(delim1 + 1, delim2);
var message_contents = message_data.substring(delim2 + 1);
return [message_type, message_contents];
}
function ClearConsole() {
window.document.getElementById("console").innerHTML = "";
}
function LogHTML(html) {
window.document.getElementById("console").innerHTML += html;
}
function SetCookie(key_value_string) {
window.document.cookie = key_value_string + "; path=/";
}
function IsTestingMessage(message_data) {
return (ParseTestingMessage(message_data) != undefined);
}
function handleTestingMessage(message_event) {
var type_contents_tuple = ParseTestingMessage(message_event.data);
if (type_contents_tuple) {
var type = type_contents_tuple[0];
var contents = type_contents_tuple[1];
if (type === "ClearConsole")
ClearConsole();
else if (type === "DidExecuteTests")
DidExecuteTests();
else if (type === "LogHTML")
LogHTML(contents);
else if (type === "SetCookie")
SetCookie(contents);
}
}
onload = function() {
var testcase = ExtractSearchParameter("testcase");
var mode = ExtractSearchParameter("mode");
document.title = 'Test ' + testcase;
var obj;
if (mode == "nacl") {
obj = document.createElement("EMBED");
obj.setAttribute("src", "test_case.nmf");
obj.setAttribute("type", "application/x-nacl");
obj.setAttribute("mode", mode);
} else {
var mimeType = "application/x-ppapi-tests";
if (mimeType in navigator.mimeTypes) {
obj = document.createElement("EMBED");
obj.setAttribute("src", "http://a.b.c/test");
obj.setAttribute("type", mimeType);
} else {
document.getElementById("console").innerHTML =
'<span class="fail">FAIL</span>: ' +
'<span class="err_msg">Test plug-in is not registered.</span>';
}
}
if (obj) {
obj.setAttribute("id", "plugin");
obj.setAttribute("testcase", testcase);
obj.setAttribute("protocol", window.location.protocol);
var container = document.getElementById("container");
container.appendChild(obj);
container.addEventListener("message", handleTestingMessage, true);
}
}
</script>
</head><body>
<div>
<div id="container"></div>
<div id="console" /><span class="load_msg">loading...</span></div>
</div>
</body></html>