| <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> |