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

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

Issue 2966163005: Revert of Reuse FileTasks when entries are not changed. (Closed)
Patch Set: Created 3 years, 5 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 | « ui/file_manager/file_manager/foreground/js/file_tasks.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 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 /** 5 /**
6 * @param {DialogType} dialogType 6 * @param {DialogType} dialogType
7 * @param {!VolumeManagerWrapper} volumeManager 7 * @param {!VolumeManagerWrapper} volumeManager
8 * @param {!FileManagerUI} ui 8 * @param {!FileManagerUI} ui
9 * @param {!MetadataModel} metadataModel 9 * @param {!MetadataModel} metadataModel
10 * @param {!DirectoryModel} directoryModel 10 * @param {!DirectoryModel} directoryModel
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after
255 }); 255 });
256 }); 256 });
257 }); 257 });
258 }; 258 };
259 259
260 /** 260 /**
261 * Handles change of selection and clears context menu. 261 * Handles change of selection and clears context menu.
262 * @private 262 * @private
263 */ 263 */
264 TaskController.prototype.onSelectionChanged_ = function() { 264 TaskController.prototype.onSelectionChanged_ = function() {
265 this.tasks_ = null;
265 var selection = this.selectionHandler_.selection; 266 var selection = this.selectionHandler_.selection;
266 // Caller of update context menu task items. 267 // Caller of update context menu task items.
267 // FileSelectionHandler.EventType.CHANGE 268 // FileSelectionHandler.EventType.CHANGE
268 if (this.dialogType_ === DialogType.FULL_PAGE && 269 if (this.dialogType_ === DialogType.FULL_PAGE &&
269 (selection.directoryCount > 0 || selection.fileCount > 0)) { 270 (selection.directoryCount > 0 || selection.fileCount > 0)) {
270 // Show disabled items for position calculation of the menu. They will be 271 // Show disabled items for position calculation of the menu. They will be
271 // overridden in this.updateFileSelectionAsync(). 272 // overridden in this.updateFileSelectionAsync().
272 this.updateContextMenuTaskItems_( 273 this.updateContextMenuTaskItems_(
273 [TaskController.createTemporaryDisabledTaskItem_()]); 274 [TaskController.createTemporaryDisabledTaskItem_()]);
274 } else { 275 } else {
275 // Update context menu. 276 // Update context menu.
276 this.updateContextMenuTaskItems_([]); 277 this.updateContextMenuTaskItems_([]);
277 } 278 }
278 }; 279 };
279 280
280 /** 281 /**
281 * Updates available tasks opened from context menu or the open button. 282 * Updates available tasks opened from context menu or the open button.
282 * @private 283 * @private
283 */ 284 */
284 TaskController.prototype.updateTasks_ = function() { 285 TaskController.prototype.updateTasks_ = function() {
285 var selection = this.selectionHandler_.selection; 286 var selection = this.selectionHandler_.selection;
286 if (this.dialogType_ === DialogType.FULL_PAGE && 287 if (this.dialogType_ === DialogType.FULL_PAGE &&
287 (selection.directoryCount > 0 || selection.fileCount > 0)) { 288 (selection.directoryCount > 0 || selection.fileCount > 0)) {
288 var previousFileTasksInvalidatePromise = new Promise(function(resolve) { 289 this.getFileTasks()
289 if (this.tasks_) { 290 .then(function(tasks) {
290 this.getFileTasks() 291 tasks.display(this.ui_.taskMenuButton);
291 .then(function(tasks) { 292 this.updateContextMenuTaskItems_(tasks.getTaskItems());
292 if (!util.isSameEntries(tasks.entries, selection.entries)) { 293 }.bind(this))
293 this.tasks_ = null; 294 .catch(function(error) {
294 } 295 if (error)
295 resolve(); 296 console.error(error.stack || error);
296 }.bind(this)) 297 });
297 .catch(function(error) {
298 if (error)
299 console.log(error.stack || error);
300 this.tasks_ = null;
301 resolve();
302 }.bind(this));
303 } else {
304 resolve();
305 }
306 }.bind(this));
307 previousFileTasksInvalidatePromise.then(function() {
308 this.getFileTasks()
309 .then(function(tasks) {
310 tasks.display(this.ui_.taskMenuButton);
311 this.updateContextMenuTaskItems_(tasks.getTaskItems());
312 }.bind(this))
313 .catch(function(error) {
314 if (error)
315 console.error(error.stack || error);
316 });
317 }.bind(this));
318 } else { 298 } else {
319 this.ui_.taskMenuButton.hidden = true; 299 this.ui_.taskMenuButton.hidden = true;
320 } 300 }
321 } 301 }
322 302
323 /** 303 /**
324 * @return {!Promise<!FileTasks>} 304 * @return {!Promise<!FileTasks>}
325 * @public 305 * @public
326 */ 306 */
327 TaskController.prototype.getFileTasks = function() { 307 TaskController.prototype.getFileTasks = function() {
328 if (this.tasks_) 308 if (this.tasks_)
329 return this.tasks_; 309 return this.tasks_;
330 310
331 var selection = this.selectionHandler_.selection; 311 var selection = this.selectionHandler_.selection;
332 return this.tasks_ = 312 return selection.computeAdditional(this.metadataModel_).then(
333 selection.computeAdditional(this.metadataModel_).then(function() { 313 function() {
334 if (this.selectionHandler_.selection !== selection) 314 if (this.selectionHandler_.selection !== selection)
335 return Promise.reject(); 315 return Promise.reject();
336 return FileTasks 316 return FileTasks.create(
337 .create( 317 this.volumeManager_, this.metadataModel_, this.directoryModel_,
338 this.volumeManager_, this.metadataModel_, 318 this.ui_, selection.entries, assert(selection.mimeTypes)).
339 this.directoryModel_, this.ui_, selection.entries, 319 then(function(tasks) {
340 assert(selection.mimeTypes)) 320 if (this.selectionHandler_.selection !== selection)
341 .then(function(tasks) { 321 return Promise.reject();
342 if (this.selectionHandler_.selection !== selection) 322 return tasks;
343 return Promise.reject(); 323 }.bind(this));
344 return tasks; 324 }.bind(this));
345 }.bind(this));
346 }.bind(this));
347 }; 325 };
348 326
349 /** 327 /**
350 * Returns whether default task command can be executed or not. 328 * Returns whether default task command can be executed or not.
351 * @return {boolean} True if default task command is executable. 329 * @return {boolean} True if default task command is executable.
352 */ 330 */
353 TaskController.prototype.canExecuteDefaultTask = function() { 331 TaskController.prototype.canExecuteDefaultTask = function() {
354 return this.canExecuteDefaultTask_; 332 return this.canExecuteDefaultTask_;
355 }; 333 };
356 334
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
411 this.metadataModel_.get([entry], ['contentMimeType']).then( 389 this.metadataModel_.get([entry], ['contentMimeType']).then(
412 function(props) { 390 function(props) {
413 FileTasks.create( 391 FileTasks.create(
414 this.volumeManager_, this.metadataModel_, this.directoryModel_, 392 this.volumeManager_, this.metadataModel_, this.directoryModel_,
415 this.ui_, [entry], [props[0].contentMimeType || null]) 393 this.ui_, [entry], [props[0].contentMimeType || null])
416 .then(function(tasks) { 394 .then(function(tasks) {
417 tasks.executeDefault(); 395 tasks.executeDefault();
418 }); 396 });
419 }.bind(this)); 397 }.bind(this));
420 }; 398 };
OLDNEW
« no previous file with comments | « ui/file_manager/file_manager/foreground/js/file_tasks.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698