Skip to content

Commit

Permalink
Changes in logic
Browse files Browse the repository at this point in the history
  • Loading branch information
subhajitxyz committed Oct 4, 2024
1 parent 22986cb commit e94ae90
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,16 @@ import org.mockito.Mockito.mock
import org.robolectric.Shadows.shadowOf
import org.robolectric.shadows.ShadowNetworkInfo
import javax.inject.Inject
import org.robolectric.shadows.ShadowNetworkCapabilities

/** Test utility to modify [ShadowNetworkInfo] in tests. */
class NetworkConnectionTestUtil @Inject constructor(private val context: Context) {

private val connectivityManager by lazy {
context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
}
private val networkCapabilities = ShadowNetworkCapabilities.newInstance()


/**
* Sets the [ShadowNetworkInfo] during the test.
Expand Down Expand Up @@ -53,17 +56,12 @@ class NetworkConnectionTestUtil @Inject constructor(private val context: Context
* @param transportType the type of transport being used (e.g., WiFi, Cellular)
*/
private fun setNetworkCapabilities(isConnected: Boolean, transportType: Int) {
val networkCapabilities = mock(NetworkCapabilities::class.java)

`when`(networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET))
.thenReturn(isConnected)

`when`(networkCapabilities.hasTransport(transportType)).thenReturn(isConnected)

shadowOf(connectivityManager).setNetworkCapabilities(
mock(Network::class.java),
networkCapabilities
)
shadowOf(networkCapabilities).addCapability(transportType)
if (isConnected) {
shadowOf(networkCapabilities).addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
} else {
shadowOf(networkCapabilities).removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
}
}

private fun getTransportTypeFromStatus(status: Int): Int {
Expand Down
1 change: 1 addition & 0 deletions utility/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.oppia.android.util">
<uses-sdk android:targetSdkVersion="33" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
</manifest>
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import android.content.Context
import android.net.ConnectivityManager
import android.net.NetworkCapabilities
import android.os.Build
import androidx.annotation.RequiresApi
import org.oppia.android.util.networking.NetworkConnectionUtil.ProdConnectionStatus.CELLULAR
import org.oppia.android.util.networking.NetworkConnectionUtil.ProdConnectionStatus.LOCAL
import org.oppia.android.util.networking.NetworkConnectionUtil.ProdConnectionStatus.NONE
Expand Down Expand Up @@ -33,11 +32,9 @@ class NetworkConnectionUtilProdImpl @Inject constructor(
}

/** Uses NetworkCapabilities for SDK versions >= 23. */
@RequiresApi(Build.VERSION_CODES.M)
private fun getConnectionStatusForNewerDevices(
connectivityManager: ConnectivityManager
): ConnectionStatus {

val network = connectivityManager.activeNetwork
val capabilities = connectivityManager.getNetworkCapabilities(network)
return capabilities?.let {
Expand All @@ -56,15 +53,15 @@ class NetworkConnectionUtilProdImpl @Inject constructor(
private fun getConnectionStatusForOlderDevices(
connectivityManager: ConnectivityManager
): ConnectionStatus {

val activeNetworkInfo = connectivityManager.activeNetworkInfo
return activeNetworkInfo?.let { activeNetwork ->
return connectivityManager.activeNetworkInfo?.let { activeNetwork ->
val isConnected = activeNetwork.isConnected
val isLocal = activeNetwork.type == ConnectivityManager.TYPE_WIFI ||
val isLocal = activeNetwork.type ==
ConnectivityManager.TYPE_WIFI ||
activeNetwork.type == ConnectivityManager.TYPE_ETHERNET
val isCellular = activeNetwork.type == ConnectivityManager.TYPE_MOBILE ||
val isCellular = activeNetwork.type ==
ConnectivityManager.TYPE_MOBILE ||
activeNetwork.type == ConnectivityManager.TYPE_WIMAX
when {
return@let when {
isConnected && isLocal -> LOCAL
isConnected && isCellular -> CELLULAR
else -> NONE
Expand Down

0 comments on commit e94ae90

Please sign in to comment.