| Index: LayoutTests/http/tests/xmlhttprequest/resources/cross-origin-unsupported-url.js
|
| diff --git a/LayoutTests/http/tests/xmlhttprequest/resources/cross-origin-unsupported-url.js b/LayoutTests/http/tests/xmlhttprequest/resources/cross-origin-unsupported-url.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..6f920bcf4ac954263f4c6f04721de2c56f3a0bef
|
| --- /dev/null
|
| +++ b/LayoutTests/http/tests/xmlhttprequest/resources/cross-origin-unsupported-url.js
|
| @@ -0,0 +1,61 @@
|
| +if (self.importScripts)
|
| + importScripts("/js-test-resources/js-test.js");
|
| +
|
| +self.jsTestIsAsync = true;
|
| +
|
| +description("Test cross-origin XHRs to CORS-unsupported protocol schemes in the URL.");
|
| +
|
| +var xhr;
|
| +var errorEvent;
|
| +function issueRequest(url, contentType)
|
| +{
|
| + xhr = new XMLHttpRequest();
|
| + xhr.open('POST', url);
|
| + xhr.onerror = function (a) {
|
| + errorEvent = a;
|
| + shouldBeEqualToString("errorEvent.type", "error");
|
| + setTimeout(runTest, 0);
|
| + };
|
| + // Assumed a Content-Type that turns it into a non-simple CORS request.
|
| + if (contentType)
|
| + xhr.setRequestHeader('Content-Type', contentType);
|
| +
|
| + if (self.importScripts) {
|
| + // Initiating the load on the main thread is not performed synchronously,
|
| + // so send() will not have an exception code set by the time it
|
| + // completes in the Worker case. Hence, no exception will be
|
| + // thrown by the operation.
|
| + shouldNotThrow('xhr.send()');
|
| + } else {
|
| + // The implementation of send() throws an exception if an
|
| + // exception code has been set, regardless of the sync flag.
|
| + // The spec restricts this to sync only, but as error progress
|
| + // events provide no actionable information, it is more helpful
|
| + // to the user to not follow spec.
|
| + //
|
| + // As the initiation of the request happens synchronously in send(),
|
| + // and it is determined that it is to an unsupported CORS URL, an
|
| + // exception is expected to be thrown.
|
| + shouldThrow('xhr.send()');
|
| + }
|
| +}
|
| +
|
| +var withContentType = true;
|
| +var tests = [ 'http://localhost:1291a/',
|
| + 'ftp://127.0.0.1',
|
| + 'localhost:8080/',
|
| + 'tel:1234' ];
|
| +
|
| +function runTest()
|
| +{
|
| + if (!tests.length && withContentType) {
|
| + finishJSTest();
|
| + return;
|
| + }
|
| + withContentType = !withContentType;
|
| + if (!withContentType)
|
| + issueRequest(tests[0]);
|
| + else
|
| + issueRequest(tests.shift(), 'application/json');
|
| +}
|
| +runTest();
|
|
|