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

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
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();
-}
+});

Powered by Google App Engine
This is Rietveld 408576698