Merge \\\"Include cause when reporting errors.\\\" into nyc-dev am: 60585e6c54 am: be8b6e6164
am: 7dfb6fa15e
Change-Id: Iade90d4bfb323bcc1bb7a771fcb2b64656c25d57
diff --git a/packages/DocumentsUI/src/com/android/documentsui/services/CopyJob.java b/packages/DocumentsUI/src/com/android/documentsui/services/CopyJob.java
index d6f2e5b..cde9e92 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/services/CopyJob.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/services/CopyJob.java
@@ -221,7 +221,7 @@
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;
}
@@ -230,25 +230,19 @@
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);
}
}
@@ -296,7 +290,7 @@
}
} 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.
diff --git a/packages/DocumentsUI/src/com/android/documentsui/services/DeleteJob.java b/packages/DocumentsUI/src/com/android/documentsui/services/DeleteJob.java
index e9bdd2c..8e27d6a 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/services/DeleteJob.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/services/DeleteJob.java
@@ -104,7 +104,7 @@
return;
}
} 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 aaa7596..1118171 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 @@
}
} 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);