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'; |
| 6 |
5 window.addEventListener('message', function(event) { | 7 window.addEventListener('message', function(event) { |
6 // Echo the data back to the source window. | 8 // Echo the data back to the source window. |
7 event.source.postMessage(event.data, '*'); | 9 event.source.postMessage(event.data, '*'); |
8 }, false); | 10 }, false); |
| 11 |
| 12 var streamDetails; |
| 13 |
| 14 function fetchUrl(url) { |
| 15 return new Promise(function(resolve, reject) { |
| 16 var request = new XMLHttpRequest(); |
| 17 request.onreadystatechange = function() { |
| 18 if (request.readyState == 4) { |
| 19 resolve({ |
| 20 status: request.status, |
| 21 data: request.responseText, |
| 22 }); |
| 23 } |
| 24 }; |
| 25 request.open('GET', streamDetails.streamUrl, true); |
| 26 request.send(); |
| 27 }); |
| 28 } |
| 29 |
| 30 var tests = [ |
| 31 function testBasic() { |
| 32 chrome.test.assertEq( |
| 33 'chrome-extension://oickdpebdnfbgkcaoklfcdhjniefkcji/testBasic.csv', |
| 34 streamDetails.originalUrl); |
| 35 chrome.test.assertEq('text/csv', streamDetails.mimeType); |
| 36 chrome.test.assertTrue(streamDetails.tabId != -1); |
| 37 chrome.test.assertFalse(streamDetails.embedded); |
| 38 |
| 39 fetchUrl(streamDetails.streamUrl).then(function(response) { |
| 40 chrome.test.assertEq(200, response.status); |
| 41 chrome.test.assertEq('content to read\n', response.data); |
| 42 chrome.test.succeed(); |
| 43 }); |
| 44 }, |
| 45 |
| 46 function testEmbedded() { |
| 47 chrome.test.assertEq( |
| 48 'chrome-extension://oickdpebdnfbgkcaoklfcdhjniefkcji/testEmbedded.csv', |
| 49 streamDetails.originalUrl); |
| 50 chrome.test.assertEq('text/csv', streamDetails.mimeType); |
| 51 chrome.test.assertTrue(streamDetails.tabId != -1); |
| 52 chrome.test.assertTrue(streamDetails.embedded); |
| 53 |
| 54 fetchUrl(streamDetails.streamUrl).then(function(response) { |
| 55 chrome.test.assertEq(200, response.status); |
| 56 chrome.test.assertEq('content to read\n', response.data); |
| 57 chrome.test.succeed(); |
| 58 }); |
| 59 }, |
| 60 |
| 61 function testAbort() { |
| 62 chrome.mimeHandler.abortStream(function() { |
| 63 fetchUrl(streamDetails.streamUrl).then(function(response) { |
| 64 chrome.test.assertEq(404, response.status); |
| 65 chrome.test.assertEq('', response.data); |
| 66 chrome.test.succeed(); |
| 67 }); |
| 68 }); |
| 69 }, |
| 70 ]; |
| 71 |
| 72 var testsByName = {}; |
| 73 for (let i = 0; i < tests.length; i++) { |
| 74 testsByName[tests[i].name] = tests[i]; |
| 75 } |
| 76 |
| 77 chrome.mimeHandler.getStreamInfo(function(streamInfo) { |
| 78 if (!streamInfo) |
| 79 return; |
| 80 |
| 81 // If the name of the file we're handling matches the name of a test, run that |
| 82 // test. |
| 83 var urlComponents = streamInfo.originalUrl.split('/'); |
| 84 var test = urlComponents[urlComponents.length - 1].split('.')[0]; |
| 85 streamDetails = streamInfo; |
| 86 if (testsByName[test]) |
| 87 chrome.test.runTests([testsByName[test]]); |
| 88 }); |
OLD | NEW |