| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 'use strict'; | 5 'use strict'; |
| 6 | 6 |
| 7 // Tests don't start running until an async call to | 7 // Tests don't start running until an async call to |
| 8 // chrome.mimeHandlerPrivate.getStreamInfo() completes, so queue any messages | 8 // chrome.mimeHandlerPrivate.getStreamInfo() completes, so queue any messages |
| 9 // received until that point. | 9 // received until that point. |
| 10 var queuedMessages = []; | 10 var queuedMessages = []; |
| 11 | 11 |
| 12 function queueMessage(event) { | 12 function queueMessage(event) { |
| 13 queuedMessages.push(event); | 13 queuedMessages.push(event); |
| 14 } | 14 } |
| 15 | 15 |
| 16 window.addEventListener('message', queueMessage, false); | 16 window.addEventListener('message', queueMessage, false); |
| 17 | 17 |
| 18 var streamDetails; | 18 var streamDetails; |
| 19 | 19 |
| 20 function fetchUrl(url) { | 20 function fetchUrl(url) { |
| 21 return new Promise(function(resolve, reject) { | 21 return new Promise(function(resolve, reject) { |
| 22 var request = new XMLHttpRequest(); | 22 var request = new XMLHttpRequest(); |
| 23 request.onreadystatechange = function() { | 23 request.onload = function() { |
| 24 if (request.readyState == 4) { | 24 if (request.readyState == 4) { |
| 25 resolve({ | 25 resolve({ |
| 26 status: request.status, | 26 status: request.status, |
| 27 data: request.responseText, | 27 data: request.responseText, |
| 28 }); | 28 }); |
| 29 } | 29 } |
| 30 }; | 30 }; |
| 31 request.onerror = function(e) { |
| 32 // Network error. |
| 33 resolve({ |
| 34 status: request.status, |
| 35 data: 'error', |
| 36 }); |
| 37 } |
| 31 request.open('GET', streamDetails.streamUrl, true); | 38 request.open('GET', streamDetails.streamUrl, true); |
| 32 request.send(); | 39 request.send(); |
| 33 }); | 40 }); |
| 34 } | 41 } |
| 35 | 42 |
| 36 function expectSuccessfulRead(response) { | 43 function expectSuccessfulRead(response) { |
| 37 chrome.test.assertEq(200, response.status); | 44 chrome.test.assertEq(200, response.status); |
| 38 chrome.test.assertEq('content to read\n', response.data); | 45 chrome.test.assertEq('content to read\n', response.data); |
| 39 } | 46 } |
| 40 | 47 |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 81 }); | 88 }); |
| 82 var contentRead = fetchUrl(streamDetails.streamUrl) | 89 var contentRead = fetchUrl(streamDetails.streamUrl) |
| 83 .then(expectSuccessfulRead); | 90 .then(expectSuccessfulRead); |
| 84 Promise.all([printMessageArrived, contentRead]).then(chrome.test.succeed); | 91 Promise.all([printMessageArrived, contentRead]).then(chrome.test.succeed); |
| 85 }, | 92 }, |
| 86 | 93 |
| 87 function testAbort() { | 94 function testAbort() { |
| 88 checkStreamDetails('testAbort.csv', false); | 95 checkStreamDetails('testAbort.csv', false); |
| 89 chrome.mimeHandlerPrivate.abortStream(function() { | 96 chrome.mimeHandlerPrivate.abortStream(function() { |
| 90 fetchUrl(streamDetails.streamUrl).then(function(response) { | 97 fetchUrl(streamDetails.streamUrl).then(function(response) { |
| 91 chrome.test.assertEq(404, response.status); | 98 chrome.test.assertEq(0, response.status); |
| 92 chrome.test.assertEq('', response.data); | 99 chrome.test.assertEq('error', response.data); |
| 93 chrome.test.succeed(); | 100 chrome.test.succeed(); |
| 94 }); | 101 }); |
| 95 }); | 102 }); |
| 96 }, | 103 }, |
| 97 | 104 |
| 98 function testNonAsciiHeaders() { | 105 function testNonAsciiHeaders() { |
| 99 checkStreamDetails('testNonAsciiHeaders.csv', false); | 106 checkStreamDetails('testNonAsciiHeaders.csv', false); |
| 100 chrome.test.assertEq(undefined, | 107 chrome.test.assertEq(undefined, |
| 101 streamDetails.responseHeaders['Content-Disposition']); | 108 streamDetails.responseHeaders['Content-Disposition']); |
| 102 chrome.test.assertEq(undefined, | 109 chrome.test.assertEq(undefined, |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 169 // Run the test for data URLs. | 176 // Run the test for data URLs. |
| 170 if (streamInfo.originalUrl.startsWith("data:")) { | 177 if (streamInfo.originalUrl.startsWith("data:")) { |
| 171 window.removeEventListener('message', queueMessage); | 178 window.removeEventListener('message', queueMessage); |
| 172 // Long data URLs get truncated. | 179 // Long data URLs get truncated. |
| 173 if (streamInfo.originalUrl == "data:") | 180 if (streamInfo.originalUrl == "data:") |
| 174 chrome.test.runTests([testsByName['testDataUrlLong']]); | 181 chrome.test.runTests([testsByName['testDataUrlLong']]); |
| 175 else | 182 else |
| 176 chrome.test.runTests([testsByName['testDataUrl']]); | 183 chrome.test.runTests([testsByName['testDataUrl']]); |
| 177 } | 184 } |
| 178 }); | 185 }); |
| OLD | NEW |