OSDN Git Service

DO NOT MERGE: Change the order of 2 statements to remove race.
authorGarfield, Tan <xutan@google.com>
Mon, 25 Jul 2016 16:59:34 +0000 (09:59 -0700)
committerGarfield, Tan <xutan@google.com>
Mon, 25 Jul 2016 17:12:22 +0000 (10:12 -0700)
When we finish action mode we access to the cursor of model in main
thread to remove selection. When we transfer documents we have a
GetDocumentsTask that access the cursor in background. This creates a
race condition that contaminates the final copy result.

Temporary solution is to finish action mode first and then transfer
documents so that when GetDocumentsTask is running action mode is
already finished.

Permanent solution is provided as part of ag/1138398 which removes
GetDocumentsTask.

Bug: 30082168
Change-Id: I5bffe2093a58c856044026913d038f80a3fd7d55

packages/DocumentsUI/src/com/android/documentsui/dirlist/DirectoryFragment.java

index 47df940..b7c0a9c 100644 (file)
@@ -664,10 +664,10 @@ public class DirectoryFragment extends Fragment
                     return true;
 
                 case R.id.menu_copy_to:
-                    transferDocuments(selection, FileOperationService.OPERATION_COPY);
                     // TODO: Only finish selection mode if copy-to is not canceled.
                     // Need to plum down into handling the way we do with deleteDocuments.
                     mode.finish();
+                    transferDocuments(selection, FileOperationService.OPERATION_COPY);
                     return true;
 
                 case R.id.menu_move_to: