Bug 888974, Add some missing Worker tests.

This commit is contained in:
Ben Turner 2013-07-26 19:22:42 -04:00
Родитель 51e4523cfd
Коммит 5b70854528
4 изменённых файлов: 155 добавлений и 0 удалений

Просмотреть файл

@ -61,6 +61,8 @@ support-files =
xhrAbort_worker.js
xhr_implicit_cancel_worker.js
xhr_worker.js
xhr_headers_worker.js
xhr_headers_server.sjs
url_exceptions_worker.js
urlSearchParams_worker.js
subdir/relativeLoad_sub_worker.js
@ -123,6 +125,7 @@ skip-if = toolkit == 'android' #bug 881404
[test_xhr.html]
[test_xhr2.html]
[test_xhrAbort.html]
[test_xhr_headers.html]
[test_xhr_implicit_cancel.html]
[test_xhr_parameters.html]
[test_xhr_parameters.js]

Просмотреть файл

@ -0,0 +1,85 @@
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<!DOCTYPE HTML>
<html>
<head>
<title>Test for XHR Headers</title>
<script src="/tests/SimpleTest/SimpleTest.js">
</script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
</head>
<body>
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test">
<script class="testbody">
"use strict";
SimpleTest.waitForExplicitFinish();
var path =
location.pathname.substring(0, location.pathname.lastIndexOf("/") + 1);
var filenamePrefix = "xhr_headers_";
var serverFilename = filenamePrefix + "server.sjs";
var workerFilename = filenamePrefix + "worker.js";
var otherHost = "example.com";
info("Informing server about the current host");
var xhr = new XMLHttpRequest();
xhr.open("POST", path + serverFilename);
xhr.setRequestHeader("options-host", otherHost);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
info("Launching worker");
var worker = new Worker(path + workerFilename);
worker.postMessage("http://" + otherHost + path + serverFilename);
worker.onmessage = function(event) {
ok(event.data.response === "", "Worker responded, saw no response");
var loopCount = 0;
function checkServer() {
var xhr2 = new XMLHttpRequest();
xhr2.open("GET", path + serverFilename);
xhr2.onreadystatechange = function() {
if (xhr2.readyState == 4) {
if (xhr2.responseText) {
is(xhr2.responseText,
"Success: expected OPTIONS request with '" +
event.data.header + "' header",
"Server saw expected requests");
SimpleTest.finish();
} else if (++loopCount < 30) {
setTimeout(checkServer, 1000);
} else {
ok(false, "Server never saw any requests");
SimpleTest.finish();
}
}
};
info("Checking server status (" + loopCount + ")");
xhr2.send();
}
checkServer();
};
worker.onerror = function(event) {
ok(false, "Worker had an error: '" + event.message + "'");
event.preventDefault();
SimpleTest.finish();
};
}
};
xhr.send();
</script>
</pre>
</body>
</html>

Просмотреть файл

@ -0,0 +1,51 @@
/**
* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
"use strict";
function handleRequest(request, response) {
switch (request.method) {
case "POST":
try {
var optionsHost = request.getHeader("options-host");
} catch(e) { }
if (optionsHost) {
setState("postHost", request.host);
setState("optionsHost", optionsHost);
return;
}
break;
case "OPTIONS":
if (getState("optionsHost") == request.host) {
try {
var optionsHeader =
request.getHeader("Access-Control-Request-Headers");
} catch(e) { }
setState("optionsHeader", "'" + optionsHeader + "'");
}
break;
case "GET":
response.setHeader("Cache-Control", "no-cache", false);
response.setHeader("Content-Type", "text/plain", false);
if (getState("postHost") == request.host) {
var result = getState("optionsHeader");
if (result) {
response.write("Success: expected OPTIONS request with " + result +
" header");
} else if (getState("badGet") == 1) {
response.write("Error: unexpected GET request");
}
} else {
setState("badGet", "1");
response.write("Error: this response should never be seen");
}
return;
}
response.setStatusLine(request.httpVersion, 501, "Not Implemented");
}

Просмотреть файл

@ -0,0 +1,16 @@
/**
* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
"use strict";
var customHeader = "custom-key";
var customHeaderValue = "custom-key-value";
self.onmessage = function(event) {
var xhr = new XMLHttpRequest();
xhr.open("GET", event.data, false);
xhr.setRequestHeader(customHeader, customHeaderValue);
xhr.send();
postMessage({ response: xhr.responseText, header: customHeader });
}