Handle partial clip files by showing a failure notification.

Bug: 30221384
Change-Id: Ib32b6b5ca5b8f7be887b8f35b80daeeb33770cbe
diff --git a/packages/DocumentsUI/src/com/android/documentsui/services/CopyJob.java b/packages/DocumentsUI/src/com/android/documentsui/services/CopyJob.java
index c8f6a64..8eabbe4 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/services/CopyJob.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/services/CopyJob.java
@@ -273,6 +273,8 @@
         try {
             final ContentResolver resolver = appContext.getContentResolver();
             final Iterable<Uri> uris = srcs.getUris(appContext);
+
+            int docProcessed = 0;
             for (Uri uri : uris) {
                 DocumentInfo doc = DocumentInfo.fromUri(resolver, uri);
                 if (canCopy(doc, stack.root)) {
@@ -280,11 +282,16 @@
                 } else {
                     onFileFailed(doc);
                 }
+                ++docProcessed;
 
                 if (isCanceled()) {
                     return;
                 }
             }
+
+            // If docProcessed is different than the count claimed by UrisSupplier, add the number
+            // to failedFileCount.
+            failedFileCount += (srcs.getItemCount() - docProcessed);
         } catch(IOException e) {
             failedFileCount += srcs.getItemCount();
             throw new ResourceException("Failed to open the list of docs to copy.", e);
diff --git a/packages/DocumentsUI/src/com/android/documentsui/services/DeleteJob.java b/packages/DocumentsUI/src/com/android/documentsui/services/DeleteJob.java
index 64bc1a7..5a36818 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/services/DeleteJob.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/services/DeleteJob.java
@@ -120,6 +120,10 @@
 
                 ++mDocsProcessed;
             }
+
+            // If mDocProcessed is different than the count claimed by UrisSupplier, add the number
+            // to failedFileCount.
+            failedFileCount += (this.srcs.getItemCount() - mDocsProcessed);
             Metrics.logFileOperation(service, operationType, srcs, null);
         } catch(IOException e) {
             Log.e(TAG, "Failed to get list of docs or parent source.", e);