blob: d3f0e3426ec32398dcaa98f2b819c5ae677e15d0 [file] [log] [blame]
<!DOCTYPE html>
<script src="/js-test-resources/js-test.js"></script>
<script>
description("Request a file as the document type with asynchronous XMLHttpRequest in a document context.");
window.jsTestIsAsync = true;
var global = window;
function rejectIfThrown(func, reject) {
return function() {
try {
func();
} catch (e) {
reject(e);
}
};
}
new Promise(function(resolve, reject) {
global.req = new XMLHttpRequest;
req.responseType = 'document';
req.open('GET', 'resources/test.html', true);
req.onreadystatechange = rejectIfThrown(function() {
if (req.readyState != req.DONE) {
return;
}
shouldBe('req.status', '200');
shouldBeNonNull('req.response');
global.result = req.response.querySelector('p').innerText;
shouldBeEqualToString('result', 'PASS');
resolve();
}, reject);
req.send(null);
}).catch(function(r) {
testFailed('Set responseType to document before open(): Failed: ' + r);
}).then(function() {
return new Promise(function(resolve, reject)
{
global.req = new XMLHttpRequest;
req.responseType = 'blob';
req.open('GET', 'resources/test.html', true);
req.onreadystatechange = rejectIfThrown(function() {
if (req.readyState != req.DONE) {
return;
}
shouldBe('req.status', '200');
shouldBeNonNull('req.response');
global.result = req.response.querySelector('p').innerText;
shouldBeEqualToString('result', 'PASS');
resolve();
}, reject);
req.responseType = 'document';
req.send(null);
});
}).catch(function(r) {
testFailed('Change responseType from blob to document between open() and send(): Failed: ' + r);
}).then(function() {
return new Promise(function(resolve, reject)
{
global.req = new XMLHttpRequest;
req.responseType = 'blob';
req.open('GET', 'resources/test.html', true);
req.onreadystatechange = rejectIfThrown(function() {
if (req.readyState == req.HEADERS_RECEIVED) {
req.responseType = 'document';
return;
} else if (req.readyState != req.DONE) {
return;
}
shouldBe('req.status', '200');
shouldBeNonNull('req.response');
global.result = req.response.querySelector('p').innerText;
shouldBeEqualToString('result', 'PASS');
resolve();
}, reject);
req.send(null);
});
}).catch(function(r) {
testFailed('Change responseType from blob to document in HEADERS_RECEIVED: Failed: ' + r);
}).then(finishJSTest, finishJSTest);
</script>