Skip to content

Commit c62e89b

Browse files
author
drone
committed
Merge commit '442394f949ff2de86bcccae172d2e9d997ab2ef8'
2 parents 182b65e + 442394f commit c62e89b

File tree

61 files changed

+725
-295
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

61 files changed

+725
-295
lines changed

gradle.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,4 @@ NC_TEST_SERVER_PASSWORD=test
55
android.enableJetifier=true
66
android.useAndroidX=true
77
android.debug.obsoleteApi=true
8+

src/androidTest/java/com/owncloud/android/AbstractIT.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -38,22 +38,22 @@ public abstract class AbstractIT {
3838

3939
protected static OwnCloudClient client;
4040
static Account account;
41-
protected static Context context;
41+
protected static Context targetContext;
4242

4343
@BeforeClass
4444
public static void beforeAll() {
4545
try {
46-
context = InstrumentationRegistry.getInstrumentation().getTargetContext();
46+
targetContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
4747
Bundle arguments = androidx.test.platform.app.InstrumentationRegistry.getArguments();
4848

4949
Uri baseUrl = Uri.parse(arguments.getString("TEST_SERVER_URL"));
5050
String username = arguments.getString("TEST_SERVER_USERNAME");
5151
String password = arguments.getString("TEST_SERVER_PASSWORD");
5252

53-
Account temp = new Account(username + "@" + baseUrl, MainApp.getAccountType(context));
53+
Account temp = new Account(username + "@" + baseUrl, MainApp.getAccountType(targetContext));
5454

55-
if (!com.owncloud.android.authentication.AccountUtils.exists(temp, context)) {
56-
AccountManager accountManager = AccountManager.get(context);
55+
if (!com.owncloud.android.authentication.AccountUtils.exists(temp, targetContext)) {
56+
AccountManager accountManager = AccountManager.get(targetContext);
5757
accountManager.addAccountExplicitly(temp, password, null);
5858
accountManager.setUserData(temp, AccountUtils.Constants.KEY_OC_ACCOUNT_VERSION,
5959
Integer.toString(com.owncloud.android.authentication.AccountUtils.ACCOUNT_VERSION));
@@ -62,14 +62,14 @@ public static void beforeAll() {
6262
accountManager.setUserData(temp, AccountUtils.Constants.KEY_USER_ID, username);
6363
}
6464

65-
account = com.owncloud.android.authentication.AccountUtils.getOwnCloudAccountByName(context,
66-
username + "@" + baseUrl);
65+
account = com.owncloud.android.authentication.AccountUtils.getOwnCloudAccountByName(targetContext,
66+
username + "@" + baseUrl);
6767

6868
if (account == null) {
6969
throw new ActivityNotFoundException();
7070
}
7171

72-
client = OwnCloudClientFactory.createOwnCloudClient(account, context);
72+
client = OwnCloudClientFactory.createOwnCloudClient(account, targetContext);
7373

7474
createDummyFiles();
7575

@@ -86,7 +86,7 @@ public static void beforeAll() {
8686
}
8787

8888
FileDataStorageManager getStorageManager() {
89-
return new FileDataStorageManager(account, context.getContentResolver());
89+
return new FileDataStorageManager(account, targetContext.getContentResolver());
9090
}
9191

9292
private static void createDummyFiles() throws IOException {

src/androidTest/java/com/owncloud/android/FileIT.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public void testCreateFolder() {
3535
assertTrue(getStorageManager().getFileByPath(path).isFolder());
3636

3737
// cleanup
38-
new RemoveFileOperation(path, false, account, false, context).execute(client, getStorageManager());
38+
new RemoveFileOperation(path, false, account, false, targetContext).execute(client, getStorageManager());
3939
}
4040

4141
@Test
@@ -52,6 +52,6 @@ public void testCreateNonExistingSubFolder() {
5252
assertTrue(getStorageManager().getFileByPath(path).isFolder());
5353

5454
// cleanup
55-
new RemoveFileOperation("/testFolder/", false, account, false, context).execute(client, getStorageManager());
55+
new RemoveFileOperation("/testFolder/", false, account, false, targetContext).execute(client, getStorageManager());
5656
}
5757
}

src/androidTest/java/com/owncloud/android/UploadIT.java

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,18 @@
11
package com.owncloud.android;
22

3+
import android.content.ContentResolver;
4+
5+
import com.nextcloud.client.account.CurrentAccountProvider;
6+
import com.owncloud.android.authentication.AccountUtils;
7+
import com.owncloud.android.datamodel.UploadsStorageManager;
38
import com.owncloud.android.db.OCUpload;
49
import com.owncloud.android.files.services.FileUploader;
510
import com.owncloud.android.lib.common.operations.RemoteOperationResult;
611
import com.owncloud.android.operations.RemoveFileOperation;
712
import com.owncloud.android.operations.UploadFileOperation;
813
import com.owncloud.android.utils.FileStorageUtils;
914

15+
import org.junit.Before;
1016
import org.junit.Test;
1117
import org.junit.runner.RunWith;
1218

@@ -21,6 +27,16 @@
2127
@RunWith(AndroidJUnit4.class)
2228
public class UploadIT extends AbstractIT {
2329

30+
31+
private UploadsStorageManager storageManager;
32+
33+
@Before
34+
public void setUp() {
35+
final ContentResolver contentResolver = targetContext.getContentResolver();
36+
final CurrentAccountProvider currentAccountProvider = () -> AccountUtils.getCurrentOwnCloudAccount(targetContext);
37+
storageManager = new UploadsStorageManager(currentAccountProvider, contentResolver, targetContext);
38+
}
39+
2440
@Test
2541
public void testEmptyUpload() {
2642
OCUpload ocUpload = new OCUpload(FileStorageUtils.getSavePath(account.name) + "/empty.txt",
@@ -31,7 +47,7 @@ public void testEmptyUpload() {
3147
assertTrue(result.toString(), result.isSuccess());
3248

3349
// cleanup
34-
new RemoveFileOperation("/testUpload/", false, account, false, context).execute(client, getStorageManager());
50+
new RemoveFileOperation("/testUpload/", false, account, false, targetContext).execute(client, getStorageManager());
3551
}
3652

3753
@Test
@@ -44,7 +60,7 @@ public void testNonEmptyUpload() {
4460
assertTrue(result.toString(), result.isSuccess());
4561

4662
// cleanup
47-
new RemoveFileOperation("/testUpload/", false, account, false, context).execute(client, getStorageManager());
63+
new RemoveFileOperation("/testUpload/", false, account, false, targetContext).execute(client, getStorageManager());
4864
}
4965

5066
@Test
@@ -57,17 +73,18 @@ public void testChunkedUpload() {
5773
assertTrue(result.toString(), result.isSuccess());
5874

5975
// cleanup
60-
new RemoveFileOperation("/testUpload/", false, account, false, context).execute(client, getStorageManager());
76+
new RemoveFileOperation("/testUpload/", false, account, false, targetContext).execute(client, getStorageManager());
6177
}
6278

6379
public RemoteOperationResult testUpload(OCUpload ocUpload) {
6480
UploadFileOperation newUpload = new UploadFileOperation(
81+
storageManager,
6582
account,
6683
null,
6784
ocUpload,
6885
false,
6986
FileUploader.LOCAL_BEHAVIOUR_COPY,
70-
context,
87+
targetContext,
7188
false,
7289
false
7390
);
@@ -85,12 +102,13 @@ public void testUploadInNonExistingFolder() {
85102
OCUpload ocUpload = new OCUpload(FileStorageUtils.getSavePath(account.name) + "/empty.txt",
86103
"/testUpload/2/3/4/1.txt", account.name);
87104
UploadFileOperation newUpload = new UploadFileOperation(
105+
storageManager,
88106
account,
89107
null,
90108
ocUpload,
91109
false,
92110
FileUploader.LOCAL_BEHAVIOUR_COPY,
93-
context,
111+
targetContext,
94112
false,
95113
false
96114
);
@@ -104,6 +122,6 @@ public void testUploadInNonExistingFolder() {
104122
assertTrue(result.toString(), result.isSuccess());
105123

106124
// cleanup
107-
new RemoveFileOperation("/testUpload/", false, account, false, context).execute(client, getStorageManager());
125+
new RemoveFileOperation("/testUpload/", false, account, false, targetContext).execute(client, getStorageManager());
108126
}
109127
}

src/androidTest/java/com/owncloud/android/datamodel/UploadStorageManagerTest.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import android.content.ContentResolver;
55
import android.content.Context;
66

7+
import com.nextcloud.client.account.CurrentAccountProvider;
78
import com.owncloud.android.db.OCUpload;
89

910
import org.junit.After;
@@ -14,6 +15,7 @@
1415

1516
import java.io.File;
1617

18+
import androidx.annotation.Nullable;
1719
import androidx.test.InstrumentationRegistry;
1820
import androidx.test.filters.SmallTest;
1921
import androidx.test.runner.AndroidJUnit4;
@@ -28,12 +30,13 @@ public class UploadStorageManagerTest {
2830

2931
private Account[] Accounts;
3032
private UploadsStorageManager uploadsStorageManager;
33+
private CurrentAccountProvider currentAccountProvider = () -> null;
3134

3235
@Before
3336
public void setUp() {
3437
Context instrumentationCtx = InstrumentationRegistry.getTargetContext();
3538
ContentResolver contentResolver = instrumentationCtx.getContentResolver();
36-
uploadsStorageManager = new UploadsStorageManager(contentResolver, instrumentationCtx);
39+
uploadsStorageManager = new UploadsStorageManager(currentAccountProvider, contentResolver, instrumentationCtx);
3740
Accounts = new Account[]{new Account("A", "A"), new Account("B", "B")};
3841
}
3942

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.nextcloud.client.account;
2+
3+
import android.accounts.Account;
4+
5+
import androidx.annotation.Nullable;
6+
7+
/**
8+
* This interface provides access to currently selected user Account.
9+
* @see UserAccountManager
10+
*/
11+
@FunctionalInterface
12+
public interface CurrentAccountProvider {
13+
/**
14+
* Get currently active account.
15+
*
16+
* @return Currently selected {@link Account} or first valid {@link Account} registered in OS or null, if not available at all.
17+
*/
18+
@Nullable
19+
Account getCurrentAccount();
20+
}

src/main/java/com/nextcloud/client/account/UserAccountManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323

2424
import androidx.annotation.NonNull;
2525

26-
public interface UserAccountManager {
26+
public interface UserAccountManager extends CurrentAccountProvider {
2727

2828
int ACCOUNT_VERSION = 1;
2929
int ACCOUNT_VERSION_WITH_PROPER_ID = 2;

src/main/java/com/nextcloud/client/account/UserAccountManagerImpl.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import javax.inject.Inject;
4040

4141
import androidx.annotation.NonNull;
42+
import androidx.annotation.Nullable;
4243

4344
public class UserAccountManagerImpl implements UserAccountManager {
4445

@@ -49,7 +50,10 @@ public class UserAccountManagerImpl implements UserAccountManager {
4950
private AccountManager accountManager;
5051

5152
@Inject
52-
public UserAccountManagerImpl(Context context, AccountManager accountManager) {
53+
public UserAccountManagerImpl(
54+
Context context,
55+
AccountManager accountManager
56+
) {
5357
this.context = context;
5458
this.accountManager = accountManager;
5559
}
@@ -60,6 +64,11 @@ public Account[] getAccounts() {
6064
return accountManager.getAccountsByType(getAccountType());
6165
}
6266

67+
@Nullable
68+
public Account getCurrentAccount() {
69+
return AccountUtils.getCurrentOwnCloudAccount(context);
70+
}
71+
6372
public void updateAccountVersion() {
6473
Account currentAccount = AccountUtils.getCurrentOwnCloudAccount(context);
6574

src/main/java/com/nextcloud/client/di/AppModule.java

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,23 @@
2222

2323
import android.accounts.AccountManager;
2424
import android.app.Application;
25+
import android.content.ContentResolver;
2526
import android.content.Context;
2627

28+
import com.nextcloud.client.account.CurrentAccountProvider;
2729
import com.nextcloud.client.account.UserAccountManager;
2830
import com.nextcloud.client.account.UserAccountManagerImpl;
2931
import com.nextcloud.client.preferences.AppPreferences;
3032
import com.nextcloud.client.preferences.AppPreferencesImpl;
33+
import com.owncloud.android.datamodel.ArbitraryDataProvider;
34+
import com.owncloud.android.datamodel.UploadsStorageManager;
35+
import com.owncloud.android.ui.activities.data.activities.ActivitiesRepository;
36+
import com.owncloud.android.ui.activities.data.activities.ActivitiesServiceApi;
37+
import com.owncloud.android.ui.activities.data.activities.ActivitiesServiceApiImpl;
38+
import com.owncloud.android.ui.activities.data.activities.RemoteActivitiesRepository;
39+
import com.owncloud.android.ui.activities.data.files.FilesRepository;
40+
import com.owncloud.android.ui.activities.data.files.FilesServiceApiImpl;
41+
import com.owncloud.android.ui.activities.data.files.RemoteFilesRepository;
3142

3243
import dagger.Module;
3344
import dagger.Provides;
@@ -51,7 +62,39 @@ AppPreferences preferences(Application application) {
5162
}
5263

5364
@Provides
54-
UserAccountManager userAccountManager(Context context, AccountManager accountManager) {
65+
UserAccountManager userAccountManager(
66+
Context context,
67+
AccountManager accountManager
68+
) {
5569
return new UserAccountManagerImpl(context, accountManager);
5670
}
71+
72+
@Provides
73+
ArbitraryDataProvider arbitraryDataProvider(Context context) {
74+
final ContentResolver resolver = context.getContentResolver();
75+
return new ArbitraryDataProvider(resolver);
76+
}
77+
78+
@Provides
79+
ActivitiesServiceApi activitiesServiceApi(UserAccountManager accountManager) {
80+
return new ActivitiesServiceApiImpl(accountManager);
81+
}
82+
83+
@Provides
84+
ActivitiesRepository activitiesRepository(ActivitiesServiceApi api) {
85+
return new RemoteActivitiesRepository(api);
86+
}
87+
88+
@Provides
89+
FilesRepository filesRepository(UserAccountManager accountManager) {
90+
return new RemoteFilesRepository(new FilesServiceApiImpl(accountManager));
91+
}
92+
93+
@Provides UploadsStorageManager uploadsStorageManager(Context context, CurrentAccountProvider currentAccountProvider) {
94+
return new UploadsStorageManager(currentAccountProvider, context.getContentResolver(), context);
95+
}
96+
97+
@Provides CurrentAccountProvider currentAccountProvider(UserAccountManager accountManager) {
98+
return accountManager;
99+
}
57100
}

src/main/java/com/nextcloud/client/di/ComponentsModule.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,12 @@
2323
import com.owncloud.android.authentication.AuthenticatorActivity;
2424
import com.owncloud.android.authentication.DeepLinkLoginActivity;
2525
import com.owncloud.android.files.BootupBroadcastReceiver;
26+
import com.owncloud.android.files.services.FileUploader;
27+
import com.owncloud.android.providers.DiskLruImageCacheFileProvider;
2628
import com.owncloud.android.providers.DocumentsStorageProvider;
29+
import com.owncloud.android.providers.UsersAndGroupsSearchProvider;
2730
import com.owncloud.android.ui.activities.ActivitiesActivity;
31+
import com.owncloud.android.ui.activity.BaseActivity;
2832
import com.owncloud.android.ui.activity.ConflictsResolveActivity;
2933
import com.owncloud.android.ui.activity.ContactsPreferenceActivity;
3034
import com.owncloud.android.ui.activity.CopyToClipboardActivity;
@@ -53,8 +57,10 @@
5357
import com.owncloud.android.ui.activity.UploadPathActivity;
5458
import com.owncloud.android.ui.activity.UserInfoActivity;
5559
import com.owncloud.android.ui.activity.WhatsNewActivity;
60+
import com.owncloud.android.ui.dialog.ChooseTemplateDialogFragment;
5661
import com.owncloud.android.ui.errorhandling.ErrorShowActivity;
5762
import com.owncloud.android.ui.fragment.ExtendedListFragment;
63+
import com.owncloud.android.ui.fragment.FileDetailActivitiesFragment;
5864
import com.owncloud.android.ui.fragment.FileDetailFragment;
5965
import com.owncloud.android.ui.fragment.LocalFileListFragment;
6066
import com.owncloud.android.ui.fragment.OCFileListFragment;
@@ -73,6 +79,7 @@
7379
abstract class ComponentsModule {
7480
@ContributesAndroidInjector abstract ActivitiesActivity activitiesActivity();
7581
@ContributesAndroidInjector abstract AuthenticatorActivity authenticatorActivity();
82+
@ContributesAndroidInjector abstract BaseActivity baseActivity();
7683
@ContributesAndroidInjector abstract ConflictsResolveActivity conflictsResolveActivity();
7784
@ContributesAndroidInjector abstract ContactsPreferenceActivity contactsPreferenceActivity();
7885
@ContributesAndroidInjector abstract CopyToClipboardActivity copyToClipboardActivity();
@@ -111,8 +118,14 @@ abstract class ComponentsModule {
111118
@ContributesAndroidInjector abstract FileDetailFragment fileDetailFragment();
112119
@ContributesAndroidInjector abstract LocalFileListFragment localFileListFragment();
113120
@ContributesAndroidInjector abstract OCFileListFragment ocFileListFragment();
121+
@ContributesAndroidInjector abstract FileDetailActivitiesFragment fileDetailActivitiesFragment();
122+
@ContributesAndroidInjector abstract ChooseTemplateDialogFragment chooseTemplateDialogFragment();
123+
124+
@ContributesAndroidInjector abstract FileUploader fileUploader();
114125

115126
@ContributesAndroidInjector abstract BootupBroadcastReceiver bootupBroadcastReceiver();
116127

117128
@ContributesAndroidInjector abstract DocumentsStorageProvider documentsStorageProvider();
129+
@ContributesAndroidInjector abstract UsersAndGroupsSearchProvider usersAndGroupsSearchProvider();
130+
@ContributesAndroidInjector abstract DiskLruImageCacheFileProvider diskLruImageCacheFileProvider();
118131
}

0 commit comments

Comments
 (0)