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