blob: ccf953e1c23a29eba41f016c2fd4a00814353fa5 [file] [log] [blame]
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Fetching the same resource with different options</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
<script>
promise_test(function(t) {
var url1 = "http://localhost:8000/resources/download-json-with-delay.py?iteration=2&delay=100&cors=true&allowCache=true&test=1";
var url2 = "http://localhost:8000/resources/download-json-with-delay.py?iteration=2&delay=100&cors=true&allowCache=true&test=2";
return Promise.all([
fetch(url1, {"mode": "no-cors"}).then((response) => {
assert_equals(response.type, "opaque");
}),
fetch(url1, {"mode": "cors"}).then((response) => {
assert_equals(response.type, "cors");
return response.arrayBuffer().then((arrayBuffer) => {
assert_true(arrayBuffer.byteLength > 0);
});
}),
promise_rejects(t, new TypeError(), fetch(url1, {"mode": "cors", "credentials": "include"})),
promise_rejects(t, new TypeError(), fetch(url2, {"mode": "cors", "credentials": "include"})),
fetch(url2, {"mode": "cors"}).then((response) => {
assert_equals(response.type, "cors");
return response.arrayBuffer().then((arrayBuffer) => {
assert_true(arrayBuffer.byteLength > 0);
});
}),
fetch(url2, {"mode": "no-cors"}).then((response) => {
assert_equals(response.type, "opaque");
})
]);
}, 'Ensure cors checks work when loading in parallel the same resource with different modes');
promise_test(function(t) {
var url3 = "http://localhost:8000/resources/download-json-with-delay.py?iteration=2&delay=100&cors=true&allowCache=true&test=3";
var url4 = "http://localhost:8000/resources/download-json-with-delay.py?iteration=2&delay=100&cors=true&allowCache=true&test=4";
return fetch(url3, {"mode": "cors"}).then((response) => {
assert_equals(response.type, "cors");
return response.arrayBuffer().then((arrayBuffer) => {
assert_true(arrayBuffer.byteLength > 0);
});
}).then(() => {
return fetch(url3, {"mode": "no-cors"}).then((response) => {
assert_equals(response.type, "opaque");
});
}).then(() => {
return promise_rejects(t, new TypeError(), fetch(url3, {"mode": "cors", "credentials": "include"}));
}).then(() => {
return promise_rejects(t, new TypeError(), fetch(url4, {"mode": "cors", "credentials": "include"}));
}).then(() => {
return fetch(url4, {"mode": "no-cors"}).then((response) => {
assert_equals(response.type, "opaque");
});
}).then(() => {
return fetch(url4, {"mode": "cors"}).then((response) => {
assert_equals(response.type, "cors");
return response.arrayBuffer().then((arrayBuffer) => {
assert_true(arrayBuffer.byteLength > 0);
});
});
});
}, 'Ensure cors checks work when loading successively the same resource with different modes');
</script>
</body>
</html>