From fdf390c1978f1ab4ded07490b03f00c2a2b3e333 Mon Sep 17 00:00:00 2001 From: Marino Meneghel Date: Tue, 25 Apr 2023 15:35:12 +0200 Subject: [PATCH] Make QueueNetworkUtil check for actual connectivity As from the docs, the isConnectedOrConnecting method "is good for applications that need to do anything related to the network other than read or write data. For the latter, call isConnected() instead, which guarantees that the network is fully usable.". In the cases used by this method, we want to have a fully working network as the usage is to transfer data. https://developer.android.com/reference/android/net/NetworkInfo#isConnected() MAILAND-3074 --- .../android/core/QueueNetworkUtil.kt | 2 +- .../android/core/QueueNetworkUtilTest.kt | 36 +++++++++---------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/ch/protonmail/android/core/QueueNetworkUtil.kt b/app/src/main/java/ch/protonmail/android/core/QueueNetworkUtil.kt index cbe2c255b..17d54acd3 100644 --- a/app/src/main/java/ch/protonmail/android/core/QueueNetworkUtil.kt +++ b/app/src/main/java/ch/protonmail/android/core/QueueNetworkUtil.kt @@ -134,7 +134,7 @@ class QueueNetworkUtil @Inject constructor( private fun hasConn(checkReal: Boolean): Boolean { val cm = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager val netInfo = cm.activeNetworkInfo - var hasConnection = netInfo != null && netInfo.isConnectedOrConnecting + var hasConnection = netInfo != null && netInfo.isConnected val currentStatus = isServerAccessible if (checkReal) { hasConnection = hasConnection && isServerAccessible diff --git a/app/src/test/java/ch/protonmail/android/core/QueueNetworkUtilTest.kt b/app/src/test/java/ch/protonmail/android/core/QueueNetworkUtilTest.kt index 8f47e0722..dcfaabe71 100644 --- a/app/src/test/java/ch/protonmail/android/core/QueueNetworkUtilTest.kt +++ b/app/src/test/java/ch/protonmail/android/core/QueueNetworkUtilTest.kt @@ -67,7 +67,7 @@ internal open class QueueNetworkUtilTest { @Test fun `should call the listener as soon as the real connectivity is updated`() = with(testInput) { // given - every { networkInfoMock.isConnectedOrConnecting } returns isConnectedOrConnecting + every { networkInfoMock.isConnected } returns isConnected queueNetworkUtil.setListener(listenerMock) // when @@ -82,25 +82,25 @@ internal open class QueueNetworkUtilTest { private val pingNeededStateInputs = listOf( TestInput( serverAccessible = true, - isConnectedOrConnecting = true, + isConnected = true, connectionState = Constants.ConnectionState.PING_NEEDED, expectedNetworkStatus = NetworkUtil.METERED ), TestInput( serverAccessible = true, - isConnectedOrConnecting = false, + isConnected = false, connectionState = Constants.ConnectionState.PING_NEEDED, expectedNetworkStatus = NetworkUtil.DISCONNECTED ), TestInput( serverAccessible = false, - isConnectedOrConnecting = true, + isConnected = true, connectionState = Constants.ConnectionState.PING_NEEDED, expectedNetworkStatus = NetworkUtil.DISCONNECTED ), TestInput( serverAccessible = false, - isConnectedOrConnecting = false, + isConnected = false, connectionState = Constants.ConnectionState.PING_NEEDED, expectedNetworkStatus = NetworkUtil.DISCONNECTED ) @@ -109,25 +109,25 @@ internal open class QueueNetworkUtilTest { private val connectedStateInputs = listOf( TestInput( serverAccessible = true, - isConnectedOrConnecting = true, + isConnected = true, connectionState = Constants.ConnectionState.CONNECTED, expectedNetworkStatus = NetworkUtil.METERED ), TestInput( serverAccessible = true, - isConnectedOrConnecting = false, + isConnected = false, connectionState = Constants.ConnectionState.CONNECTED, expectedNetworkStatus = NetworkUtil.DISCONNECTED ), TestInput( serverAccessible = false, - isConnectedOrConnecting = true, + isConnected = true, connectionState = Constants.ConnectionState.CONNECTED, expectedNetworkStatus = NetworkUtil.DISCONNECTED ), TestInput( serverAccessible = false, - isConnectedOrConnecting = false, + isConnected = false, connectionState = Constants.ConnectionState.CONNECTED, expectedNetworkStatus = NetworkUtil.DISCONNECTED ) @@ -136,25 +136,25 @@ internal open class QueueNetworkUtilTest { private val noInternetStateInputs = listOf( TestInput( serverAccessible = true, - isConnectedOrConnecting = true, + isConnected = true, connectionState = Constants.ConnectionState.NO_INTERNET, expectedNetworkStatus = NetworkUtil.METERED ), TestInput( serverAccessible = true, - isConnectedOrConnecting = false, + isConnected = false, connectionState = Constants.ConnectionState.NO_INTERNET, expectedNetworkStatus = NetworkUtil.DISCONNECTED ), TestInput( serverAccessible = false, - isConnectedOrConnecting = true, + isConnected = true, connectionState = Constants.ConnectionState.NO_INTERNET, expectedNetworkStatus = NetworkUtil.DISCONNECTED ), TestInput( serverAccessible = false, - isConnectedOrConnecting = false, + isConnected = false, connectionState = Constants.ConnectionState.NO_INTERNET, expectedNetworkStatus = NetworkUtil.DISCONNECTED ) @@ -163,25 +163,25 @@ internal open class QueueNetworkUtilTest { private val cantReachServerInputs = listOf( TestInput( serverAccessible = true, - isConnectedOrConnecting = true, + isConnected = true, connectionState = Constants.ConnectionState.CANT_REACH_SERVER, expectedNetworkStatus = NetworkUtil.METERED ), TestInput( serverAccessible = true, - isConnectedOrConnecting = false, + isConnected = false, connectionState = Constants.ConnectionState.CANT_REACH_SERVER, expectedNetworkStatus = NetworkUtil.DISCONNECTED ), TestInput( serverAccessible = false, - isConnectedOrConnecting = true, + isConnected = true, connectionState = Constants.ConnectionState.CANT_REACH_SERVER, expectedNetworkStatus = NetworkUtil.DISCONNECTED ), TestInput( serverAccessible = false, - isConnectedOrConnecting = false, + isConnected = false, connectionState = Constants.ConnectionState.CANT_REACH_SERVER, expectedNetworkStatus = NetworkUtil.DISCONNECTED ) @@ -197,7 +197,7 @@ internal open class QueueNetworkUtilTest { internal data class TestInput( val serverAccessible: Boolean, - val isConnectedOrConnecting: Boolean, + val isConnected: Boolean, val connectionState: Constants.ConnectionState, val expectedNetworkStatus: Int )