зеркало из https://github.com/mozilla/gecko-dev.git
Bug 888974, Add some missing Worker tests.
This commit is contained in:
Родитель
51e4523cfd
Коммит
5b70854528
|
@ -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 });
|
||||
}
|
Загрузка…
Ссылка в новой задаче