Skip to content

Commit 461fded

Browse files
Merge pull request #16232 from nextcloud/fix/connectivity-serv
fix: connectivity service
2 parents 9989592 + 4fac497 commit 461fded

24 files changed

Lines changed: 654 additions & 456 deletions

app/build.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -399,6 +399,8 @@ dependencies {
399399
androidTestImplementation(libs.core.testing)
400400
// endregion
401401

402+
testImplementation(libs.kotlinx.coroutines.test)
403+
402404
// region other libraries
403405
compileOnly(libs.org.jbundle.util.osgi.wrapped.org.apache.http.client)
404406
implementation(libs.commons.httpclient.commons.httpclient) // remove after entire switch to lib v2

app/src/androidTest/java/com/nextcloud/client/network/ConnectivityServiceImplIT.kt

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ package com.nextcloud.client.network
99

1010
import android.accounts.AccountManager
1111
import android.content.Context
12-
import android.net.ConnectivityManager
1312
import com.nextcloud.client.account.UserAccountManagerImpl
1413
import com.nextcloud.client.core.ClockImpl
1514
import com.nextcloud.client.network.ConnectivityServiceImpl.GetRequestBuilder
15+
import com.nextcloud.operations.GetMethod
1616
import com.owncloud.android.AbstractOnServerIT
1717
import org.junit.Assert.assertFalse
1818
import org.junit.Assert.assertTrue
@@ -21,15 +21,14 @@ import org.junit.Test
2121
class ConnectivityServiceImplIT : AbstractOnServerIT() {
2222
@Test
2323
fun testInternetWalled() {
24-
val connectivityManager = targetContext.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
2524
val accountManager = targetContext.getSystemService(Context.ACCOUNT_SERVICE) as AccountManager
2625
val userAccountManager = UserAccountManagerImpl(targetContext, accountManager)
2726
val clientFactory = ClientFactoryImpl(targetContext)
28-
val requestBuilder = GetRequestBuilder()
27+
val requestBuilder = GetRequestBuilder { url -> GetMethod(url, false) }
2928
val walledCheckCache = WalledCheckCache(ClockImpl())
3029

3130
val sut = ConnectivityServiceImpl(
32-
connectivityManager,
31+
targetContext,
3332
userAccountManager,
3433
clientFactory,
3534
requestBuilder,

app/src/androidTest/java/com/nextcloud/test/ConnectivityServiceOfflineMock.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,16 @@ package com.nextcloud.test
88

99
import com.nextcloud.client.network.Connectivity
1010
import com.nextcloud.client.network.ConnectivityService
11+
import com.nextcloud.client.network.NetworkChangeListener
1112

1213
/** A mocked connectivity service returning that the device is offline **/
1314
class ConnectivityServiceOfflineMock : ConnectivityService {
15+
override fun addListener(listener: NetworkChangeListener) = Unit
16+
override fun removeListener(listener: NetworkChangeListener) = Unit
1417
override fun isNetworkAndServerAvailable(callback: ConnectivityService.GenericCallback<Boolean>) {
1518
callback.onComplete(false)
1619
}
17-
1820
override fun isConnected(): Boolean = false
19-
2021
override fun isInternetWalled(): Boolean = false
21-
2222
override fun getConnectivity(): Connectivity = Connectivity.CONNECTED_WIFI
2323
}

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import com.nextcloud.client.jobs.upload.FileUploadWorker;
3333
import com.nextcloud.client.network.Connectivity;
3434
import com.nextcloud.client.network.ConnectivityService;
35+
import com.nextcloud.client.network.NetworkChangeListener;
3536
import com.nextcloud.client.preferences.AppPreferencesImpl;
3637
import com.nextcloud.client.preferences.DarkMode;
3738
import com.nextcloud.common.NextcloudClient;
@@ -371,6 +372,16 @@ public void uploadFile(File file, String remotePath) {
371372

372373
public void uploadOCUpload(OCUpload ocUpload) {
373374
ConnectivityService connectivityServiceMock = new ConnectivityService() {
375+
@Override
376+
public void addListener(@NonNull NetworkChangeListener listener) {
377+
378+
}
379+
380+
@Override
381+
public void removeListener(@NonNull NetworkChangeListener listener) {
382+
383+
}
384+
374385
@Override
375386
public void isNetworkAndServerAvailable(@NonNull GenericCallback<Boolean> callback) {
376387

app/src/androidTest/java/com/owncloud/android/AbstractOnServerIT.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import com.nextcloud.client.jobs.upload.FileUploadWorker;
2222
import com.nextcloud.client.network.Connectivity;
2323
import com.nextcloud.client.network.ConnectivityService;
24+
import com.nextcloud.client.network.NetworkChangeListener;
2425
import com.owncloud.android.datamodel.OCFile;
2526
import com.owncloud.android.datamodel.UploadsStorageManager;
2627
import com.owncloud.android.db.OCUpload;
@@ -203,6 +204,16 @@ public void uploadOCUpload(OCUpload ocUpload) {
203204

204205
public void uploadOCUpload(OCUpload ocUpload, int localBehaviour) {
205206
ConnectivityService connectivityServiceMock = new ConnectivityService() {
207+
@Override
208+
public void addListener(@NonNull NetworkChangeListener listener) {
209+
210+
}
211+
212+
@Override
213+
public void removeListener(@NonNull NetworkChangeListener listener) {
214+
215+
}
216+
206217
@Override
207218
public void isNetworkAndServerAvailable(@NonNull GenericCallback<Boolean> callback) {
208219
callback.onComplete(true);

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

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import com.nextcloud.client.jobs.upload.FileUploadWorker;
1515
import com.nextcloud.client.network.Connectivity;
1616
import com.nextcloud.client.network.ConnectivityService;
17+
import com.nextcloud.client.network.NetworkChangeListener;
1718
import com.owncloud.android.datamodel.OCFile;
1819
import com.owncloud.android.datamodel.UploadsStorageManager;
1920
import com.owncloud.android.db.OCUpload;
@@ -56,6 +57,16 @@ public class UploadIT extends AbstractOnServerIT {
5657
targetContext.getContentResolver());
5758

5859
private ConnectivityService connectivityServiceMock = new ConnectivityService() {
60+
@Override
61+
public void addListener(@NonNull NetworkChangeListener listener) {
62+
63+
}
64+
65+
@Override
66+
public void removeListener(@NonNull NetworkChangeListener listener) {
67+
68+
}
69+
5970
@Override
6071
public void isNetworkAndServerAvailable(@NonNull GenericCallback<Boolean> callback) {
6172

@@ -278,6 +289,16 @@ public BatteryStatus getBattery() {
278289
@Test
279290
public void testUploadOnWifiOnlyButNoWifi() {
280291
ConnectivityService connectivityServiceMock = new ConnectivityService() {
292+
@Override
293+
public void addListener(@NonNull NetworkChangeListener listener) {
294+
295+
}
296+
297+
@Override
298+
public void removeListener(@NonNull NetworkChangeListener listener) {
299+
300+
}
301+
281302
@Override
282303
public void isNetworkAndServerAvailable(@NonNull GenericCallback<Boolean> callback) {
283304

@@ -295,7 +316,7 @@ public boolean isInternetWalled() {
295316

296317
@Override
297318
public Connectivity getConnectivity() {
298-
return new Connectivity(true, false, false, true);
319+
return new Connectivity(true, false, false, true, false);
299320
}
300321
};
301322
OCUpload ocUpload = new OCUpload(FileStorageUtils.getTemporalPath(account.name) + "/empty.txt",
@@ -367,6 +388,16 @@ public void testUploadOnWifiOnlyAndWifi() {
367388
@Test
368389
public void testUploadOnWifiOnlyButMeteredWifi() {
369390
ConnectivityService connectivityServiceMock = new ConnectivityService() {
391+
@Override
392+
public void addListener(@NonNull NetworkChangeListener listener) {
393+
394+
}
395+
396+
@Override
397+
public void removeListener(@NonNull NetworkChangeListener listener) {
398+
399+
}
400+
370401
@Override
371402
public void isNetworkAndServerAvailable(@NonNull GenericCallback<Boolean> callback) {
372403

@@ -384,7 +415,7 @@ public boolean isInternetWalled() {
384415

385416
@Override
386417
public Connectivity getConnectivity() {
387-
return new Connectivity(true, true, true, true);
418+
return new Connectivity(true, true, true, true, false);
388419
}
389420
};
390421
OCUpload ocUpload = new OCUpload(FileStorageUtils.getTemporalPath(account.name) + "/empty.txt",

app/src/androidTest/java/com/owncloud/android/files/services/FileUploaderIT.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import com.nextcloud.client.jobs.upload.FileUploadHelper
1616
import com.nextcloud.client.jobs.upload.FileUploadWorker
1717
import com.nextcloud.client.network.Connectivity
1818
import com.nextcloud.client.network.ConnectivityService
19+
import com.nextcloud.client.network.NetworkChangeListener
1920
import com.owncloud.android.AbstractOnServerIT
2021
import com.owncloud.android.datamodel.OCFile
2122
import com.owncloud.android.datamodel.UploadsStorageManager
@@ -34,10 +35,10 @@ abstract class FileUploaderIT : AbstractOnServerIT() {
3435
private var uploadsStorageManager: UploadsStorageManager? = null
3536

3637
private val connectivityServiceMock: ConnectivityService = object : ConnectivityService {
38+
override fun addListener(listener: NetworkChangeListener) = Unit
39+
override fun removeListener(listener: NetworkChangeListener) = Unit
3740
override fun isNetworkAndServerAvailable(callback: ConnectivityService.GenericCallback<Boolean>) = Unit
38-
3941
override fun isConnected(): Boolean = false
40-
4142
override fun isInternetWalled(): Boolean = false
4243
override fun getConnectivity(): Connectivity = Connectivity.CONNECTED_WIFI
4344
}

app/src/debug/java/com/nextcloud/test/TestActivity.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import com.nextcloud.client.jobs.download.FileDownloadWorker
1616
import com.nextcloud.client.jobs.upload.FileUploadHelper
1717
import com.nextcloud.client.network.Connectivity
1818
import com.nextcloud.client.network.ConnectivityService
19+
import com.nextcloud.client.network.NetworkChangeListener
1920
import com.nextcloud.utils.EditorUtils
2021
import com.owncloud.android.R
2122
import com.owncloud.android.databinding.TestLayoutBinding
@@ -43,12 +44,11 @@ class TestActivity :
4344
private lateinit var binding: TestLayoutBinding
4445

4546
val connectivityServiceMock: ConnectivityService = object : ConnectivityService {
47+
override fun addListener(listener: NetworkChangeListener) = Unit
48+
override fun removeListener(listener: NetworkChangeListener) = Unit
4649
override fun isNetworkAndServerAvailable(callback: ConnectivityService.GenericCallback<Boolean>) = Unit
47-
4850
override fun isConnected(): Boolean = false
49-
5051
override fun isInternetWalled(): Boolean = false
51-
5252
override fun getConnectivity(): Connectivity = Connectivity.CONNECTED_WIFI
5353
}
5454

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

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import com.nextcloud.client.widget.DashboardWidgetConfigurationActivity;
2727
import com.nextcloud.client.widget.DashboardWidgetProvider;
2828
import com.nextcloud.client.widget.DashboardWidgetService;
29-
import com.nextcloud.receiver.NetworkChangeReceiver;
3029
import com.nextcloud.ui.ChooseAccountDialogFragment;
3130
import com.nextcloud.ui.ChooseStorageLocationDialogFragment;
3231
import com.nextcloud.ui.ImageDetailFragment;
@@ -324,9 +323,6 @@ abstract class ComponentsModule {
324323
@ContributesAndroidInjector
325324
abstract BootupBroadcastReceiver bootupBroadcastReceiver();
326325

327-
@ContributesAndroidInjector
328-
abstract NetworkChangeReceiver networkChangeReceiver();
329-
330326
@ContributesAndroidInjector
331327
abstract NotificationWork.NotificationReceiver notificationWorkBroadcastReceiver();
332328

app/src/main/java/com/nextcloud/client/network/Connectivity.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ data class Connectivity(
1010
val isConnected: Boolean = false,
1111
val isMetered: Boolean = false,
1212
val isWifi: Boolean = false,
13-
val isServerAvailable: Boolean? = null
13+
val isServerAvailable: Boolean? = null,
14+
val isVPN: Boolean = false
1415
) {
1516
companion object {
1617
@JvmField
@@ -21,7 +22,8 @@ data class Connectivity(
2122
isConnected = true,
2223
isMetered = false,
2324
isWifi = true,
24-
isServerAvailable = true
25+
isServerAvailable = true,
26+
isVPN = false
2527
)
2628
}
2729
}

0 commit comments

Comments
 (0)