Loading services/core/java/com/android/server/net/NetworkPolicyManagerService.java +9 −0 Original line number Diff line number Diff line Loading @@ -1164,6 +1164,15 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { // Carrier might want to manage notifications themselves final PersistableBundle config = mCarrierConfigManager.getConfigForSubId(subId); if (!CarrierConfigManager.isConfigForIdentifiedCarrier(config)) { if (LOGV) Slog.v(TAG, "isConfigForIdentifiedCarrier returned false"); // Don't show notifications until we confirm that the loaded config is from an // identified carrier, which may want to manage their own notifications. This method // should be called every time the carrier config changes anyways, and there's no // reason to alert if there isn't a carrier. return; } final boolean notifyWarning = getBooleanDefeatingNullable(config, KEY_DATA_WARNING_NOTIFICATION_BOOL, true); final boolean notifyLimit = getBooleanDefeatingNullable(config, Loading services/tests/servicestests/src/com/android/server/net/NetworkPolicyManagerServiceTest.java +30 −1 Original line number Diff line number Diff line Loading @@ -263,6 +263,7 @@ public class NetworkPolicyManagerServiceTest { private static final int INVALID_CARRIER_CONFIG_VALUE = -9999; private long mDefaultWarningBytes; // filled in with the actual default before tests are run private long mDefaultLimitBytes; // filled in with the actual default before tests are run private PersistableBundle mCarrierConfig = CarrierConfigManager.getDefaultConfig(); private static final int APP_ID_A = android.os.Process.FIRST_APPLICATION_UID + 4; private static final int APP_ID_B = android.os.Process.FIRST_APPLICATION_UID + 8; Loading Loading @@ -409,6 +410,9 @@ public class NetworkPolicyManagerServiceTest { doNothing().when(mConnectivityManager) .registerNetworkCallback(any(), mNetworkCallbackCaptor.capture()); // Create the expected carrier config mCarrierConfig.putBoolean(CarrierConfigManager.KEY_CARRIER_CONFIG_APPLIED_BOOL, true); // Prepare NPMS. mService.systemReady(mService.networkScoreAndNetworkManagementServiceReady()); Loading Loading @@ -1086,6 +1090,25 @@ public class NetworkPolicyManagerServiceTest { isA(Notification.class), eq(UserHandle.ALL)); } // Push over warning, but with a config that isn't from an identified carrier { history.clear(); history.recordData(start, end, new NetworkStats.Entry(DataUnit.MEGABYTES.toBytes(1799), 0L, 0L, 0L, 0)); reset(mTelephonyManager, mNetworkManager, mNotifManager); expectMobileDefaults(); expectDefaultCarrierConfig(); mService.updateNetworks(); verify(mTelephonyManager, atLeastOnce()).setPolicyDataEnabled(true, TEST_SUB_ID); verify(mNetworkManager, atLeastOnce()).setInterfaceQuota(TEST_IFACE, DataUnit.MEGABYTES.toBytes(1800 - 1799)); // Since this isn't from the identified carrier, there should be no notifications verify(mNotifManager, never()).notifyAsUser(any(), anyInt(), any(), any()); } // Push over limit { history.clear(); Loading Loading @@ -1812,7 +1835,7 @@ public class NetworkPolicyManagerServiceTest { private void expectNetworkState(boolean roaming) throws Exception { when(mCarrierConfigManager.getConfigForSubId(eq(TEST_SUB_ID))) .thenReturn(CarrierConfigManager.getDefaultConfig()); .thenReturn(mCarrierConfig); when(mConnManager.getAllNetworkState()).thenReturn(new NetworkState[] { new NetworkState(buildNetworkInfo(), buildLinkProperties(TEST_IFACE), Loading @@ -1821,10 +1844,16 @@ public class NetworkPolicyManagerServiceTest { }); } private void expectDefaultCarrierConfig() throws Exception { when(mCarrierConfigManager.getConfigForSubId(eq(TEST_SUB_ID))) .thenReturn(CarrierConfigManager.getDefaultConfig()); } private void expectMobileDefaults() throws Exception { when(mSubscriptionManager.getActiveSubscriptionIdList()).thenReturn( new int[] { TEST_SUB_ID }); when(mTelephonyManager.getSubscriberId(TEST_SUB_ID)).thenReturn(TEST_IMSI); doNothing().when(mTelephonyManager).setPolicyDataEnabled(anyBoolean(), anyInt()); expectNetworkState(false /* roaming */); } Loading Loading
services/core/java/com/android/server/net/NetworkPolicyManagerService.java +9 −0 Original line number Diff line number Diff line Loading @@ -1164,6 +1164,15 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { // Carrier might want to manage notifications themselves final PersistableBundle config = mCarrierConfigManager.getConfigForSubId(subId); if (!CarrierConfigManager.isConfigForIdentifiedCarrier(config)) { if (LOGV) Slog.v(TAG, "isConfigForIdentifiedCarrier returned false"); // Don't show notifications until we confirm that the loaded config is from an // identified carrier, which may want to manage their own notifications. This method // should be called every time the carrier config changes anyways, and there's no // reason to alert if there isn't a carrier. return; } final boolean notifyWarning = getBooleanDefeatingNullable(config, KEY_DATA_WARNING_NOTIFICATION_BOOL, true); final boolean notifyLimit = getBooleanDefeatingNullable(config, Loading
services/tests/servicestests/src/com/android/server/net/NetworkPolicyManagerServiceTest.java +30 −1 Original line number Diff line number Diff line Loading @@ -263,6 +263,7 @@ public class NetworkPolicyManagerServiceTest { private static final int INVALID_CARRIER_CONFIG_VALUE = -9999; private long mDefaultWarningBytes; // filled in with the actual default before tests are run private long mDefaultLimitBytes; // filled in with the actual default before tests are run private PersistableBundle mCarrierConfig = CarrierConfigManager.getDefaultConfig(); private static final int APP_ID_A = android.os.Process.FIRST_APPLICATION_UID + 4; private static final int APP_ID_B = android.os.Process.FIRST_APPLICATION_UID + 8; Loading Loading @@ -409,6 +410,9 @@ public class NetworkPolicyManagerServiceTest { doNothing().when(mConnectivityManager) .registerNetworkCallback(any(), mNetworkCallbackCaptor.capture()); // Create the expected carrier config mCarrierConfig.putBoolean(CarrierConfigManager.KEY_CARRIER_CONFIG_APPLIED_BOOL, true); // Prepare NPMS. mService.systemReady(mService.networkScoreAndNetworkManagementServiceReady()); Loading Loading @@ -1086,6 +1090,25 @@ public class NetworkPolicyManagerServiceTest { isA(Notification.class), eq(UserHandle.ALL)); } // Push over warning, but with a config that isn't from an identified carrier { history.clear(); history.recordData(start, end, new NetworkStats.Entry(DataUnit.MEGABYTES.toBytes(1799), 0L, 0L, 0L, 0)); reset(mTelephonyManager, mNetworkManager, mNotifManager); expectMobileDefaults(); expectDefaultCarrierConfig(); mService.updateNetworks(); verify(mTelephonyManager, atLeastOnce()).setPolicyDataEnabled(true, TEST_SUB_ID); verify(mNetworkManager, atLeastOnce()).setInterfaceQuota(TEST_IFACE, DataUnit.MEGABYTES.toBytes(1800 - 1799)); // Since this isn't from the identified carrier, there should be no notifications verify(mNotifManager, never()).notifyAsUser(any(), anyInt(), any(), any()); } // Push over limit { history.clear(); Loading Loading @@ -1812,7 +1835,7 @@ public class NetworkPolicyManagerServiceTest { private void expectNetworkState(boolean roaming) throws Exception { when(mCarrierConfigManager.getConfigForSubId(eq(TEST_SUB_ID))) .thenReturn(CarrierConfigManager.getDefaultConfig()); .thenReturn(mCarrierConfig); when(mConnManager.getAllNetworkState()).thenReturn(new NetworkState[] { new NetworkState(buildNetworkInfo(), buildLinkProperties(TEST_IFACE), Loading @@ -1821,10 +1844,16 @@ public class NetworkPolicyManagerServiceTest { }); } private void expectDefaultCarrierConfig() throws Exception { when(mCarrierConfigManager.getConfigForSubId(eq(TEST_SUB_ID))) .thenReturn(CarrierConfigManager.getDefaultConfig()); } private void expectMobileDefaults() throws Exception { when(mSubscriptionManager.getActiveSubscriptionIdList()).thenReturn( new int[] { TEST_SUB_ID }); when(mTelephonyManager.getSubscriberId(TEST_SUB_ID)).thenReturn(TEST_IMSI); doNothing().when(mTelephonyManager).setPolicyDataEnabled(anyBoolean(), anyInt()); expectNetworkState(false /* roaming */); } Loading