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

Side by Side Diff: ui/file_manager/file_manager/foreground/js/quick_view_controller.js

Issue 2540863004: Quick View: Support pdf and text preview. (Closed)
Patch Set: Fix nits. Created 4 years 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 | « ui/file_manager/file_manager/foreground/elements/files_quick_view.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2016 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2016 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 /** 5 /**
6 * Controller for QuickView. 6 * Controller for QuickView.
7 * 7 *
8 * @param {!FilesQuickView} quickView 8 * @param {!FilesQuickView} quickView
9 * @param {!MetadataModel} metadataModel File system metadata. 9 * @param {!MetadataModel} metadataModel File system metadata.
10 * @param {!FileSelectionHandler} selectionHandler 10 * @param {!FileSelectionHandler} selectionHandler
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
196 196
197 /** 197 /**
198 * Update quick view using file entry and loaded metadata. 198 * Update quick view using file entry and loaded metadata.
199 * 199 *
200 * @param {!FileEntry} entry 200 * @param {!FileEntry} entry
201 * @param {Array<MetadataItem>} items 201 * @param {Array<MetadataItem>} items
202 * @private 202 * @private
203 */ 203 */
204 QuickViewController.prototype.onMetadataLoaded_ = function(entry, items) { 204 QuickViewController.prototype.onMetadataLoaded_ = function(entry, items) {
205 return this.getQuickViewParameters_(entry, items).then(function(params) { 205 return this.getQuickViewParameters_(entry, items).then(function(params) {
206 this.quickView_.contentUrl = params.contentUrl || '';
207 this.quickView_.type = params.type || ''; 206 this.quickView_.type = params.type || '';
208 this.quickView_.filePath = params.filePath || ''; 207 this.quickView_.filePath = params.filePath || '';
208 this.quickView_.contentUrl = params.contentUrl || '';
209 this.quickView_.videoPoster = params.videoPoster || ''; 209 this.quickView_.videoPoster = params.videoPoster || '';
210 this.quickView_.audioArtwork = params.audioArtwork || ''; 210 this.quickView_.audioArtwork = params.audioArtwork || '';
211 this.quickView_.autoplay = params.autoplay || false; 211 this.quickView_.autoplay = params.autoplay || false;
212 this.quickView_.browsable = params.browsable || false;
212 }.bind(this)); 213 }.bind(this));
213 }; 214 };
214 215
215 /** 216 /**
216 * @typedef {{ 217 * @typedef {{
217 * type: string, 218 * type: string,
218 * filePath: string, 219 * filePath: string,
219 * contentUrl: (string|undefined), 220 * contentUrl: (string|undefined),
220 * videoPoster: (string|undefined), 221 * videoPoster: (string|undefined),
221 * audioArtwork: (string|undefined), 222 * audioArtwork: (string|undefined),
222 * autoplay: (boolean|undefined) 223 * autoplay: (boolean|undefined),
224 * browsable: (boolean|undefined),
223 * }} 225 * }}
224 */ 226 */
225 var QuickViewParams; 227 var QuickViewParams;
226 228
227 /** 229 /**
228 * @param {!FileEntry} entry 230 * @param {!FileEntry} entry
229 * @param {Array<MetadataItem>} items 231 * @param {Array<MetadataItem>} items
230 * @return !Promise<!QuickViewParams> 232 * @return !Promise<!QuickViewParams>
231 * 233 *
232 * @private 234 * @private
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
304 var file = values[1]; 306 var file = values[1];
305 var item = items[0]; 307 var item = items[0];
306 if (item.contentThumbnailUrl) { 308 if (item.contentThumbnailUrl) {
307 params.audioArtwork = item.contentThumbnailUrl; 309 params.audioArtwork = item.contentThumbnailUrl;
308 } 310 }
309 params.contentUrl = URL.createObjectURL(file); 311 params.contentUrl = URL.createObjectURL(file);
310 return params; 312 return params;
311 }); 313 });
312 } 314 }
313 } 315 }
314 return Promise.resolve(params); 316 if (item.externalFileUrl || type === '.folder') {
317 return Promise.resolve(params);
318 }
319 return Promise
320 .all([
321 getFile(entry),
322 new Promise(function(resolve) {
323 chrome.fileManagerPrivate.getFileTasks([entry], resolve);
324 })
325 ])
326 .then(function(values) {
327 var file = values[0];
328 var tasks = values[1];
329 var browsable = tasks.some(function(task) {
330 return ['view-in-browser', 'view-pdf'].includes(
331 task.taskId.split('|')[2]);
332 });
333 params.browsable = browsable;
334 params.contentUrl = browsable && URL.createObjectURL(file);
335 return params;
336 });
315 }; 337 };
316 338
317 /** 339 /**
318 * Loads a thumbnail from Drive. 340 * Loads a thumbnail from Drive.
319 * 341 *
320 * @param {string} url Thumbnail url 342 * @param {string} url Thumbnail url
321 * @return Promise<{{status: string, data:string, width:number, height:number}}> 343 * @return Promise<{{status: string, data:string, width:number, height:number}}>
322 * @private 344 * @private
323 */ 345 */
324 QuickViewController.prototype.loadThumbnailFromDrive_ = function(url) { 346 QuickViewController.prototype.loadThumbnailFromDrive_ = function(url) {
325 return new Promise(function(resolve) { 347 return new Promise(function(resolve) {
326 ImageLoaderClient.getInstance().load(url, resolve) 348 ImageLoaderClient.getInstance().load(url, resolve)
327 }); 349 });
328 }; 350 };
OLDNEW
« no previous file with comments | « ui/file_manager/file_manager/foreground/elements/files_quick_view.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698