| OLD | NEW |
| 1 <!DOCTYPE html> |
| 2 <script src="/js-test-resources/js-test.js"></script> |
| 3 <script> |
| 4 |
| 5 description("Request a file as the document type with asynchronous XMLHttpReques
t in a document context."); |
| 6 window.jsTestIsAsync = true; |
| 7 |
| 1 var global = window; | 8 var global = window; |
| 2 | 9 |
| 3 function rejectIfThrown(func, reject) { | 10 function rejectIfThrown(func, reject) { |
| 4 return function() { | 11 return function() { |
| 5 try { | 12 try { |
| 6 func(); | 13 func(); |
| 7 } catch (e) { | 14 } catch (e) { |
| 8 reject(e); | 15 reject(e); |
| 9 } | 16 } |
| 10 }; | 17 }; |
| 11 } | 18 } |
| 12 | 19 |
| 13 new Promise(function(resolve, reject) { | 20 new Promise(function(resolve, reject) { |
| 14 global.req = new XMLHttpRequest; | 21 global.req = new XMLHttpRequest; |
| 15 req.responseType = 'text'; | 22 req.responseType = 'document'; |
| 16 req.open('GET', 'resources/get.txt', true); | 23 req.open('GET', 'resources/test.html', true); |
| 17 req.onreadystatechange = rejectIfThrown(function() { | 24 req.onreadystatechange = rejectIfThrown(function() { |
| 18 if (req.readyState != req.DONE) { | 25 if (req.readyState != req.DONE) { |
| 19 return; | 26 return; |
| 20 } | 27 } |
| 21 | 28 |
| 22 shouldBe('req.status', '200'); | 29 shouldBe('req.status', '200'); |
| 23 shouldBeEqualToString('req.response', 'PASS'); | 30 shouldBeNonNull('req.response'); |
| 31 global.result = req.response.querySelector('p').innerText; |
| 32 shouldBeEqualToString('result', 'PASS'); |
| 33 |
| 24 resolve(); | 34 resolve(); |
| 25 }, reject); | 35 }, reject); |
| 26 req.send(null); | 36 req.send(null); |
| 27 }).catch(function(r) { | 37 }).catch(function(r) { |
| 28 testFailed('Set responseType before open(): Failed: ' + r); | 38 testFailed('Set responseType to document before open(): Failed: ' + r); |
| 29 }).then(function() { | 39 }).then(function() { |
| 30 return new Promise(function(resolve, reject) | 40 return new Promise(function(resolve, reject) |
| 31 { | 41 { |
| 32 global.req = new XMLHttpRequest; | 42 global.req = new XMLHttpRequest; |
| 33 req.responseType = 'blob'; | 43 req.responseType = 'blob'; |
| 34 req.open('GET', 'resources/get.txt', true); | 44 req.open('GET', 'resources/test.html', true); |
| 35 req.onreadystatechange = rejectIfThrown(function() { | 45 req.onreadystatechange = rejectIfThrown(function() { |
| 36 if (req.readyState != req.DONE) { | 46 if (req.readyState != req.DONE) { |
| 37 return; | 47 return; |
| 38 } | 48 } |
| 39 | 49 |
| 40 shouldBe('req.status', '200'); | 50 shouldBe('req.status', '200'); |
| 41 shouldBeEqualToString('req.response', 'PASS'); | 51 shouldBeNonNull('req.response'); |
| 52 global.result = req.response.querySelector('p').innerText; |
| 53 shouldBeEqualToString('result', 'PASS'); |
| 54 |
| 42 resolve(); | 55 resolve(); |
| 43 }, reject); | 56 }, reject); |
| 44 req.responseType = 'text'; | 57 req.responseType = 'document'; |
| 45 req.send(null); | 58 req.send(null); |
| 46 }); | 59 }); |
| 47 }).catch(function(r) { | 60 }).catch(function(r) { |
| 48 testFailed('Change responseType from blob to text between open() and send():
Failed: ' + r); | 61 testFailed('Change responseType from blob to document between open() and sen
d(): Failed: ' + r); |
| 49 }).then(function() { | 62 }).then(function() { |
| 50 return new Promise(function(resolve, reject) | 63 return new Promise(function(resolve, reject) |
| 51 { | 64 { |
| 52 global.req = new XMLHttpRequest; | 65 global.req = new XMLHttpRequest; |
| 53 req.responseType = 'blob'; | 66 req.responseType = 'blob'; |
| 54 req.open('GET', 'resources/get.txt', true); | 67 req.open('GET', 'resources/test.html', true); |
| 55 req.onreadystatechange = rejectIfThrown(function() { | 68 req.onreadystatechange = rejectIfThrown(function() { |
| 56 if (req.readyState == req.HEADERS_RECEIVED) { | 69 if (req.readyState == req.HEADERS_RECEIVED) { |
| 57 req.responseType = 'text'; | 70 req.responseType = 'document'; |
| 58 return; | 71 return; |
| 59 } else if (req.readyState != req.DONE) { | 72 } else if (req.readyState != req.DONE) { |
| 60 return; | 73 return; |
| 61 } | 74 } |
| 62 | 75 |
| 63 shouldBe('req.status', '200'); | 76 shouldBe('req.status', '200'); |
| 64 shouldBeEqualToString('req.response', 'PASS'); | 77 shouldBeNonNull('req.response'); |
| 78 global.result = req.response.querySelector('p').innerText; |
| 79 shouldBeEqualToString('result', 'PASS'); |
| 80 |
| 65 resolve(); | 81 resolve(); |
| 66 }, reject); | 82 }, reject); |
| 67 req.send(null); | 83 req.send(null); |
| 68 }); | 84 }); |
| 69 }).catch(function(r) { | 85 }).catch(function(r) { |
| 70 testFailed('Change responseType from blob to text in HEADERS_RECEIVED: Faile
d: ' + r); | 86 testFailed('Change responseType from blob to document in HEADERS_RECEIVED: F
ailed: ' + r); |
| 71 }).then(finishJSTest, finishJSTest); | 87 }).then(finishJSTest, finishJSTest); |
| 88 |
| 89 </script> |
| OLD | NEW |