| 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..d6e450a133fe85c62f97da5fa47aa8bb9c25b1f1 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,88 @@
|
| 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) {
|
| - shouldBe("req.status", "200");
|
| - shouldBe("req.response.size", "4");
|
| - var reader = new FileReader();
|
| - reader.onload = function (evt) {
|
| - global.buffer = evt.target.result;
|
| - shouldBeEqualToString("buffer", "PASS");
|
| - testPassed("XHR with responseType=\"blob\" succeeded");
|
| - finishJSTest();
|
| - };
|
| - reader.readAsText(req.response, "utf-8");
|
| + 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");
|
| + }).then(resolve, reject);
|
| };
|
| req.send(null);
|
| -} catch (e) {
|
| - testFailed("failed to create XMLHttpRequest with exception: " + e.message);
|
| +}).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");
|
| + readBlobAsArrayBuffer(req.response).then(function (value) {
|
| + global.buffer = value;
|
| + shouldBeEqualToString("buffer", "PASS");
|
| + testPassed("Set responseType before send(): Successful");
|
| + }).then(resolve, reject);
|
| + };
|
| + 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");
|
| + }).then(finishJSTest, reject);
|
| + };
|
| + req.send(null);
|
| + });
|
| +}).catch(function (r) {
|
| + testFailed("Set responseType in HEADERS_RECEIVED: Failed: " + r);
|
| finishJSTest();
|
| -}
|
| +});
|
|
|