Loading src/java/com/android/internal/telephony/dataconnection/DataConnection.java +7 −0 Original line number Diff line number Diff line Loading @@ -409,6 +409,9 @@ public class DataConnection extends StateMachine { networkType, NETWORK_TYPE, TelephonyManager.getNetworkTypeName(networkType)); mNetworkInfo.setRoaming(ss.getDataRoaming()); mNetworkInfo.setIsAvailable(true); // The network should be by default metered until we find it has NET_CAPABILITY_NOT_METERED // capability. mNetworkInfo.setMetered(true); addState(mDefaultState); addState(mInactiveState, mDefaultState); Loading Loading @@ -947,6 +950,10 @@ public class DataConnection extends StateMachine { if (!mApnSetting.isMetered(mPhone.getContext(), mPhone.getSubId(), mPhone.getServiceState().getDataRoaming())) { result.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED); mNetworkInfo.setMetered(false); } else { result.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED); mNetworkInfo.setMetered(true); } result.maybeMarkCapabilitiesRestricted(); Loading tests/telephonytests/src/com/android/internal/telephony/dataconnection/DataConnectionTest.java +51 −0 Original line number Diff line number Diff line Loading @@ -16,10 +16,13 @@ package com.android.internal.telephony.dataconnection; import android.net.NetworkCapabilities; import android.net.NetworkInfo; import android.os.AsyncResult; import android.os.Handler; import android.os.HandlerThread; import android.os.Message; import android.telephony.CarrierConfigManager; import android.telephony.ServiceState; import android.test.suitebuilder.annotation.SmallTest; Loading @@ -32,15 +35,20 @@ import com.android.internal.telephony.dataconnection.DataConnection.DisconnectPa import com.android.internal.util.IState; import com.android.internal.util.StateMachine; import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertFalse; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import java.lang.reflect.Field; import java.lang.reflect.Method; import static com.android.internal.telephony.TelephonyTestUtils.waitForMs; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.mockito.Matchers.any; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.doReturn; Loading Loading @@ -246,4 +254,47 @@ public class DataConnectionTest extends TelephonyTest { AsyncResult ar = new AsyncResult(null, response, null); assertEquals(RetryManager.NO_RETRY, getSuggestedRetryDelay(ar)); } private NetworkInfo getNetworkInfo() throws Exception { Field f = DataConnection.class.getDeclaredField("mNetworkInfo"); f.setAccessible(true); return (NetworkInfo) f.get(mDc); } private NetworkCapabilities getCopyNetworkCapabilities() throws Exception { Method method = DataConnection.class.getDeclaredMethod("getCopyNetworkCapabilities"); method.setAccessible(true); return (NetworkCapabilities) method.invoke(mDc); } @Test @SmallTest public void testMeteredCapability() throws Exception { mContextFixture.getCarrierConfigBundle(). putStringArray(CarrierConfigManager.KEY_CARRIER_METERED_APN_TYPES_STRINGS, new String[] {"default"}); testConnectEvent(); assertTrue(getNetworkInfo().isMetered()); assertFalse(getCopyNetworkCapabilities(). hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED)); } @Test @SmallTest public void testNonMeteredCapability() throws Exception { doReturn(1).when(mPhone).getSubId(); mContextFixture.getCarrierConfigBundle(). putStringArray(CarrierConfigManager.KEY_CARRIER_METERED_APN_TYPES_STRINGS, new String[] {"mms"}); testConnectEvent(); assertFalse(getNetworkInfo().isMetered()); assertTrue(getCopyNetworkCapabilities(). hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED)); } } No newline at end of file Loading
src/java/com/android/internal/telephony/dataconnection/DataConnection.java +7 −0 Original line number Diff line number Diff line Loading @@ -409,6 +409,9 @@ public class DataConnection extends StateMachine { networkType, NETWORK_TYPE, TelephonyManager.getNetworkTypeName(networkType)); mNetworkInfo.setRoaming(ss.getDataRoaming()); mNetworkInfo.setIsAvailable(true); // The network should be by default metered until we find it has NET_CAPABILITY_NOT_METERED // capability. mNetworkInfo.setMetered(true); addState(mDefaultState); addState(mInactiveState, mDefaultState); Loading Loading @@ -947,6 +950,10 @@ public class DataConnection extends StateMachine { if (!mApnSetting.isMetered(mPhone.getContext(), mPhone.getSubId(), mPhone.getServiceState().getDataRoaming())) { result.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED); mNetworkInfo.setMetered(false); } else { result.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED); mNetworkInfo.setMetered(true); } result.maybeMarkCapabilitiesRestricted(); Loading
tests/telephonytests/src/com/android/internal/telephony/dataconnection/DataConnectionTest.java +51 −0 Original line number Diff line number Diff line Loading @@ -16,10 +16,13 @@ package com.android.internal.telephony.dataconnection; import android.net.NetworkCapabilities; import android.net.NetworkInfo; import android.os.AsyncResult; import android.os.Handler; import android.os.HandlerThread; import android.os.Message; import android.telephony.CarrierConfigManager; import android.telephony.ServiceState; import android.test.suitebuilder.annotation.SmallTest; Loading @@ -32,15 +35,20 @@ import com.android.internal.telephony.dataconnection.DataConnection.DisconnectPa import com.android.internal.util.IState; import com.android.internal.util.StateMachine; import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertFalse; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import java.lang.reflect.Field; import java.lang.reflect.Method; import static com.android.internal.telephony.TelephonyTestUtils.waitForMs; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.mockito.Matchers.any; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.doReturn; Loading Loading @@ -246,4 +254,47 @@ public class DataConnectionTest extends TelephonyTest { AsyncResult ar = new AsyncResult(null, response, null); assertEquals(RetryManager.NO_RETRY, getSuggestedRetryDelay(ar)); } private NetworkInfo getNetworkInfo() throws Exception { Field f = DataConnection.class.getDeclaredField("mNetworkInfo"); f.setAccessible(true); return (NetworkInfo) f.get(mDc); } private NetworkCapabilities getCopyNetworkCapabilities() throws Exception { Method method = DataConnection.class.getDeclaredMethod("getCopyNetworkCapabilities"); method.setAccessible(true); return (NetworkCapabilities) method.invoke(mDc); } @Test @SmallTest public void testMeteredCapability() throws Exception { mContextFixture.getCarrierConfigBundle(). putStringArray(CarrierConfigManager.KEY_CARRIER_METERED_APN_TYPES_STRINGS, new String[] {"default"}); testConnectEvent(); assertTrue(getNetworkInfo().isMetered()); assertFalse(getCopyNetworkCapabilities(). hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED)); } @Test @SmallTest public void testNonMeteredCapability() throws Exception { doReturn(1).when(mPhone).getSubId(); mContextFixture.getCarrierConfigBundle(). putStringArray(CarrierConfigManager.KEY_CARRIER_METERED_APN_TYPES_STRINGS, new String[] {"mms"}); testConnectEvent(); assertFalse(getNetworkInfo().isMetered()); assertTrue(getCopyNetworkCapabilities(). hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED)); } } No newline at end of file