| 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..7341521355693c9d2cc18bd0b347e6fb8485c0a5 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,16 @@
|
|
|
| 'use strict';
|
|
|
| -window.addEventListener('message', function(event) {
|
| - // Echo the data back to the source window.
|
| - event.source.postMessage(event.data, '*');
|
| -}, false);
|
| +// Tests don't start running until an async call to
|
| +// chrome.mimeHandlerPrivate.getStreamInfo() completes, so queue any messages
|
| +// received until that point.
|
| +var queuedMessages = [];
|
| +
|
| +function queueMessage(event) {
|
| + queuedMessages.push(event);
|
| +}
|
| +
|
| +window.addEventListener('message', queueMessage, false);
|
|
|
| var streamDetails;
|
|
|
| @@ -27,38 +33,50 @@ function fetchUrl(url) {
|
| });
|
| }
|
|
|
| +function expectSuccessfulRead(response) {
|
| + chrome.test.assertEq(200, response.status);
|
| + chrome.test.assertEq('content to read\n', response.data);
|
| +}
|
| +
|
| +function checkStreamDetails(name, embedded) {
|
| + chrome.test.assertTrue(streamDetails.originalUrl.indexOf(name) != -1);
|
| + chrome.test.assertEq('text/csv', streamDetails.mimeType);
|
| + chrome.test.assertTrue(streamDetails.tabId != -1);
|
| + chrome.test.assertEq(embedded, streamDetails.embedded);
|
| + chrome.test.assertEq('text/csv',
|
| + streamDetails.responseHeaders['Content-Type']);
|
| +}
|
| +
|
| var tests = [
|
| function testBasic() {
|
| - chrome.test.assertEq(
|
| - 'chrome-extension://oickdpebdnfbgkcaoklfcdhjniefkcji/testBasic.csv',
|
| - streamDetails.originalUrl);
|
| - chrome.test.assertEq('text/csv', streamDetails.mimeType);
|
| - chrome.test.assertTrue(streamDetails.tabId != -1);
|
| - chrome.test.assertFalse(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();
|
| - });
|
| + checkStreamDetails('testBasic.csv', false);
|
| + fetchUrl(streamDetails.streamUrl)
|
| + .then(expectSuccessfulRead)
|
| + .then(chrome.test.succeed);
|
| },
|
|
|
| function testEmbedded() {
|
| - chrome.test.assertEq(
|
| - 'chrome-extension://oickdpebdnfbgkcaoklfcdhjniefkcji/testEmbedded.csv',
|
| - streamDetails.originalUrl);
|
| - 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();
|
| + checkStreamDetails('testEmbedded.csv', true);
|
| + fetchUrl(streamDetails.streamUrl)
|
| + .then(expectSuccessfulRead)
|
| + .then(chrome.test.succeed);
|
| + },
|
| +
|
| + function testIframe() {
|
| + checkStreamDetails('testIframe.csv', true);
|
| + 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() {
|
| + checkStreamDetails('testAbort.csv', false);
|
| chrome.mimeHandlerPrivate.abortStream(function() {
|
| fetchUrl(streamDetails.streamUrl).then(function(response) {
|
| chrome.test.assertEq(404, response.status);
|
| @@ -67,6 +85,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.shift());
|
| + }
|
| +
|
| + }
|
| ];
|
|
|
| var testsByName = {};
|
| @@ -83,6 +124,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]]);
|
| + }
|
| });
|
|
|