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

Unified Diff: chrome/browser/resources/file_manager/js/file_copy_manager.js

Issue 9667040: Use FileEntry.copyTo() and FileEntry.moveTo() on GData file system. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/resources/file_manager/js/file_copy_manager.js
===================================================================
--- chrome/browser/resources/file_manager/js/file_copy_manager.js (revision 126094)
+++ chrome/browser/resources/file_manager/js/file_copy_manager.js (working copy)
@@ -33,6 +33,7 @@
this.completedBytes = 0;
this.deleteAfterCopy = false;
+ this.sourceAndTargetOnGData = false;
// If directory already exists, we try to make a copy named 'dir (X)',
// where X is a number. When we do this, all subsequent copies from
@@ -53,7 +54,10 @@
}
this.originalEntries = entries;
- util.recurseAndResolveEntries(entries, onEntriesRecursed);
+ // When moving directories, FileEntry.moveTo() is used if both source
+ // and target are on GData. There is no need to recurse into directories.
+ var recurse = !(this.deleteAfterCopy && this.sourceAndTargetOnGData);
+ util.recurseAndResolveEntries(entries, recurse, onEntriesRecursed);
}
FileCopyManager.Task.prototype.takeNextEntry = function() {
@@ -193,7 +197,8 @@
/**
* Convert string in clipboard to entries and kick off pasting.
*/
-FileCopyManager.prototype.paste = function(clipboard, targetEntry, root) {
+FileCopyManager.prototype.paste = function(clipboard, targetEntry,
+ sourceAndTargetOnGData, root) {
var self = this;
var results = {
sourceDirEntry: null,
@@ -213,7 +218,8 @@
self.queueCopy(results.sourceDirEntry,
targetEntry,
results.entries,
- results.isCut);
+ results.isCut,
+ sourceAndTargetOnGData);
}
function onEntryFound(entry) {
@@ -262,10 +268,12 @@
FileCopyManager.prototype.queueCopy = function(sourceDirEntry,
targetDirEntry,
entries,
- deleteAfterCopy) {
+ deleteAfterCopy,
+ sourceAndTargetOnGData) {
var self = this;
var copyTask = new FileCopyManager.Task(sourceDirEntry, targetDirEntry);
copyTask.deleteAfterCopy = deleteAfterCopy;
+ copyTask.sourceAndTargetOnGData = sourceAndTargetOnGData;
copyTask.setEntries(entries, function() {
self.copyTasks_.push(copyTask);
if (self.copyTasks_.length == 1) {
@@ -353,8 +361,10 @@
function onEntryServiced(targetEntry, size) {
if (!targetEntry) {
// All done with the entries in this task.
- if (task.deleteAfterCopy) {
- deleteOriginals()
+ // If files are moved within GData, FileEntry.moveTo() is used and
+ // there is no need to delete the original files.
+ if (task.deleteAfterCopy && !task.sourceAndTargetOnGData) {
+ deleteOriginals();
} else {
onTaskComplete();
}
@@ -461,6 +471,23 @@
if (err.code != FileError.NOT_FOUND_ERR)
return onError('FILESYSTEM_ERROR', err);
+ if (task.sourceAndTargetOnGData) {
+ if (task.deleteAfterCopy) {
+ sourceEntry.moveTo(targetDirEntry, targetRelativePath,
dgozman 2012/03/12 09:46:03 Can we have such copyTo/moveTo methods for all ent
Ben Chan 2012/03/12 14:58:47 It's possible to use copyTo/moveTo for native file
+ onCopyComplete, onError);
+ return;
+ } else {
+ // TODO(benchan): GDataFileSystem has not implemented directory copy,
+ // and thus we only call FileEntry.copyTo() for files. Revisit this
+ // code when GDataFileSystem supports directory copy.
+ if (!sourceEntry.isDirectory) {
+ sourceEntry.copyTo(targetDirEntry, targetRelativePath,
+ onCopyComplete, onError);
+ return;
+ }
+ }
+ }
+
if (sourceEntry.isDirectory) {
targetDirEntry.getDirectory(
targetRelativePath,

Powered by Google App Engine
This is Rietveld 408576698