Commit 821f13ca authored by tyoshino@chromium.org's avatar tyoshino@chromium.org

Add tests to check XHR with responseType set to document

R=yhirano
BUG=412705

Review URL: https://codereview.chromium.org/675453002

git-svn-id: svn://svn.chromium.org/blink/trunk@184232 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent dac87233
Request a file as the document type with asynchronous XMLHttpRequest in a document context.
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
PASS req.status is 200
PASS req.response is non-null.
PASS result is "PASS"
PASS req.status is 200
PASS req.response is non-null.
PASS result is "PASS"
PASS req.status is 200
PASS req.response is non-null.
PASS result is "PASS"
PASS successfullyParsed is true
TEST COMPLETE
<!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>
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment