Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(106)

Unified Diff: LayoutTests/http/tests/xmlhttprequest/resources/xmlhttprequest-response-type-blob.js

Issue 562563003: [XHR] Accept data on didReceiveData call even if responseType is set to Blob (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | LayoutTests/http/tests/xmlhttprequest/xmlhttprequest-response-type-blob-expected.txt » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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();
-}
+});
« no previous file with comments | « no previous file | LayoutTests/http/tests/xmlhttprequest/xmlhttprequest-response-type-blob-expected.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698