Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit be03984d authored by Jack Yu's avatar Jack Yu
Browse files

Added umetered method for data network controller

Added a new method for retrieving unmetered state of
the internet.

Fix: 227488784
Test: atest DataNetworkControllerTest
Change-Id: Ibc32693197503c8c78360c59cd3c4f13f4dfdc3d
parent 3c8a478a
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -1310,6 +1310,19 @@ public class DataNetworkController extends Handler {
        return !evaluation.containsDisallowedReasons();
    }

    /**
     * @return {@code true} internet is unmetered.
     */
    public boolean isInternetUnmetered() {
        return mDataNetworkList.stream()
                .filter(dataNetwork -> !dataNetwork.isConnecting() && !dataNetwork.isDisconnected())
                .filter(DataNetwork::isInternetSupported)
                .allMatch(dataNetwork -> dataNetwork.getNetworkCapabilities()
                        .hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED)
                        || dataNetwork.getNetworkCapabilities()
                        .hasCapability(NetworkCapabilities.NET_CAPABILITY_TEMPORARILY_NOT_METERED));
    }

    /**
     * @return List of the reasons why internet data is not allowed. An empty list if internet
     * is allowed.
+7 −0
Original line number Diff line number Diff line
@@ -1455,6 +1455,7 @@ public class DataNetworkControllerTest extends TelephonyTest {
                mDataNetworkControllerUT.getUnmeteredOverrideNetworkTypes());
        assertFalse(dataNetwork.getNetworkCapabilities().hasCapability(
                NetworkCapabilities.NET_CAPABILITY_TEMPORARILY_NOT_METERED));
        assertThat(mDataNetworkControllerUT.isInternetUnmetered()).isFalse();

        // Change data network type to NR
        serviceStateChanged(TelephonyManager.NETWORK_TYPE_NR,
@@ -1463,6 +1464,7 @@ public class DataNetworkControllerTest extends TelephonyTest {
        processAllMessages();
        assertTrue(dataNetwork.getNetworkCapabilities().hasCapability(
                NetworkCapabilities.NET_CAPABILITY_TEMPORARILY_NOT_METERED));
        assertThat(mDataNetworkControllerUT.isInternetUnmetered()).isTrue();

        // Set all network types metered
        unmeteredNetworkTypes.clear();
@@ -1474,6 +1476,7 @@ public class DataNetworkControllerTest extends TelephonyTest {
        assertTrue(mDataNetworkControllerUT.getUnmeteredOverrideNetworkTypes().isEmpty());
        assertFalse(dataNetwork.getNetworkCapabilities().hasCapability(
                NetworkCapabilities.NET_CAPABILITY_TEMPORARILY_NOT_METERED));
        assertThat(mDataNetworkControllerUT.isInternetUnmetered()).isFalse();
    }

    @Test
@@ -1506,6 +1509,8 @@ public class DataNetworkControllerTest extends TelephonyTest {
        assertEquals(subscriptionPlans, mDataNetworkControllerUT.getSubscriptionPlans());
        assertFalse(dataNetwork.getNetworkCapabilities().hasCapability(
                NetworkCapabilities.NET_CAPABILITY_TEMPORARILY_NOT_METERED));
        assertThat(mDataNetworkControllerUT.isInternetUnmetered()).isFalse();


        // Change data network type to NR
        serviceStateChanged(TelephonyManager.NETWORK_TYPE_NR,
@@ -1514,6 +1519,7 @@ public class DataNetworkControllerTest extends TelephonyTest {
        processAllMessages();
        assertTrue(dataNetwork.getNetworkCapabilities().hasCapability(
                NetworkCapabilities.NET_CAPABILITY_TEMPORARILY_NOT_METERED));
        assertThat(mDataNetworkControllerUT.isInternetUnmetered()).isTrue();

        // Set all network types metered
        subscriptionPlans.clear();
@@ -1524,6 +1530,7 @@ public class DataNetworkControllerTest extends TelephonyTest {
        assertTrue(mDataNetworkControllerUT.getSubscriptionPlans().isEmpty());
        assertFalse(dataNetwork.getNetworkCapabilities().hasCapability(
                NetworkCapabilities.NET_CAPABILITY_TEMPORARILY_NOT_METERED));
        assertThat(mDataNetworkControllerUT.isInternetUnmetered()).isFalse();
    }

    @Test