Browse Source

Merge pull request #1073 from imjarp/logoffRemoveUploads

Removing uploads from account when logout
Mario Đanić 7 năm trước cách đây
mục cha
commit
535e5d1ec3

+ 72 - 0
androidTest/java/com/owncloud/android/datamodel/UploadStorageManagerTest.java

@@ -0,0 +1,72 @@
+package com.owncloud.android.datamodel;
+
+import android.accounts.Account;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.support.test.InstrumentationRegistry;
+import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
+
+import com.owncloud.android.db.OCUpload;
+
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.io.File;
+
+/**
+ * Created by JARP on 6/7/17.
+ */
+
+@RunWith(AndroidJUnit4.class)
+@SmallTest
+public class UploadStorageManagerTest {
+
+    private Account[] Accounts;
+    private UploadsStorageManager uploadsStorageManager;
+
+    @Before
+    public void setUp() {
+        Context instrumentationCtx = InstrumentationRegistry.getTargetContext();
+        ContentResolver contentResolver = instrumentationCtx.getContentResolver();
+        uploadsStorageManager = new UploadsStorageManager(contentResolver, instrumentationCtx);
+        Accounts = new Account[]{new Account("A", "A"), new Account("B", "B")};
+    }
+
+    @Test
+    public void testDeleteAllUploads() {
+        //Clean
+        for (Account account : Accounts) {
+            uploadsStorageManager.removeAccountUploads(account);
+        }
+        int accountRowsA = 3;
+        int accountRowsB = 4;
+        insertUploads(Accounts[0], accountRowsA);
+        insertUploads(Accounts[1], accountRowsB);
+
+        Assert.assertTrue("Expected 4 removed uploads files", uploadsStorageManager.removeAccountUploads(Accounts[1]) == 4);
+    }
+
+    private void insertUploads(Account account, int rowsToInsert) {
+
+        for (int i = 0; i < rowsToInsert; i++) {
+            uploadsStorageManager.storeUpload(createUpload(account));
+        }
+    }
+
+    private OCUpload createUpload(Account acc) {
+        return new OCUpload(File.separator + "LocalPath",
+                OCFile.PATH_SEPARATOR + "RemotePath",
+                acc.name);
+    }
+
+    @After
+    public void tearDown() {
+        for (Account account : Accounts) {
+            uploadsStorageManager.removeAccountUploads(account);
+        }
+    }
+}

+ 8 - 0
src/main/java/com/owncloud/android/datamodel/UploadsStorageManager.java

@@ -605,4 +605,12 @@ public class UploadsStorageManager extends Observable {
         return result;
     }
 
+    public int removeAccountUploads(Account account) {
+        Log_OC.v(TAG, "Delete all uploads for account " + account.name);
+        return getDB().delete(
+                ProviderTableMeta.CONTENT_URI_UPLOADS,
+                ProviderTableMeta.UPLOADS_ACCOUNT_NAME + "=?",
+                new String[]{account.name});
+    }
+
 }

+ 1 - 0
src/main/java/com/owncloud/android/ui/activity/UserInfoActivity.java

@@ -360,6 +360,7 @@ public class UserInfoActivity extends FileActivity {
                                     UploadsStorageManager uploadsStorageManager = new UploadsStorageManager(
                                             contentResolver, getActivity());
                                     uploadsStorageManager.cancelPendingAutoUploadJobsForAccount(account);
+                                    uploadsStorageManager.removeAccountUploads(account);
 
                                     // disable daily backup
                                     ArbitraryDataProvider arbitraryDataProvider = new ArbitraryDataProvider(