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

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

Issue 2409073002: Use mojo from the PDF extension instead of using an extension API.
Patch Set: Created 4 years, 2 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
« no previous file with comments | « chrome/browser/resources/pdf/browser_api.js ('k') | extensions/common/api/BUILD.gn » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 // Tests don't start running until an async call to 7 // Tests don't start running until an async call to
8 // chrome.mimeHandlerPrivate.getStreamInfo() completes, so queue any messages 8 // chrome.mimeHandlerPrivate.getStreamInfo() completes, so queue any messages
9 // received until that point. 9 // received until that point.
10 var queuedMessages = []; 10 var queuedMessages = [];
11 11
12 function queueMessage(event) { 12 function queueMessage(event) {
13 queuedMessages.push(event); 13 queuedMessages.push(event);
14 } 14 }
15 15
16 window.addEventListener('message', queueMessage, false); 16 window.addEventListener('message', queueMessage, false);
17 17
18 let mimeHandlerPromise = (async function() {
19 let [frameInterfaces, mojom, connectionModule] = await Promise.all([
20 chrome.mojoPrivate.requireAsync('content/public/renderer/frame_interfaces'),
21 chrome.mojoPrivate.requireAsync('extensions/common/api/mime_handler.mojom'),
22 chrome.mojoPrivate.requireAsync('mojo/public/js/connection'),
23 ]);
24 return connectionModule.bindHandleToProxy(
25 frameInterfaces.getInterface(mojom.MimeHandlerService.name),
26 mojom.MimeHandlerService);
27 })();
28
18 var streamDetails; 29 var streamDetails;
19 30
20 function fetchUrl(url) { 31 function fetchUrl(url) {
21 return new Promise(function(resolve, reject) { 32 return new Promise(function(resolve, reject) {
22 var request = new XMLHttpRequest(); 33 var request = new XMLHttpRequest();
23 request.onreadystatechange = function() { 34 request.onreadystatechange = function() {
24 if (request.readyState == 4) { 35 if (request.readyState == 4) {
25 resolve({ 36 resolve({
26 status: request.status, 37 status: request.status,
27 data: request.responseText, 38 data: request.responseText,
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
77 window.addEventListener('message', function(event) { 88 window.addEventListener('message', function(event) {
78 chrome.test.assertEq('print', event.data.type); 89 chrome.test.assertEq('print', event.data.type);
79 resolve(); 90 resolve();
80 }, false); 91 }, false);
81 }); 92 });
82 var contentRead = fetchUrl(streamDetails.streamUrl) 93 var contentRead = fetchUrl(streamDetails.streamUrl)
83 .then(expectSuccessfulRead); 94 .then(expectSuccessfulRead);
84 Promise.all([printMessageArrived, contentRead]).then(chrome.test.succeed); 95 Promise.all([printMessageArrived, contentRead]).then(chrome.test.succeed);
85 }, 96 },
86 97
87 function testAbort() { 98 async function testAbort() {
88 checkStreamDetails('testAbort.csv', false); 99 checkStreamDetails('testAbort.csv', false);
89 chrome.mimeHandlerPrivate.abortStream(function() { 100
90 fetchUrl(streamDetails.streamUrl).then(function(response) { 101 let mimeHandlerInterface = await mimeHandlerPromise;
91 chrome.test.assertEq(404, response.status); 102 await mimeHandlerInterface.abortStream();
92 chrome.test.assertEq('', response.data); 103 fetchUrl(streamDetails.streamUrl).then(function(response) {
93 chrome.test.succeed(); 104 chrome.test.assertEq(404, response.status);
94 }); 105 chrome.test.assertEq('', response.data);
106 chrome.test.succeed();
95 }); 107 });
96 }, 108 },
97 109
98 function testNonAsciiHeaders() { 110 function testNonAsciiHeaders() {
99 checkStreamDetails('testNonAsciiHeaders.csv', false); 111 checkStreamDetails('testNonAsciiHeaders.csv', false);
100 chrome.test.assertEq(undefined, 112 chrome.test.assertEq(undefined,
101 streamDetails.responseHeaders['Content-Disposition']); 113 streamDetails.responseHeaders['Content-Disposition']);
102 chrome.test.assertEq(undefined, 114 chrome.test.assertEq(undefined,
103 streamDetails.responseHeaders['ü']); 115 streamDetails.responseHeaders['ü']);
104 chrome.test.succeed(); 116 chrome.test.succeed();
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
145 checkStreamDetails('testResizeBeforeAttach.csv', true); 157 checkStreamDetails('testResizeBeforeAttach.csv', true);
146 chrome.test.succeed(); 158 chrome.test.succeed();
147 } 159 }
148 ]; 160 ];
149 161
150 var testsByName = {}; 162 var testsByName = {};
151 for (let i = 0; i < tests.length; i++) { 163 for (let i = 0; i < tests.length; i++) {
152 testsByName[tests[i].name] = tests[i]; 164 testsByName[tests[i].name] = tests[i];
153 } 165 }
154 166
155 chrome.mimeHandlerPrivate.getStreamInfo(function(streamInfo) { 167 function constructStreamInfoDict_(streamInfo) {
168 var headers = {};
169 for (var header of streamInfo.response_headers) {
170 headers[header[0]] = header[1];
171 }
172 return {
173 mimeType: streamInfo.mime_type,
174 originalUrl: streamInfo.original_url,
175 streamUrl: streamInfo.stream_url,
176 tabId: streamInfo.tab_id,
177 embedded: !!streamInfo.embedded,
178 responseHeaders: headers,
179 };
180 }
181
182 (async function() {
183 let mimeHandlerInterface = await mimeHandlerPromise;
184 let streamInfo = constructStreamInfoDict_(
185 (await mimeHandlerInterface.getStreamInfo()).stream_info);
156 if (!streamInfo) 186 if (!streamInfo)
157 return; 187 return;
158 188
159 // If the name of the file we're handling matches the name of a test, run that 189 // If the name of the file we're handling matches the name of a test, run that
160 // test. 190 // test.
161 var urlComponents = streamInfo.originalUrl.split('/'); 191 var urlComponents = streamInfo.originalUrl.split('/');
162 var test = urlComponents[urlComponents.length - 1].split('.')[0]; 192 var test = urlComponents[urlComponents.length - 1].split('.')[0];
163 streamDetails = streamInfo; 193 streamDetails = streamInfo;
164 if (testsByName[test]) { 194 if (testsByName[test]) {
165 window.removeEventListener('message', queueMessage); 195 window.removeEventListener('message', queueMessage);
166 chrome.test.runTests([testsByName[test]]); 196 chrome.test.runTests([testsByName[test]]);
167 } 197 }
168 198
169 // Run the test for data URLs. 199 // Run the test for data URLs.
170 if (streamInfo.originalUrl.startsWith("data:")) { 200 if (streamInfo.originalUrl.startsWith("data:")) {
171 window.removeEventListener('message', queueMessage); 201 window.removeEventListener('message', queueMessage);
172 // Long data URLs get truncated. 202 // Long data URLs get truncated.
173 if (streamInfo.originalUrl == "data:") 203 if (streamInfo.originalUrl == "data:")
174 chrome.test.runTests([testsByName['testDataUrlLong']]); 204 chrome.test.runTests([testsByName['testDataUrlLong']]);
175 else 205 else
176 chrome.test.runTests([testsByName['testDataUrl']]); 206 chrome.test.runTests([testsByName['testDataUrl']]);
177 } 207 }
178 }); 208 })();
OLDNEW
« no previous file with comments | « chrome/browser/resources/pdf/browser_api.js ('k') | extensions/common/api/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698