Chromium Code Reviews| Index: chrome/browser/resources/file_manager/js/file_transfer_controller.js |
| diff --git a/chrome/browser/resources/file_manager/js/file_transfer_controller.js b/chrome/browser/resources/file_manager/js/file_transfer_controller.js |
| index 3fcdc80dee898c0b467265d37a457246afbfe893..a66a3aa39557163819972f7809c659c853e936d2 100644 |
| --- a/chrome/browser/resources/file_manager/js/file_transfer_controller.js |
| +++ b/chrome/browser/resources/file_manager/js/file_transfer_controller.js |
| @@ -46,6 +46,7 @@ FileTransferController.prototype = { |
| __proto__: cr.EventTarget.prototype, |
| /** |
| + * @this {FileTransferController} |
|
mtomasz
2013/02/14 04:38:56
Shall we convert it to FileTransferController.prot
yoshiki
2013/02/14 06:17:36
Yes, you're right and I'll convert them to FileTra
|
| * @param {cr.ui.List} list Items in the list will be draggable. |
| */ |
| attachDragSource: function(list) { |
| @@ -55,6 +56,7 @@ FileTransferController.prototype = { |
| }, |
| /** |
| + * @this {FileTransferController} |
| * @param {cr.ui.List} list List itself and its directory items will could |
| * be drop target. |
| * @param {boolean=} opt_onlyIntoDirectories If true only directory list |
| @@ -70,6 +72,9 @@ FileTransferController.prototype = { |
| !!opt_onlyIntoDirectories)); |
| }, |
| + /** |
|
mtomasz
2013/02/14 04:38:56
Description missing in several methods, but this m
yoshiki
2013/02/14 06:17:36
There are a lot of missing description of method a
mtomasz
2013/02/14 07:40:09
Sgtm!
|
| + * @this {FileTransferController} |
| + */ |
| attachBreadcrumbsDropTarget: function(breadcrumbsController) { |
| var container = breadcrumbsController.getContainer(); |
| container.addEventListener('dragover', |
| @@ -83,6 +88,7 @@ FileTransferController.prototype = { |
| /** |
| * Attach handlers of copy, cut and paste operations to the document. |
| + * @this {FileTransferController} |
| */ |
| attachCopyPasteHandlers: function() { |
| this.document_.addEventListener('beforecopy', |
| @@ -103,6 +109,7 @@ FileTransferController.prototype = { |
| /** |
| * Write the current selection to system clipboard. |
| * |
| + * @this {FileTransferController} |
| * @param {DataTransfer} dataTransfer DataTransfer from the event. |
| * @param {string} effectAllowed Value must be valid for the |
| * |dataTransfer.effectAllowed| property ('move', 'copy', 'copyMove'). |
| @@ -133,6 +140,7 @@ FileTransferController.prototype = { |
| /** |
| * Extracts source root from the |dataTransfer| object. |
|
mtomasz
2013/02/14 04:38:56
Shall we add an empty line between description and
yoshiki
2013/02/14 06:17:36
I think we don't always need a blank line. But it
|
| + * @this {FileTransferController} |
| * @param {DataTransfer} dataTransfer DataTransfer object from the event. |
| * @return {string} Path or empty string (if unknown). |
| */ |
| @@ -163,6 +171,7 @@ FileTransferController.prototype = { |
| /** |
| * Queue up a file copy operation based on the current system clipboard. |
| + * @this {FileTransferController} |
| * @param {DataTransfer} dataTransfer System data transfer object. |
| * @param {string=} opt_destinationPath Paste destination. |
| * @param {string=} opt_effect Desired drop/paste effect. Could be |
| @@ -204,6 +213,7 @@ FileTransferController.prototype = { |
| /** |
| * Preloads an image thumbnail for the specified file entry. |
| + * @this {FileTransferController} |
| * @param {Entry} entry Entry to preload a thumbnail for. |
| */ |
| preloadThumbnailImage_: function(entry) { |
| @@ -225,6 +235,7 @@ FileTransferController.prototype = { |
| /** |
| * Renders a drag-and-drop thumbnail. |
| + * @this {FileTransferController} |
| * @return {HTMLElement} Element containing the thumbnail. |
| */ |
| renderThumbnail_: function() { |
| @@ -269,6 +280,9 @@ FileTransferController.prototype = { |
| return container; |
| }, |
| + /** |
| + * @this {FileTransferController} |
| + */ |
| onDragStart_: function(list, event) { |
| // Nothing selected. |
| if (!this.selectedEntries_.length) { |
| @@ -294,6 +308,9 @@ FileTransferController.prototype = { |
| }; |
| }, |
| + /** |
| + * @this {FileTransferController} |
| + */ |
| onDragEnd_: function(list, event) { |
| var container = this.document_.querySelector('#drag-container'); |
| container.textContent = ''; |
| @@ -302,6 +319,9 @@ FileTransferController.prototype = { |
| delete window[DRAG_AND_DROP_GLOBAL_DATA]; |
| }, |
| + /** |
| + * @this {FileTransferController} |
| + */ |
| onDragOver_: function(onlyIntoDirectories, list, event) { |
| if (list) { |
| // Scroll the list if mouse close to the top or the bottom. |
| @@ -321,6 +341,9 @@ FileTransferController.prototype = { |
| event.preventDefault(); |
| }, |
| + /** |
| + * @this {FileTransferController} |
| + */ |
| onDragEnterList_: function(list, event) { |
| event.preventDefault(); // Required to prevent the cursor flicker. |
| this.lastEnteredTarget_ = event.target; |
| @@ -338,6 +361,9 @@ FileTransferController.prototype = { |
| } |
| }, |
| + /** |
| + * @this {FileTransferController} |
| + */ |
| onDragEnterBreadcrumbs_: function(breadcrumbsContainer, event) { |
| event.preventDefault(); // Required to prevent the cursor flicker. |
| this.lastEnteredTarget_ = event.target; |
| @@ -348,6 +374,9 @@ FileTransferController.prototype = { |
| this.setDropTarget_(event.target, true, event.dataTransfer, path); |
| }, |
| + /** |
| + * @this {FileTransferController} |
| + */ |
| onDragLeave_: function(list, event) { |
| // If mouse moves from one element to another the 'dragenter' |
| // event for the new element comes before the 'dragleave' event for |
| @@ -363,6 +392,9 @@ FileTransferController.prototype = { |
| this.setScrollSpeed_(list, 0); |
| }, |
| + /** |
| + * @this {FileTransferController} |
| + */ |
| onDrop_: function(onlyIntoDirectories, event) { |
| if (onlyIntoDirectories && !this.dropTarget_) |
| return; |
| @@ -377,6 +409,9 @@ FileTransferController.prototype = { |
| this.setScrollSpeed_(null, 0); |
| }, |
| + /** |
| + * @this {FileTransferController} |
| + */ |
| setDropTarget_: function(domElement, isDirectory, opt_dataTransfer, |
| opt_destinationPath) { |
| if (this.dropTarget_ == domElement) |
| @@ -411,13 +446,21 @@ FileTransferController.prototype = { |
| } |
| }, |
| - isDocumentWideEvent_: function(event) { |
| + /** |
| + * @this {FileTransferController} |
| + * @return {boolean} Returns false if {@code <input type="text">} element is |
| + * currently active. Otherwise, returns true. |
| + */ |
| + isDocumentWideEvent_: function() { |
| return this.document_.activeElement.nodeName.toLowerCase() != 'input' || |
| this.document_.activeElement.type.toLowerCase() != 'text'; |
| }, |
| + /** |
| + * @this {FileTransferController} |
| + */ |
| onCopy_: function(event) { |
| - if (!this.isDocumentWideEvent_(event) || |
| + if (!this.isDocumentWideEvent_() || |
| !this.canCopyOrDrag_()) { |
| return; |
| } |
| @@ -426,14 +469,22 @@ FileTransferController.prototype = { |
| this.notify_('selection-copied'); |
| }, |
| + /** |
| + * @this {FileTransferController} |
| + */ |
| onBeforeCopy_: function(event) { |
| - if (!this.isDocumentWideEvent_(event)) |
| + if (!this.isDocumentWideEvent_()) |
| return; |
| // queryCommandEnabled returns true if event.returnValue is false. |
| event.returnValue = !this.canCopyOrDrag_(); |
| }, |
| + /** |
| + * @this {FileTransferController} |
| + * @return {boolean} Returns true if some files are selected and all the file |
| + * on drive is available to be copied. Otherwise, returns false. |
| + */ |
| canCopyOrDrag_: function() { |
| if (this.isOnDrive && |
| this.directoryModel_.isDriveOffline() && |
| @@ -442,8 +493,11 @@ FileTransferController.prototype = { |
| return this.selectedEntries_.length > 0; |
| }, |
| + /** |
| + * @this {FileTransferController} |
| + */ |
| onCut_: function(event) { |
| - if (!this.isDocumentWideEvent_(event) || |
| + if (!this.isDocumentWideEvent_() || |
| !this.canCutOrDrag_()) { |
| return; |
| } |
| @@ -452,20 +506,31 @@ FileTransferController.prototype = { |
| this.notify_('selection-cut'); |
| }, |
| + /** |
| + * @this {FileTransferController} |
| + */ |
| onBeforeCut_: function(event) { |
| - if (!this.isDocumentWideEvent_(event)) |
| + if (!this.isDocumentWideEvent_()) |
| return; |
| // queryCommandEnabled returns true if event.returnValue is false. |
| event.returnValue = !this.canCutOrDrag_(); |
| }, |
| + /** |
| + * @this {FileTransferController} |
| + * @return {boolean} Returns true if some files are selected and all the file |
| + * on drive is available to be cut. Otherwise, returns false. |
| + */ |
| canCutOrDrag_: function() { |
| return !this.readonly && this.canCopyOrDrag_(); |
| }, |
| + /** |
| + * @this {FileTransferController} |
| + */ |
| onPaste_: function(event) { |
| // Need to update here since 'beforepaste' doesn't fire. |
| - if (!this.isDocumentWideEvent_(event) || |
| + if (!this.isDocumentWideEvent_() || |
| !this.canPasteOrDrop_(event.clipboardData)) { |
| return; |
| } |
| @@ -482,13 +547,21 @@ FileTransferController.prototype = { |
| } |
| }, |
| + /** |
| + * @this {FileTransferController} |
| + */ |
| onBeforePaste_: function(event) { |
| - if (!this.isDocumentWideEvent_(event)) |
| + if (!this.isDocumentWideEvent_()) |
| return; |
| // queryCommandEnabled returns true if event.returnValue is false. |
| event.returnValue = !this.canPasteOrDrop_(event.clipboardData); |
| }, |
| + /** |
| + * @this {FileTransferController} |
| + * @return {boolean} Returns true if {@code opt_destinationPath} is |
| + * available to be pasted to. Otherwise, returns false. |
| + */ |
| canPasteOrDrop_: function(dataTransfer, opt_destinationPath) { |
| var destinationPath = opt_destinationPath || |
| this.directoryModel_.getCurrentDirPath(); |
| @@ -517,6 +590,13 @@ FileTransferController.prototype = { |
| return true; |
| }, |
| + /** |
| + * Execute paste command. |
| + * |
| + * @this {FileTransferController} |
| + * @return {boolean} Returns true, the paste is success. Otherwise, returns |
| + * false. |
| + */ |
| queryPasteCommandEnabled: function() { |
| if (!this.isDocumentWideEvent_()) { |
| return false; |
| @@ -533,6 +613,7 @@ FileTransferController.prototype = { |
| /** |
| * Allows to simulate commands to get access to clipboard. |
| + * @this {FileTransferController} |
| * @param {string} command 'copy', 'cut' or 'paste'. |
| * @param {Function} handler Event handler. |
| */ |
| @@ -544,6 +625,9 @@ FileTransferController.prototype = { |
| doc.removeEventListener(command, handler); |
| }, |
| + /** |
| + * @this {FileTransferController} |
| + */ |
| onSelectionChanged_: function(event) { |
| var entries = this.selectedEntries_; |
| var files = this.selectedFileObjects_ = []; |
| @@ -594,20 +678,32 @@ FileTransferController.prototype = { |
| } |
| }, |
| + /** |
| + * @this {FileTransferController} |
| + */ |
| get currentDirectory() { |
| if (this.directoryModel_.isSearching() && this.isOnDrive) |
| return null; |
| return this.directoryModel_.getCurrentDirEntry(); |
| }, |
| + /** |
| + * @this {FileTransferController} |
| + */ |
| get readonly() { |
| return this.directoryModel_.isReadOnly(); |
| }, |
| + /** |
| + * @this {FileTransferController} |
| + */ |
| get isOnDrive() { |
| return this.directoryModel_.getCurrentRootType() === RootType.DRIVE; |
| }, |
| + /** |
| + * @this {FileTransferController} |
| + */ |
| notify_: function(eventName) { |
| var self = this; |
| // Set timeout to avoid recursive events. |
| @@ -617,6 +713,7 @@ FileTransferController.prototype = { |
| }, |
| /** |
| + * @this {FileTransferController} |
| * @type {Array.<Entry>} |
| */ |
| get selectedEntries_() { |
| @@ -638,6 +735,11 @@ FileTransferController.prototype = { |
| return entries; |
| }, |
| + /** |
| + * @this {FileTransferController} |
| + * @return {string} Returns the appropriate drop query type ('none', 'move' |
| + * or copy') to the current modifiers status and the destination. |
| + */ |
| selectDropEffect_: function(event, destinationPath) { |
| if (!destinationPath || |
| this.directoryModel_.isPathReadOnly(destinationPath)) |
| @@ -655,6 +757,10 @@ FileTransferController.prototype = { |
| return 'copy'; |
| }, |
| + /** |
| + * @this {FileTransferController} |
| + * @return {number} Returns an appropriate scroll speed to the distance. |
| + */ |
| calculateScrollSpeed_: function(distance) { |
| var SCROLL_AREA = 25; // Pixels. |
| var MIN_SCROLL_SPEED = 50; // Pixels/sec. |
| @@ -665,6 +771,9 @@ FileTransferController.prototype = { |
| (distance / SCROLL_AREA); |
| }, |
| + /** |
| + * @this {FileTransferController} |
| + */ |
| setScrollSpeed_: function(list, speed) { |
| var SCROLL_INTERVAL = 200; // Milliseconds. |
| if (speed == 0 && this.scrollInterval_) { |
| @@ -678,6 +787,9 @@ FileTransferController.prototype = { |
| this.scrollList_ = list; |
| }, |
| + /** |
| + * @this {FileTransferController} |
| + */ |
| scroll_: function() { |
| if (this.scrollList_) |
| this.scrollList_.scrollTop += this.scrollStep_; |