Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1907)

Unified Diff: chrome/test/data/extensions/api_test/mime_handler_view/embedded.js

Issue 878773002: Add a test for mime handler view iframes and make them work on Windows. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/chrome_tests.gypi ('k') | chrome/test/data/extensions/api_test/mime_handler_view/manifest.json » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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]]);
+ }
});
« no previous file with comments | « chrome/chrome_tests.gypi ('k') | chrome/test/data/extensions/api_test/mime_handler_view/manifest.json » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698