diff options
3 files changed, 11 insertions, 17 deletions
diff --git a/packages/DocumentsUI/src/com/android/documentsui/services/CopyJob.java b/packages/DocumentsUI/src/com/android/documentsui/services/CopyJob.java index f10af4378c21..53fa3cc4abb4 100644 --- a/packages/DocumentsUI/src/com/android/documentsui/services/CopyJob.java +++ b/packages/DocumentsUI/src/com/android/documentsui/services/CopyJob.java @@ -227,7 +227,7 @@ class CopyJob extends Job { try { mBatchSize = calculateSize(mSrcs); } catch (ResourceException e) { - Log.w(TAG, "Failed to calculate total size. Copying without progress."); + Log.w(TAG, "Failed to calculate total size. Copying without progress.", e); mBatchSize = -1; } @@ -236,25 +236,19 @@ class CopyJob extends Job { for (int i = 0; i < mSrcs.size() && !isCanceled(); ++i) { srcInfo = mSrcs.get(i); - // Guard unsupported recursive operation. - try { - if (dstInfo.equals(srcInfo) || isDescendentOf(srcInfo, dstInfo)) { - throw new ResourceException("Cannot copy to itself recursively."); - } - } catch (ResourceException e) { - Log.e(TAG, e.toString()); - onFileFailed(srcInfo); - continue; - } - if (DEBUG) Log.d(TAG, "Copying " + srcInfo.displayName + " (" + srcInfo.derivedUri + ")" + " to " + dstInfo.displayName + " (" + dstInfo.derivedUri + ")"); try { - processDocument(srcInfo, null, dstInfo); + if (dstInfo.equals(srcInfo) || isDescendentOf(srcInfo, dstInfo)) { + Log.e(TAG, "Skipping recursive copy of " + srcInfo.derivedUri); + onFileFailed(srcInfo); + } else { + processDocument(srcInfo, null, dstInfo); + } } catch (ResourceException e) { - Log.e(TAG, e.toString()); + Log.e(TAG, "Failed to copy " + srcInfo.derivedUri, e); onFileFailed(srcInfo); } } @@ -306,7 +300,7 @@ class CopyJob extends Job { } } catch (RemoteException | RuntimeException e) { Log.e(TAG, "Provider side copy failed for: " + src.derivedUri - + " due to an exception: " + e); + + " due to an exception.", e); } // If optimized copy fails, then fallback to byte-by-byte copy. if (DEBUG) Log.d(TAG, "Fallback to byte-by-byte copy for: " + src.derivedUri); diff --git a/packages/DocumentsUI/src/com/android/documentsui/services/DeleteJob.java b/packages/DocumentsUI/src/com/android/documentsui/services/DeleteJob.java index 8f451623cf72..36a0f3216a63 100644 --- a/packages/DocumentsUI/src/com/android/documentsui/services/DeleteJob.java +++ b/packages/DocumentsUI/src/com/android/documentsui/services/DeleteJob.java @@ -86,7 +86,7 @@ final class DeleteJob extends Job { try { deleteDocument(doc, mSrcParent); } catch (ResourceException e) { - Log.e(TAG, "Failed to delete document @ " + doc.derivedUri); + Log.e(TAG, "Failed to delete document @ " + doc.derivedUri, e); onFileFailed(doc); } } diff --git a/packages/DocumentsUI/src/com/android/documentsui/services/MoveJob.java b/packages/DocumentsUI/src/com/android/documentsui/services/MoveJob.java index aaa7596be014..111817132fa1 100644 --- a/packages/DocumentsUI/src/com/android/documentsui/services/MoveJob.java +++ b/packages/DocumentsUI/src/com/android/documentsui/services/MoveJob.java @@ -98,7 +98,7 @@ final class MoveJob extends CopyJob { } } catch (RemoteException | RuntimeException e) { Log.e(TAG, "Provider side move failed for: " + src.derivedUri - + " due to an exception: " + e); + + " due to an exception: ", e); } // If optimized move fails, then fallback to byte-by-byte copy. if (DEBUG) Log.d(TAG, "Fallback to byte-by-byte move for: " + src.derivedUri); |