blob: 3529b10bb5916cda2517eea47db52f9bca4f8319 [file] [log] [blame]
<html>
<head>
<script>
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.waitUntilDone();
}
loadedFirstURL = false;
var res1, res2;
function test()
{
try {
res1 = document.getElementById("result1");
res2 = document.getElementById("result2");
} catch (ex) {
showErr("Exception: " + ex.description);
if (window.testRunner)
testRunner.notifyDone();
}
}
function streamLoaded()
{
if (loadedFirstURL)
return;
loadedFirstURL = true;
plg.getURLNotify("/plugins/resources/load-me-2.txt", null, "callback");
}
function callback(errCode, streamDump)
{
var parse = parseStreamDump(streamDump);
if (parse.err)
showErr(parse.err);
else {
res1.innerHTML = newlinesToHTML(parse.res1);
res2.innerHTML = newlinesToHTML(parse.res2);
}
if (window.testRunner)
testRunner.notifyDone();
}
// Format passed by plugin: four fields separated by \n\n:
// First URL; first header block; last URL; last header block.
function parseStreamDump(streamDump)
{
var rtn = {};
if (typeof streamDump == "string" || ((typeof streamDump == "object") && (streamDump.constructor == String))) {
var parts = streamDump.split("\n\n");
if (parts.length >= 4) {
rtn.res1 = genericURL(parts[0]) + "\n" + parseHeaders(parts[1]);
rtn.res2 = genericURL(parts[2]) + "\n" + parseHeaders(parts[3]);
} else
rtn.err = "streamDump from plugin does not have expected format";
} else
rtn.err = "streamDump from plugin is not a string: " + streamDump;
return rtn;
}
function showErr(err)
{
res1.innerHTML = "FAILED - " + err;
res2.innerHTML = "";
}
function newlinesToHTML(str)
{
return str.replace(/\n/g, "<br>");
}
function genericURL(url)
{
return url.replace(/^(http:\/\/)[^\/]+/, "$1[varies, not being tested]");
}
function parseHeaders(hdrs)
{
var parts = hdrs.split("\n");
var rtn = parts[0] + "\n";
for (var i = 0; i < parts.length; i++)
if (parts[i].match(/^Content-Type:/))
rtn += parts[i];
return rtn;
}
</script>
</head>
<body onload="test()">
<embed name="plg" type="application/x-webkit-test-netscape" src="/plugins/resources/load-me-1.txt" onstreamload="streamLoaded()"></embed>
<p>Test for <a href="https://bugs.webkit.org/show_bug.cgi?id=13029">bug 13029<a/>:
Permit NPAPI plug-ins to see HTTP response headers.</p>
<p>Expected result below is two HTTP response extracts, one for the initial stream specified in the "src"
attribute, the other for an NPN_GetURLNotify request. Each block should contain the URL; the status line,
which should say "HTTP 200 OK"; and the MIME-type, which should say "Content-Type: text/plain".</p>
<p>----------</p>
<p id="result1">Running test, result should appear here in a very short time...</p>
<p>----------</p>
<p id="result2">Running test, result should appear here in a very short time...</p>
</body>
</html>