Chromium Code Reviews| Index: LayoutTests/http/tests/xmlhttprequest/resources/xmlhttprequest-response-type-blob.js |
| diff --git a/LayoutTests/http/tests/xmlhttprequest/resources/xmlhttprequest-response-type-blob.js b/LayoutTests/http/tests/xmlhttprequest/resources/xmlhttprequest-response-type-blob.js |
| index 2a7b33fb64e6fd654f1b6d08c9a48727742067f4..ce586099efb08142973901ad949e048e170363bb 100644 |
| --- a/LayoutTests/http/tests/xmlhttprequest/resources/xmlhttprequest-response-type-blob.js |
| +++ b/LayoutTests/http/tests/xmlhttprequest/resources/xmlhttprequest-response-type-blob.js |
| @@ -1,25 +1,97 @@ |
| var global = window; |
| -try { |
| +function readBlobAsArrayBuffer(blob) { |
| + return new Promise(function (resolve, reject) { |
| + var reader = new FileReader(); |
| + reader.onload = function (evt) { |
| + resolve(evt.target.result); |
| + }; |
| + reader.onabort = function (evt) { |
| + reject(evt); |
| + }; |
| + reader.onerror = function (evt) { |
| + reject(evt); |
| + }; |
| + reader.readAsText(blob, "utf-8"); |
| + }); |
| +} |
| + |
| +new Promise(function (resolve, reject) { |
| global.req = new XMLHttpRequest; |
| req.responseType = "blob"; |
| req.open("GET", "resources/get.txt", true); |
| - req.onreadystatechange = function() { |
| - if (req.readyState == 4) { |
| + req.onreadystatechange = function () { |
| + if (req.readyState != req.DONE) { |
| + return; |
| + } |
| + |
| + shouldBe("req.status", "200"); |
| + shouldBe("req.response.size", "4"); |
| + readBlobAsArrayBuffer(req.response).then(function (value) { |
| + global.buffer = value; |
| + shouldBeEqualToString("buffer", "PASS"); |
| + testPassed("Set responseType before open(): Successful"); |
| + resolve(); |
| + }, function (r) { |
|
yhirano
2014/09/10 10:56:37
You can simply pass reject as the second argument.
tyoshino (SeeGerritForStatus)
2014/09/10 12:19:29
Done.
|
| + reject(r); |
| + }); |
| + }; |
| + req.send(null); |
| +}).catch(function (r) { |
| + testFailed("Set responseType before open: Failed: " + r); |
| +}).then(function () { |
| + return new Promise(function (resolve, reject) |
| + { |
| + global.req = new XMLHttpRequest; |
| + req.open('GET', 'resources/get.txt', true); |
| + req.onreadystatechange = function () { |
| + if (req.readyState != req.DONE) { |
| + return; |
| + } |
| + |
| shouldBe("req.status", "200"); |
| shouldBe("req.response.size", "4"); |
| - var reader = new FileReader(); |
| - reader.onload = function (evt) { |
| - global.buffer = evt.target.result; |
| + readBlobAsArrayBuffer(req.response).then(function (value) { |
|
yhirano
2014/09/10 10:56:38
ditto
tyoshino (SeeGerritForStatus)
2014/09/10 12:19:29
Done.
|
| + global.buffer = value; |
| shouldBeEqualToString("buffer", "PASS"); |
| - testPassed("XHR with responseType=\"blob\" succeeded"); |
| + testPassed("Set responseType before send(): Successful"); |
| + resolve(); |
| + }, function (r) { |
| + reject(r); |
| + }); |
| + }; |
| + req.responseType = 'blob'; |
| + req.send(null); |
| + }); |
| +}).catch(function (r) { |
| + testFailed("Set responseType before send(): Failed: " + r); |
| +}).then(function () { |
| + return new Promise(function (resolve, reject) |
| + { |
| + global.req = new XMLHttpRequest; |
| + req.open('GET', 'resources/get.txt', true); |
| + req.onreadystatechange = function () { |
| + if (req.readyState == req.HEADERS_RECEIVED) { |
| + req.responseType = 'blob'; |
| + return; |
| + } else if (req.readyState != req.DONE) { |
| + return; |
| + } |
| + |
| + shouldBe("req.status", "200"); |
| + shouldBe("req.response.size", "4"); |
| + readBlobAsArrayBuffer(req.response).then(function (value) { |
| + global.buffer = value; |
| + shouldBeEqualToString("buffer", "PASS"); |
| + testPassed("Set responseType in HEADERS_RECEIVED: Successful"); |
| finishJSTest(); |
| - }; |
| - reader.readAsText(req.response, "utf-8"); |
| - } |
| - }; |
| - req.send(null); |
| -} catch (e) { |
| - testFailed("failed to create XMLHttpRequest with exception: " + e.message); |
| + }, function (r) { |
|
yhirano
2014/09/10 10:56:38
ditto
tyoshino (SeeGerritForStatus)
2014/09/10 12:19:29
Done.
|
| + reject(r); |
| + }); |
| + }; |
| + req.send(null); |
| + }); |
| +}).catch(function (r) { |
| + testFailed("Set responseType in HEADERS_RECEIVED: Failed: " + r); |
| finishJSTest(); |
| -} |
| +}); |