Loading src/java/com/android/internal/telephony/dataconnection/DataConnection.java +3 −9 Original line number Diff line number Diff line Loading @@ -923,7 +923,6 @@ public class DataConnection extends StateMachine { result.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR); if (mApnSetting != null) { ApnSetting securedDunApn = mDct.fetchDunApn(); for (String type : mApnSetting.types) { if (!mRestrictedNetworkOverride && (mConnectionParams != null && mConnectionParams.mUnmeteredUseOnly) Loading @@ -940,11 +939,7 @@ public class DataConnection extends StateMachine { result.addCapability(NetworkCapabilities.NET_CAPABILITY_IMS); result.addCapability(NetworkCapabilities.NET_CAPABILITY_CBS); result.addCapability(NetworkCapabilities.NET_CAPABILITY_IA); // check if this is the DUN apn as well as returned by fetchDunApn(). // If yes, add DUN capability too. if (mApnSetting.equals(securedDunApn)) { result.addCapability(NetworkCapabilities.NET_CAPABILITY_DUN); } break; } case PhoneConstants.APN_TYPE_DEFAULT: { Loading @@ -960,9 +955,7 @@ public class DataConnection extends StateMachine { break; } case PhoneConstants.APN_TYPE_DUN: { if (securedDunApn == null || securedDunApn.equals(mApnSetting)) { result.addCapability(NetworkCapabilities.NET_CAPABILITY_DUN); } break; } case PhoneConstants.APN_TYPE_FOTA: { Loading Loading @@ -1691,6 +1684,7 @@ public class DataConnection extends StateMachine { misc.subscriberId = mPhone.getSubscriberId(); setNetworkRestriction(); if (DBG) log("mRestrictedNetworkOverride = " + mRestrictedNetworkOverride); mNetworkAgent = new DcNetworkAgent(getHandler().getLooper(), mPhone.getContext(), "DcNetworkAgent", mNetworkInfo, getNetworkCapabilities(), mLinkProperties, 50, misc); Loading tests/telephonytests/src/com/android/internal/telephony/dataconnection/DataConnectionTest.java +59 −0 Original line number Diff line number Diff line Loading @@ -126,6 +126,34 @@ public class DataConnectionTest extends TelephonyTest { "", // mvno_type ""); // mnvo_match_data private ApnSetting mApn2 = new ApnSetting( 2164, // id "44010", // numeric "sp-mode", // name "spmode.ne.jp", // apn "", // proxy "", // port "", // mmsc "", // mmsproxy "", // mmsport "", // user "", // password -1, // authtype new String[]{"default", "dun"}, // types "IP", // protocol "IP", // roaming_protocol true, // carrier_enabled 0, // bearer 0, // bearer_bitmask 0, // profile_id false, // modem_cognitive 0, // max_conns 0, // wait_time 0, // max_conns_time 0, // mtu "", // mvno_type ""); // mnvo_match_data private class DataConnectionTestHandler extends HandlerThread { private DataConnectionTestHandler(String name) { Loading Loading @@ -171,6 +199,7 @@ public class DataConnectionTest extends TelephonyTest { ServiceState.RIL_RADIO_TECHNOLOGY_UMTS); doReturn(mApn1).when(mApnContext).getApnSetting(); doReturn(PhoneConstants.APN_TYPE_DEFAULT).when(mApnContext).getApnType(); doReturn(true).when(mDcTracker).isDataEnabled(); mDcFailBringUp.saveParameters(0, 0, -2); doReturn(mDcFailBringUp).when(mDcTesterFailBringUpAll).getDcFailBringUp(); Loading Loading @@ -371,6 +400,36 @@ public class DataConnectionTest extends TelephonyTest { return (NetworkCapabilities) method.invoke(mDc); } @Test @SmallTest public void testNetworkCapability() throws Exception { mContextFixture.getCarrierConfigBundle().putStringArray( CarrierConfigManager.KEY_CARRIER_METERED_APN_TYPES_STRINGS, new String[] { "default" }); doReturn(mApn2).when(mApnContext).getApnSetting(); testConnectEvent(); assertTrue("capabilities: " + getNetworkCapabilities(), getNetworkCapabilities() .hasCapability(NetworkCapabilities.NET_CAPABILITY_DUN)); assertTrue("capabilities: " + getNetworkCapabilities(), getNetworkCapabilities() .hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)); assertFalse("capabilities: " + getNetworkCapabilities(), getNetworkCapabilities() .hasCapability(NetworkCapabilities.NET_CAPABILITY_MMS)); mDc.sendMessage(DataConnection.EVENT_DISCONNECT, mDcp); waitForMs(100); doReturn(mApn1).when(mApnContext).getApnSetting(); mDc.sendMessage(DataConnection.EVENT_CONNECT, mCp); waitForMs(200); assertFalse("capabilities: " + getNetworkCapabilities(), getNetworkCapabilities() .hasCapability(NetworkCapabilities.NET_CAPABILITY_DUN)); assertTrue("capabilities: " + getNetworkCapabilities(), getNetworkCapabilities() .hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)); assertTrue("capabilities: " + getNetworkCapabilities(), getNetworkCapabilities() .hasCapability(NetworkCapabilities.NET_CAPABILITY_SUPL)); } @Test @SmallTest public void testMeteredCapability() throws Exception { Loading Loading
src/java/com/android/internal/telephony/dataconnection/DataConnection.java +3 −9 Original line number Diff line number Diff line Loading @@ -923,7 +923,6 @@ public class DataConnection extends StateMachine { result.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR); if (mApnSetting != null) { ApnSetting securedDunApn = mDct.fetchDunApn(); for (String type : mApnSetting.types) { if (!mRestrictedNetworkOverride && (mConnectionParams != null && mConnectionParams.mUnmeteredUseOnly) Loading @@ -940,11 +939,7 @@ public class DataConnection extends StateMachine { result.addCapability(NetworkCapabilities.NET_CAPABILITY_IMS); result.addCapability(NetworkCapabilities.NET_CAPABILITY_CBS); result.addCapability(NetworkCapabilities.NET_CAPABILITY_IA); // check if this is the DUN apn as well as returned by fetchDunApn(). // If yes, add DUN capability too. if (mApnSetting.equals(securedDunApn)) { result.addCapability(NetworkCapabilities.NET_CAPABILITY_DUN); } break; } case PhoneConstants.APN_TYPE_DEFAULT: { Loading @@ -960,9 +955,7 @@ public class DataConnection extends StateMachine { break; } case PhoneConstants.APN_TYPE_DUN: { if (securedDunApn == null || securedDunApn.equals(mApnSetting)) { result.addCapability(NetworkCapabilities.NET_CAPABILITY_DUN); } break; } case PhoneConstants.APN_TYPE_FOTA: { Loading Loading @@ -1691,6 +1684,7 @@ public class DataConnection extends StateMachine { misc.subscriberId = mPhone.getSubscriberId(); setNetworkRestriction(); if (DBG) log("mRestrictedNetworkOverride = " + mRestrictedNetworkOverride); mNetworkAgent = new DcNetworkAgent(getHandler().getLooper(), mPhone.getContext(), "DcNetworkAgent", mNetworkInfo, getNetworkCapabilities(), mLinkProperties, 50, misc); Loading
tests/telephonytests/src/com/android/internal/telephony/dataconnection/DataConnectionTest.java +59 −0 Original line number Diff line number Diff line Loading @@ -126,6 +126,34 @@ public class DataConnectionTest extends TelephonyTest { "", // mvno_type ""); // mnvo_match_data private ApnSetting mApn2 = new ApnSetting( 2164, // id "44010", // numeric "sp-mode", // name "spmode.ne.jp", // apn "", // proxy "", // port "", // mmsc "", // mmsproxy "", // mmsport "", // user "", // password -1, // authtype new String[]{"default", "dun"}, // types "IP", // protocol "IP", // roaming_protocol true, // carrier_enabled 0, // bearer 0, // bearer_bitmask 0, // profile_id false, // modem_cognitive 0, // max_conns 0, // wait_time 0, // max_conns_time 0, // mtu "", // mvno_type ""); // mnvo_match_data private class DataConnectionTestHandler extends HandlerThread { private DataConnectionTestHandler(String name) { Loading Loading @@ -171,6 +199,7 @@ public class DataConnectionTest extends TelephonyTest { ServiceState.RIL_RADIO_TECHNOLOGY_UMTS); doReturn(mApn1).when(mApnContext).getApnSetting(); doReturn(PhoneConstants.APN_TYPE_DEFAULT).when(mApnContext).getApnType(); doReturn(true).when(mDcTracker).isDataEnabled(); mDcFailBringUp.saveParameters(0, 0, -2); doReturn(mDcFailBringUp).when(mDcTesterFailBringUpAll).getDcFailBringUp(); Loading Loading @@ -371,6 +400,36 @@ public class DataConnectionTest extends TelephonyTest { return (NetworkCapabilities) method.invoke(mDc); } @Test @SmallTest public void testNetworkCapability() throws Exception { mContextFixture.getCarrierConfigBundle().putStringArray( CarrierConfigManager.KEY_CARRIER_METERED_APN_TYPES_STRINGS, new String[] { "default" }); doReturn(mApn2).when(mApnContext).getApnSetting(); testConnectEvent(); assertTrue("capabilities: " + getNetworkCapabilities(), getNetworkCapabilities() .hasCapability(NetworkCapabilities.NET_CAPABILITY_DUN)); assertTrue("capabilities: " + getNetworkCapabilities(), getNetworkCapabilities() .hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)); assertFalse("capabilities: " + getNetworkCapabilities(), getNetworkCapabilities() .hasCapability(NetworkCapabilities.NET_CAPABILITY_MMS)); mDc.sendMessage(DataConnection.EVENT_DISCONNECT, mDcp); waitForMs(100); doReturn(mApn1).when(mApnContext).getApnSetting(); mDc.sendMessage(DataConnection.EVENT_CONNECT, mCp); waitForMs(200); assertFalse("capabilities: " + getNetworkCapabilities(), getNetworkCapabilities() .hasCapability(NetworkCapabilities.NET_CAPABILITY_DUN)); assertTrue("capabilities: " + getNetworkCapabilities(), getNetworkCapabilities() .hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)); assertTrue("capabilities: " + getNetworkCapabilities(), getNetworkCapabilities() .hasCapability(NetworkCapabilities.NET_CAPABILITY_SUPL)); } @Test @SmallTest public void testMeteredCapability() throws Exception { Loading