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

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

Issue 1091253004: Fix MimeHandlerView plugin loading for data: URLs (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 8 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
(Empty)
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
3 // found in the LICENSE file.
4
5 'use strict';
6
7 // Tests don't start running until an async call to
8 // chrome.mimeHandlerPrivate.getStreamInfo() completes, so queue any messages
9 // received until that point.
10 var queuedMessages = [];
11
12 function queueMessage(event) {
13 queuedMessages.push(event);
14 }
15
16 window.addEventListener('message', queueMessage, false);
17
18 var streamDetails;
19
20 function fetchUrl(url) {
21 return new Promise(function(resolve, reject) {
22 var request = new XMLHttpRequest();
23 request.onreadystatechange = function() {
24 if (request.readyState == 4) {
25 resolve({
26 status: request.status,
27 data: request.responseText,
28 });
29 }
30 };
31 request.open('GET', streamDetails.streamUrl, true);
32 request.send();
33 });
34 }
35
36 function expectSuccessfulRead(response) {
37 chrome.test.assertEq(200, response.status);
38 chrome.test.assertEq('content to read\n', response.data);
39 }
40
41 function checkStreamDetails(name, embedded) {
42 chrome.test.assertTrue(streamDetails.originalUrl.indexOf(name) != -1);
43 chrome.test.assertEq('text/csv', streamDetails.mimeType);
44 chrome.test.assertTrue(streamDetails.tabId != -1);
45 chrome.test.assertEq(embedded, streamDetails.embedded);
46 chrome.test.assertEq('text/csv',
47 streamDetails.responseHeaders['Content-Type']);
48 }
49
50 var tests = [
51 function testBasic() {
52 checkStreamDetails('testBasic.csv', false);
53 fetchUrl(streamDetails.streamUrl)
54 .then(expectSuccessfulRead)
55 .then(chrome.test.succeed);
56 },
57
58 function testEmbedded() {
59 checkStreamDetails('testEmbedded.csv', true);
60 fetchUrl(streamDetails.streamUrl)
61 .then(expectSuccessfulRead)
62 .then(chrome.test.succeed);
63 },
64
65 function testIframe() {
66 checkStreamDetails('testIframe.csv', true);
67 var printMessageArrived = new Promise(function(resolve, reject) {
68 window.addEventListener('message', function(event) {
69 chrome.test.assertEq('print', event.data.type);
70 resolve();
71 }, false);
72 });
73 var contentRead = fetchUrl(streamDetails.streamUrl)
74 .then(expectSuccessfulRead);
75 Promise.all([printMessageArrived, contentRead]).then(chrome.test.succeed);
76 },
77
78 function testAbort() {
79 checkStreamDetails('testAbort.csv', false);
80 chrome.mimeHandlerPrivate.abortStream(function() {
81 fetchUrl(streamDetails.streamUrl).then(function(response) {
82 chrome.test.assertEq(404, response.status);
83 chrome.test.assertEq('', response.data);
84 chrome.test.succeed();
85 });
86 });
87 },
88
89 function testNonAsciiHeaders() {
90 checkStreamDetails('testNonAsciiHeaders.csv', false);
91 chrome.test.assertEq(undefined,
92 streamDetails.responseHeaders['Content-Disposition']);
93 chrome.test.assertEq(undefined,
94 streamDetails.responseHeaders['ΓΌ']);
95 chrome.test.succeed();
96 },
97
98 function testPostMessage() {
99 var expectedMessages = ['hey', 100, 25.0];
100 var messagesReceived = 0;
101 function handleMessage(event) {
102 if (event.data == 'succeed' &&
103 messagesReceived == expectedMessages.length) {
104 chrome.test.succeed();
105 } else if (event.data == 'fail') {
106 chrome.test.fail();
107 } else if (event.data == expectedMessages[messagesReceived]) {
108 event.source.postMessage(event.data, '*');
109 messagesReceived++;
110 } else {
111 chrome.test.fail('unexpected message ' + event.data);
112 }
113 }
114 window.addEventListener('message', handleMessage, false);
115 while (queuedMessages.length) {
116 handleMessage(queuedMessages.shift());
117 }
118
119 }
120 ];
121
122 var testsByName = {};
123 for (let i = 0; i < tests.length; i++) {
124 testsByName[tests[i].name] = tests[i];
125 }
126
127 chrome.mimeHandlerPrivate.getStreamInfo(function(streamInfo) {
128 if (!streamInfo)
129 return;
130
131 // If the name of the file we're handling matches the name of a test, run that
132 // test.
133 var urlComponents = streamInfo.originalUrl.split('/');
134 var test = urlComponents[urlComponents.length - 1].split('.')[0];
135 streamDetails = streamInfo;
136 if (testsByName[test]) {
137 window.removeEventListener('message', queueMessage);
138 chrome.test.runTests([testsByName[test]]);
139 }
140 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698