| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 if (chrome.extension) { | 7 if (chrome.extension) { |
| 8 var getContentWindows = function() { | 8 var getContentWindows = function() { |
| 9 return chrome.extension.getViews(); | 9 return chrome.extension.getViews(); |
| 10 }; | 10 }; |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 82 }; | 82 }; |
| 83 | 83 |
| 84 /** | 84 /** |
| 85 * @param {Array.<Entry>} entries Entries. | 85 * @param {Array.<Entry>} entries Entries. |
| 86 * @param {function} callback When entries resolved. | 86 * @param {function} callback When entries resolved. |
| 87 */ | 87 */ |
| 88 FileCopyManager.Task.prototype.setEntries = function(entries, callback) { | 88 FileCopyManager.Task.prototype.setEntries = function(entries, callback) { |
| 89 var self = this; | 89 var self = this; |
| 90 | 90 |
| 91 var onEntriesRecursed = function(result) { | 91 var onEntriesRecursed = function(result) { |
| 92 self.pendingDirectories = result.dirEntries; | 92 // Deeper directory is moved earier. |
| 93 self.pendingDirectories = result.dirEntries.sort( |
| 94 function(a, b) { return a.fullPath < b.fullPath; }); |
| 93 self.pendingFiles = result.fileEntries; | 95 self.pendingFiles = result.fileEntries; |
| 94 self.pendingBytes = result.fileBytes; | 96 self.pendingBytes = result.fileBytes; |
| 95 callback(); | 97 callback(); |
| 96 }; | 98 }; |
| 97 | 99 |
| 98 this.originalEntries = entries; | 100 this.originalEntries = entries; |
| 99 // When moving directories, FileEntry.moveTo() is used if both source | 101 // When moving directories, FileEntry.moveTo() is used if both source |
| 100 // and target are on Drive. There is no need to recurse into directories. | 102 // and target are on Drive. There is no need to recurse into directories. |
| 101 var recurse = !this.move; | 103 var recurse = !this.move; |
| 102 util.recurseAndResolveEntries(entries, recurse, onEntriesRecursed); | 104 util.recurseAndResolveEntries(entries, recurse, onEntriesRecursed); |
| 103 }; | 105 }; |
| 104 | 106 |
| 105 /** | 107 /** |
| 106 * @return {Entry} Next entry. | 108 * @return {Entry} Next entry. |
| 107 */ | 109 */ |
| 108 FileCopyManager.Task.prototype.getNextEntry = function() { | 110 FileCopyManager.Task.prototype.getNextEntry = function() { |
| 109 // We should keep the file in pending list and remove it after complete. | 111 // We should keep the file in pending list and remove it after complete. |
| 110 // Otherwise, if we try to get status in the middle of copying. The returned | 112 // Otherwise, if we try to get status in the middle of copying. The returned |
| 111 // status is wrong (miss count the pasting item in totalItems). | 113 // status is wrong (miss count the pasting item in totalItems). |
| 114 if (this.pendingFiles.length) { |
| 115 this.pendingFiles[0].inProgress = true; |
| 116 return this.pendingFiles[0]; |
| 117 } |
| 112 if (this.pendingDirectories.length) { | 118 if (this.pendingDirectories.length) { |
| 113 this.pendingDirectories[0].inProgress = true; | 119 this.pendingDirectories[0].inProgress = true; |
| 114 return this.pendingDirectories[0]; | 120 return this.pendingDirectories[0]; |
| 115 } | 121 } |
| 116 | |
| 117 if (this.pendingFiles.length) { | |
| 118 this.pendingFiles[0].inProgress = true; | |
| 119 return this.pendingFiles[0]; | |
| 120 } | |
| 121 | |
| 122 return null; | 122 return null; |
| 123 }; | 123 }; |
| 124 | 124 |
| 125 /** | 125 /** |
| 126 * @param {Entry} entry Entry. | 126 * @param {Entry} entry Entry. |
| 127 * @param {number} size Bytes completed. | 127 * @param {number} size Bytes completed. |
| 128 */ | 128 */ |
| 129 FileCopyManager.Task.prototype.markEntryComplete = function(entry, size) { | 129 FileCopyManager.Task.prototype.markEntryComplete = function(entry, size) { |
| 130 // It is probably not safe to directly remove the first entry in pending list. | 130 // It is probably not safe to directly remove the first entry in pending list. |
| 131 // We need to check if the removed entry (srcEntry) corresponding to the added | 131 // We need to check if the removed entry (srcEntry) corresponding to the added |
| (...skipping 1147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1279 // Assume self.cancelRequested_ == false. | 1279 // Assume self.cancelRequested_ == false. |
| 1280 // This moved us from 0 to 1 active tasks, let the servicing begin! | 1280 // This moved us from 0 to 1 active tasks, let the servicing begin! |
| 1281 self.serviceAllTasks_(); | 1281 self.serviceAllTasks_(); |
| 1282 } else { | 1282 } else { |
| 1283 // Force to update the progress of butter bar when there are new tasks | 1283 // Force to update the progress of butter bar when there are new tasks |
| 1284 // coming while servicing current task. | 1284 // coming while servicing current task. |
| 1285 self.sendProgressEvent_('PROGRESS'); | 1285 self.sendProgressEvent_('PROGRESS'); |
| 1286 } | 1286 } |
| 1287 }); | 1287 }); |
| 1288 }; | 1288 }; |
| OLD | NEW |