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

Side by Side 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, 10 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 unified diff | Download patch
OLDNEW
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 window.addEventListener('message', function(event) { 7 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.
8 // Echo the data back to the source window. 8
9 event.source.postMessage(event.data, '*'); 9 function queueMessage(event) {
10 }, false); 10 queuedMessages.push(event);
11 }
12
13 window.addEventListener('message', queueMessage, false);
11 14
12 var streamDetails; 15 var streamDetails;
13 16
14 function fetchUrl(url) { 17 function fetchUrl(url) {
15 return new Promise(function(resolve, reject) { 18 return new Promise(function(resolve, reject) {
16 var request = new XMLHttpRequest(); 19 var request = new XMLHttpRequest();
17 request.onreadystatechange = function() { 20 request.onreadystatechange = function() {
18 if (request.readyState == 4) { 21 if (request.readyState == 4) {
19 resolve({ 22 resolve({
20 status: request.status, 23 status: request.status,
21 data: request.responseText, 24 data: request.responseText,
22 }); 25 });
23 } 26 }
24 }; 27 };
25 request.open('GET', streamDetails.streamUrl, true); 28 request.open('GET', streamDetails.streamUrl, true);
26 request.send(); 29 request.send();
27 }); 30 });
28 } 31 }
29 32
33 function expectSuccessfulRead(response) {
34 chrome.test.assertEq(200, response.status);
35 chrome.test.assertEq('content to read\n', response.data);
36 }
37
30 var tests = [ 38 var tests = [
31 function testBasic() { 39 function testBasic() {
32 chrome.test.assertEq( 40 chrome.test.assertTrue(
33 'chrome-extension://oickdpebdnfbgkcaoklfcdhjniefkcji/testBasic.csv', 41 streamDetails.originalUrl.indexOf('testBasic.csv') != -1);
34 streamDetails.originalUrl);
35 chrome.test.assertEq('text/csv', streamDetails.mimeType); 42 chrome.test.assertEq('text/csv', streamDetails.mimeType);
36 chrome.test.assertTrue(streamDetails.tabId != -1); 43 chrome.test.assertTrue(streamDetails.tabId != -1);
37 chrome.test.assertFalse(streamDetails.embedded); 44 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.
38 45
39 fetchUrl(streamDetails.streamUrl).then(function(response) { 46 fetchUrl(streamDetails.streamUrl)
40 chrome.test.assertEq(200, response.status); 47 .then(expectSuccessfulRead)
41 chrome.test.assertEq('content to read\n', response.data); 48 .then(chrome.test.succeed);
42 chrome.test.succeed();
43 });
44 }, 49 },
45 50
46 function testEmbedded() { 51 function testEmbedded() {
47 chrome.test.assertEq( 52 chrome.test.assertTrue(
48 'chrome-extension://oickdpebdnfbgkcaoklfcdhjniefkcji/testEmbedded.csv', 53 streamDetails.originalUrl.indexOf('testEmbedded.csv') != -1);
49 streamDetails.originalUrl);
50 chrome.test.assertEq('text/csv', streamDetails.mimeType); 54 chrome.test.assertEq('text/csv', streamDetails.mimeType);
51 chrome.test.assertTrue(streamDetails.tabId != -1); 55 chrome.test.assertTrue(streamDetails.tabId != -1);
52 chrome.test.assertTrue(streamDetails.embedded); 56 chrome.test.assertTrue(streamDetails.embedded);
53 57
54 fetchUrl(streamDetails.streamUrl).then(function(response) { 58 fetchUrl(streamDetails.streamUrl)
55 chrome.test.assertEq(200, response.status); 59 .then(expectSuccessfulRead)
56 chrome.test.assertEq('content to read\n', response.data); 60 .then(chrome.test.succeed);
57 chrome.test.succeed(); 61 },
62
63 function testIframe() {
64 chrome.test.assertTrue(
65 streamDetails.originalUrl.indexOf('testIframe.csv') != -1);
66 chrome.test.assertEq('text/csv', streamDetails.mimeType);
67 chrome.test.assertTrue(streamDetails.tabId != -1);
68 chrome.test.assertTrue(streamDetails.embedded);
69 var printMessageArrived = new Promise(function(resolve, reject) {
70 window.addEventListener('message', function(event) {
71 chrome.test.assertEq('print', event.data.type);
72 resolve();
73 }, false);
58 }); 74 });
75 var contentRead = fetchUrl(streamDetails.streamUrl)
76 .then(expectSuccessfulRead);
77 Promise.all([printMessageArrived, contentRead]).then(chrome.test.succeed);
59 }, 78 },
60 79
61 function testAbort() { 80 function testAbort() {
62 chrome.mimeHandlerPrivate.abortStream(function() { 81 chrome.mimeHandlerPrivate.abortStream(function() {
63 fetchUrl(streamDetails.streamUrl).then(function(response) { 82 fetchUrl(streamDetails.streamUrl).then(function(response) {
64 chrome.test.assertEq(404, response.status); 83 chrome.test.assertEq(404, response.status);
65 chrome.test.assertEq('', response.data); 84 chrome.test.assertEq('', response.data);
66 chrome.test.succeed(); 85 chrome.test.succeed();
67 }); 86 });
68 }); 87 });
69 }, 88 },
89
90 function testPostMessage() {
91 var expectedMessages = ['hey', 100, 25.0];
92 var messagesReceived = 0;
93 function handleMessage(event) {
94 if (event.data == 'succeed' &&
95 messagesReceived == expectedMessages.length) {
96 chrome.test.succeed();
97 } else if (event.data == 'fail') {
98 chrome.test.fail();
99 } else if (event.data == expectedMessages[messagesReceived]) {
100 event.source.postMessage(event.data, '*');
101 messagesReceived++;
102 } else {
103 chrome.test.fail('unexpected message ' + event.data);
104 }
105 }
106 window.addEventListener('message', handleMessage, false);
107 while (queuedMessages.length) {
108 handleMessage(queuedMessages.unshift());
109 }
110
111 }
70 ]; 112 ];
71 113
72 var testsByName = {}; 114 var testsByName = {};
73 for (let i = 0; i < tests.length; i++) { 115 for (let i = 0; i < tests.length; i++) {
74 testsByName[tests[i].name] = tests[i]; 116 testsByName[tests[i].name] = tests[i];
75 } 117 }
76 118
77 chrome.mimeHandlerPrivate.getStreamInfo(function(streamInfo) { 119 chrome.mimeHandlerPrivate.getStreamInfo(function(streamInfo) {
78 if (!streamInfo) 120 if (!streamInfo)
79 return; 121 return;
80 122
81 // If the name of the file we're handling matches the name of a test, run that 123 // If the name of the file we're handling matches the name of a test, run that
82 // test. 124 // test.
83 var urlComponents = streamInfo.originalUrl.split('/'); 125 var urlComponents = streamInfo.originalUrl.split('/');
84 var test = urlComponents[urlComponents.length - 1].split('.')[0]; 126 var test = urlComponents[urlComponents.length - 1].split('.')[0];
85 streamDetails = streamInfo; 127 streamDetails = streamInfo;
86 if (testsByName[test]) 128 if (testsByName[test]) {
129 window.removeEventListener('message', queueMessage);
87 chrome.test.runTests([testsByName[test]]); 130 chrome.test.runTests([testsByName[test]]);
131 }
88 }); 132 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698