Loading flags/data.aconfig +7 −0 Original line number Diff line number Diff line Loading @@ -20,3 +20,10 @@ flag { description: "Allow bring up MMTEL in nonVops area specified by carrier config." bug: "241198464" } flag { name: "metered_embb_urlcc" namespace: "telephony" description: "Force networks that have PRIORITIZE_BANDWIDTH or PRIORITIZE_LATENCY to be metered." bug: "301310451" } src/java/com/android/internal/telephony/data/DataConfigManager.java +12 −2 Original line number Diff line number Diff line Loading @@ -598,10 +598,20 @@ public class DataConfigManager extends Handler { */ public @NonNull @NetCapability Set<Integer> getMeteredNetworkCapabilities(boolean isRoaming) { Set<Integer> meteredApnTypes = isRoaming ? mRoamingMeteredApnTypes : mMeteredApnTypes; return meteredApnTypes.stream() Set<Integer> meteredCapabilities = meteredApnTypes.stream() .map(DataUtils::apnTypeToNetworkCapability) .filter(cap -> cap >= 0) .collect(Collectors.toUnmodifiableSet()); .collect(Collectors.toSet()); // Consumer slices are the slices that are allowed to be accessed by regular application to // get better performance. They should be metered. This can be turned into configurations in // the future. if (mFeatureFlags.meteredEmbbUrlcc()) { meteredCapabilities.add(NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_BANDWIDTH); meteredCapabilities.add(NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_LATENCY); } return Collections.unmodifiableSet(meteredCapabilities); } /** Loading tests/telephonytests/src/com/android/internal/telephony/data/DataConfigManagerTest.java +22 −4 Original line number Diff line number Diff line Loading @@ -18,18 +18,17 @@ package com.android.internal.telephony.data; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import android.net.NetworkCapabilities; import android.os.Looper; import android.os.PersistableBundle; import android.telephony.CarrierConfigManager; import android.telephony.SignalStrength; import android.telephony.TelephonyDisplayInfo; import android.telephony.TelephonyManager; import android.telephony.data.ApnSetting; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper; Loading @@ -51,7 +50,6 @@ public class DataConfigManagerTest extends TelephonyTest { logd("DataConfigManagerTest +Setup!"); super.setUp(getClass().getSimpleName()); mBundle = mContextFixture.getCarrierConfigBundle(); when(mCarrierConfigManager.getConfigForSubId(anyInt(), any())).thenReturn(mBundle); mDataConfigManagerUT = new DataConfigManager(mPhone, Looper.myLooper(), mFeatureFlags); logd("DataConfigManagerTest -Setup!"); } Loading Loading @@ -145,4 +143,24 @@ public class DataConfigManagerTest extends TelephonyTest { signalStrength)) .isEqualTo(0/*OUT_OF_SERVICE_AUTO_DATA_SWITCH_SCORE*/); } @Test public void testMeteredNetworkCapabilities() { doReturn(true).when(mFeatureFlags).meteredEmbbUrlcc(); mBundle.putStringArray(CarrierConfigManager.KEY_CARRIER_METERED_APN_TYPES_STRINGS, new String[] {ApnSetting.TYPE_MMS_STRING, ApnSetting.TYPE_DEFAULT_STRING}); mBundle.putStringArray(CarrierConfigManager.KEY_CARRIER_METERED_ROAMING_APN_TYPES_STRINGS, new String[] {ApnSetting.TYPE_SUPL_STRING, ApnSetting.TYPE_MCX_STRING}); mDataConfigManagerUT.sendEmptyMessage(1/*EVENT_CARRIER_CONFIG_CHANGED*/); processAllMessages(); assertThat(mDataConfigManagerUT.getMeteredNetworkCapabilities(false)).containsExactly( NetworkCapabilities.NET_CAPABILITY_MMS, NetworkCapabilities.NET_CAPABILITY_INTERNET, NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_BANDWIDTH, NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_LATENCY); assertThat(mDataConfigManagerUT.getMeteredNetworkCapabilities(true)).containsExactly( NetworkCapabilities.NET_CAPABILITY_SUPL, NetworkCapabilities.NET_CAPABILITY_MCX, NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_BANDWIDTH, NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_LATENCY); } } Loading
flags/data.aconfig +7 −0 Original line number Diff line number Diff line Loading @@ -20,3 +20,10 @@ flag { description: "Allow bring up MMTEL in nonVops area specified by carrier config." bug: "241198464" } flag { name: "metered_embb_urlcc" namespace: "telephony" description: "Force networks that have PRIORITIZE_BANDWIDTH or PRIORITIZE_LATENCY to be metered." bug: "301310451" }
src/java/com/android/internal/telephony/data/DataConfigManager.java +12 −2 Original line number Diff line number Diff line Loading @@ -598,10 +598,20 @@ public class DataConfigManager extends Handler { */ public @NonNull @NetCapability Set<Integer> getMeteredNetworkCapabilities(boolean isRoaming) { Set<Integer> meteredApnTypes = isRoaming ? mRoamingMeteredApnTypes : mMeteredApnTypes; return meteredApnTypes.stream() Set<Integer> meteredCapabilities = meteredApnTypes.stream() .map(DataUtils::apnTypeToNetworkCapability) .filter(cap -> cap >= 0) .collect(Collectors.toUnmodifiableSet()); .collect(Collectors.toSet()); // Consumer slices are the slices that are allowed to be accessed by regular application to // get better performance. They should be metered. This can be turned into configurations in // the future. if (mFeatureFlags.meteredEmbbUrlcc()) { meteredCapabilities.add(NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_BANDWIDTH); meteredCapabilities.add(NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_LATENCY); } return Collections.unmodifiableSet(meteredCapabilities); } /** Loading
tests/telephonytests/src/com/android/internal/telephony/data/DataConfigManagerTest.java +22 −4 Original line number Diff line number Diff line Loading @@ -18,18 +18,17 @@ package com.android.internal.telephony.data; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import android.net.NetworkCapabilities; import android.os.Looper; import android.os.PersistableBundle; import android.telephony.CarrierConfigManager; import android.telephony.SignalStrength; import android.telephony.TelephonyDisplayInfo; import android.telephony.TelephonyManager; import android.telephony.data.ApnSetting; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper; Loading @@ -51,7 +50,6 @@ public class DataConfigManagerTest extends TelephonyTest { logd("DataConfigManagerTest +Setup!"); super.setUp(getClass().getSimpleName()); mBundle = mContextFixture.getCarrierConfigBundle(); when(mCarrierConfigManager.getConfigForSubId(anyInt(), any())).thenReturn(mBundle); mDataConfigManagerUT = new DataConfigManager(mPhone, Looper.myLooper(), mFeatureFlags); logd("DataConfigManagerTest -Setup!"); } Loading Loading @@ -145,4 +143,24 @@ public class DataConfigManagerTest extends TelephonyTest { signalStrength)) .isEqualTo(0/*OUT_OF_SERVICE_AUTO_DATA_SWITCH_SCORE*/); } @Test public void testMeteredNetworkCapabilities() { doReturn(true).when(mFeatureFlags).meteredEmbbUrlcc(); mBundle.putStringArray(CarrierConfigManager.KEY_CARRIER_METERED_APN_TYPES_STRINGS, new String[] {ApnSetting.TYPE_MMS_STRING, ApnSetting.TYPE_DEFAULT_STRING}); mBundle.putStringArray(CarrierConfigManager.KEY_CARRIER_METERED_ROAMING_APN_TYPES_STRINGS, new String[] {ApnSetting.TYPE_SUPL_STRING, ApnSetting.TYPE_MCX_STRING}); mDataConfigManagerUT.sendEmptyMessage(1/*EVENT_CARRIER_CONFIG_CHANGED*/); processAllMessages(); assertThat(mDataConfigManagerUT.getMeteredNetworkCapabilities(false)).containsExactly( NetworkCapabilities.NET_CAPABILITY_MMS, NetworkCapabilities.NET_CAPABILITY_INTERNET, NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_BANDWIDTH, NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_LATENCY); assertThat(mDataConfigManagerUT.getMeteredNetworkCapabilities(true)).containsExactly( NetworkCapabilities.NET_CAPABILITY_SUPL, NetworkCapabilities.NET_CAPABILITY_MCX, NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_BANDWIDTH, NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_LATENCY); } }