Chromium Code Reviews| Index: chrome/test/data/extensions/api_test/mime_handler_view/embedded.js |
| diff --git a/chrome/test/data/extensions/api_test/mime_handler_view/embedded.js b/chrome/test/data/extensions/api_test/mime_handler_view/embedded.js |
| index be6582391b15164c16d1a7d1ff66183a84c1d329..c6d887e92bcb3a219f1bfea25a92968faf9f6248 100644 |
| --- a/chrome/test/data/extensions/api_test/mime_handler_view/embedded.js |
| +++ b/chrome/test/data/extensions/api_test/mime_handler_view/embedded.js |
| @@ -4,10 +4,13 @@ |
| 'use strict'; |
| -window.addEventListener('message', function(event) { |
| - // Echo the data back to the source window. |
| - event.source.postMessage(event.data, '*'); |
| -}, false); |
| +var queuedMessages = []; |
|
raymes
2015/01/28 00:54:58
nit: Please add a comment about why messages are q
Sam McNally
2015/01/28 01:54:43
Done.
|
| + |
| +function queueMessage(event) { |
| + queuedMessages.push(event); |
| +} |
| + |
| +window.addEventListener('message', queueMessage, false); |
| var streamDetails; |
| @@ -27,35 +30,51 @@ function fetchUrl(url) { |
| }); |
| } |
| +function expectSuccessfulRead(response) { |
| + chrome.test.assertEq(200, response.status); |
| + chrome.test.assertEq('content to read\n', response.data); |
| +} |
| + |
| var tests = [ |
| function testBasic() { |
| - chrome.test.assertEq( |
| - 'chrome-extension://oickdpebdnfbgkcaoklfcdhjniefkcji/testBasic.csv', |
| - streamDetails.originalUrl); |
| + chrome.test.assertTrue( |
| + streamDetails.originalUrl.indexOf('testBasic.csv') != -1); |
| chrome.test.assertEq('text/csv', streamDetails.mimeType); |
| chrome.test.assertTrue(streamDetails.tabId != -1); |
| chrome.test.assertFalse(streamDetails.embedded); |
|
raymes
2015/01/28 00:54:59
Can we also do a basic check on the headers now th
Sam McNally
2015/01/28 01:54:43
Done.
|
| - fetchUrl(streamDetails.streamUrl).then(function(response) { |
| - chrome.test.assertEq(200, response.status); |
| - chrome.test.assertEq('content to read\n', response.data); |
| - chrome.test.succeed(); |
| - }); |
| + fetchUrl(streamDetails.streamUrl) |
| + .then(expectSuccessfulRead) |
| + .then(chrome.test.succeed); |
| }, |
| function testEmbedded() { |
| - chrome.test.assertEq( |
| - 'chrome-extension://oickdpebdnfbgkcaoklfcdhjniefkcji/testEmbedded.csv', |
| - streamDetails.originalUrl); |
| + chrome.test.assertTrue( |
| + streamDetails.originalUrl.indexOf('testEmbedded.csv') != -1); |
| chrome.test.assertEq('text/csv', streamDetails.mimeType); |
| chrome.test.assertTrue(streamDetails.tabId != -1); |
| chrome.test.assertTrue(streamDetails.embedded); |
| - fetchUrl(streamDetails.streamUrl).then(function(response) { |
| - chrome.test.assertEq(200, response.status); |
| - chrome.test.assertEq('content to read\n', response.data); |
| - chrome.test.succeed(); |
| + fetchUrl(streamDetails.streamUrl) |
| + .then(expectSuccessfulRead) |
| + .then(chrome.test.succeed); |
| + }, |
| + |
| + function testIframe() { |
| + chrome.test.assertTrue( |
| + streamDetails.originalUrl.indexOf('testIframe.csv') != -1); |
| + chrome.test.assertEq('text/csv', streamDetails.mimeType); |
| + chrome.test.assertTrue(streamDetails.tabId != -1); |
| + chrome.test.assertTrue(streamDetails.embedded); |
| + var printMessageArrived = new Promise(function(resolve, reject) { |
| + window.addEventListener('message', function(event) { |
| + chrome.test.assertEq('print', event.data.type); |
| + resolve(); |
| + }, false); |
| }); |
| + var contentRead = fetchUrl(streamDetails.streamUrl) |
| + .then(expectSuccessfulRead); |
| + Promise.all([printMessageArrived, contentRead]).then(chrome.test.succeed); |
| }, |
| function testAbort() { |
| @@ -67,6 +86,29 @@ var tests = [ |
| }); |
| }); |
| }, |
| + |
| + function testPostMessage() { |
| + var expectedMessages = ['hey', 100, 25.0]; |
| + var messagesReceived = 0; |
| + function handleMessage(event) { |
| + if (event.data == 'succeed' && |
| + messagesReceived == expectedMessages.length) { |
| + chrome.test.succeed(); |
| + } else if (event.data == 'fail') { |
| + chrome.test.fail(); |
| + } else if (event.data == expectedMessages[messagesReceived]) { |
| + event.source.postMessage(event.data, '*'); |
| + messagesReceived++; |
| + } else { |
| + chrome.test.fail('unexpected message ' + event.data); |
| + } |
| + } |
| + window.addEventListener('message', handleMessage, false); |
| + while (queuedMessages.length) { |
| + handleMessage(queuedMessages.unshift()); |
| + } |
| + |
| + } |
| ]; |
| var testsByName = {}; |
| @@ -83,6 +125,8 @@ chrome.mimeHandlerPrivate.getStreamInfo(function(streamInfo) { |
| var urlComponents = streamInfo.originalUrl.split('/'); |
| var test = urlComponents[urlComponents.length - 1].split('.')[0]; |
| streamDetails = streamInfo; |
| - if (testsByName[test]) |
| + if (testsByName[test]) { |
| + window.removeEventListener('message', queueMessage); |
| chrome.test.runTests([testsByName[test]]); |
| + } |
| }); |