Loading services/core/java/com/android/server/notification/NotificationManagerService.java +15 −24 Original line number Diff line number Diff line Loading @@ -258,7 +258,6 @@ import android.metrics.LogMaker; import android.net.ConnectivityManager; import android.net.Network; import android.net.NetworkCapabilities; import android.net.NetworkRequest; import android.net.Uri; import android.os.Binder; import android.os.Build; Loading Loading @@ -2834,33 +2833,25 @@ public class NotificationManagerService extends SystemService { } private void registerNetworkCallback() { NetworkRequest request = new NetworkRequest.Builder().addTransportType( NetworkCapabilities.TRANSPORT_WIFI).build(); mConnectivityManager.registerNetworkCallback(request, mConnectivityManager.registerDefaultNetworkCallback( new ConnectivityManager.NetworkCallback() { // Need to post to another thread, as we can't call synchronous ConnectivityManager // methods from the callback itself, due to potential race conditions. @Override public void onAvailable(@NonNull Network network) { mHandler.post(() -> updateWifiConnectionState()); public void onCapabilitiesChanged(@NonNull Network network, @NonNull NetworkCapabilities capabilities) { updateWifiConnectionState(capabilities); } @Override public void onLost(@NonNull Network network) { mHandler.post(() -> updateWifiConnectionState()); mConnectedToWifi = false; } }); updateWifiConnectionState(); }, mHandler); } @VisibleForTesting() void updateWifiConnectionState() { Network current = mConnectivityManager.getActiveNetwork(); NetworkCapabilities capabilities = mConnectivityManager.getNetworkCapabilities(current); if (current == null || capabilities == null) { mConnectedToWifi = false; return; } mConnectedToWifi = capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI); void updateWifiConnectionState(NetworkCapabilities capabilities) { mConnectedToWifi = capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) && capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED) && capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_TRUSTED); } /** Loading services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java +15 −30 Original line number Diff line number Diff line Loading @@ -253,7 +253,6 @@ import android.media.AudioAttributes; import android.media.AudioManager; import android.media.session.MediaSession; import android.net.ConnectivityManager; import android.net.Network; import android.net.NetworkCapabilities; import android.net.Uri; import android.os.Binder; Loading Loading @@ -571,6 +570,9 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { @Mock NotificationAttentionHelper mAttentionHelper; @Mock NetworkCapabilities mWifiNetworkCapabilities; private NotificationManagerService.WorkerHandler mWorkerHandler; private class TestableToastCallback extends ITransientNotification.Stub { Loading Loading @@ -771,7 +773,14 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { mActivityIntentImmutable = spy(PendingIntent.getActivity(mContext, 0, new Intent().setPackage(mPkg), FLAG_IMMUTABLE)); when(mConnectivityManager.getActiveNetwork()).thenReturn(null); when(mWifiNetworkCapabilities.hasTransport(eq(NetworkCapabilities.TRANSPORT_WIFI))) .thenReturn(true); when(mWifiNetworkCapabilities .hasCapability(eq(NetworkCapabilities.NET_CAPABILITY_VALIDATED))) .thenReturn(true); when(mWifiNetworkCapabilities .hasCapability(eq(NetworkCapabilities.NET_CAPABILITY_TRUSTED))) .thenReturn(true); initNMS(); } Loading Loading @@ -14391,13 +14400,7 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { public void testMakeRankingUpdate_clearsHasSensitiveContentIfConnectedToWifi() { mSetFlagsRule.enableFlags(FLAG_REDACT_SENSITIVE_NOTIFICATIONS_FROM_UNTRUSTED_LISTENERS, FLAG_REDACT_SENSITIVE_CONTENT_NOTIFICATIONS_ON_LOCKSCREEN); when(mConnectivityManager.getActiveNetwork()).thenReturn(mock(Network.class)); when(mConnectivityManager.getNetworkCapabilities(any())).thenReturn( new NetworkCapabilities.Builder() .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) .build() ); mService.updateWifiConnectionState(); mService.updateWifiConnectionState(mWifiNetworkCapabilities); when(mListeners.hasSensitiveContent(any())).thenReturn(true); NotificationRecord pkgA = new NotificationRecord(mContext, generateSbn("a", 1000, 9, 0), mTestNotificationChannel); Loading @@ -14416,13 +14419,7 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { public void testMakeRankingUpdate_doesntClearHasSensitiveContentIfNotConnectedToWifi() { mSetFlagsRule.enableFlags(FLAG_REDACT_SENSITIVE_NOTIFICATIONS_FROM_UNTRUSTED_LISTENERS, FLAG_REDACT_SENSITIVE_CONTENT_NOTIFICATIONS_ON_LOCKSCREEN); when(mConnectivityManager.getActiveNetwork()).thenReturn(mock(Network.class)); when(mConnectivityManager.getNetworkCapabilities(any())).thenReturn( new NetworkCapabilities.Builder() .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR) .build() ); mService.updateWifiConnectionState(); mService.updateWifiConnectionState(mock(NetworkCapabilities.class)); when(mListeners.hasSensitiveContent(any())).thenReturn(true); NotificationRecord record = getSensitiveNotificationRecord(); mService.addNotification(record); Loading @@ -14440,13 +14437,7 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { public void testMakeRankingUpdate_doesntClearHasSensitiveContentIfNotSysUi() { mSetFlagsRule.enableFlags(FLAG_REDACT_SENSITIVE_NOTIFICATIONS_FROM_UNTRUSTED_LISTENERS); mSetFlagsRule.disableFlags(FLAG_REDACT_SENSITIVE_CONTENT_NOTIFICATIONS_ON_LOCKSCREEN); when(mConnectivityManager.getActiveNetwork()).thenReturn(mock(Network.class)); when(mConnectivityManager.getNetworkCapabilities(any())).thenReturn( new NetworkCapabilities.Builder() .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) .build() ); mService.updateWifiConnectionState(); mService.updateWifiConnectionState(mWifiNetworkCapabilities); when(mListeners.hasSensitiveContent(any())).thenReturn(true); NotificationRecord record = getSensitiveNotificationRecord(); mService.addNotification(record); Loading @@ -14463,13 +14454,7 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { public void testMakeRankingUpdate_doesntClearHasSensitiveContentIfFlagDisabled() { mSetFlagsRule.enableFlags(FLAG_REDACT_SENSITIVE_NOTIFICATIONS_FROM_UNTRUSTED_LISTENERS); mSetFlagsRule.disableFlags(FLAG_REDACT_SENSITIVE_CONTENT_NOTIFICATIONS_ON_LOCKSCREEN); when(mConnectivityManager.getActiveNetwork()).thenReturn(mock(Network.class)); when(mConnectivityManager.getNetworkCapabilities(any())).thenReturn( new NetworkCapabilities.Builder() .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) .build() ); mService.updateWifiConnectionState(); mService.updateWifiConnectionState(mWifiNetworkCapabilities); when(mListeners.hasSensitiveContent(any())).thenReturn(true); NotificationRecord record = getSensitiveNotificationRecord(); mService.addNotification(record); Loading
services/core/java/com/android/server/notification/NotificationManagerService.java +15 −24 Original line number Diff line number Diff line Loading @@ -258,7 +258,6 @@ import android.metrics.LogMaker; import android.net.ConnectivityManager; import android.net.Network; import android.net.NetworkCapabilities; import android.net.NetworkRequest; import android.net.Uri; import android.os.Binder; import android.os.Build; Loading Loading @@ -2834,33 +2833,25 @@ public class NotificationManagerService extends SystemService { } private void registerNetworkCallback() { NetworkRequest request = new NetworkRequest.Builder().addTransportType( NetworkCapabilities.TRANSPORT_WIFI).build(); mConnectivityManager.registerNetworkCallback(request, mConnectivityManager.registerDefaultNetworkCallback( new ConnectivityManager.NetworkCallback() { // Need to post to another thread, as we can't call synchronous ConnectivityManager // methods from the callback itself, due to potential race conditions. @Override public void onAvailable(@NonNull Network network) { mHandler.post(() -> updateWifiConnectionState()); public void onCapabilitiesChanged(@NonNull Network network, @NonNull NetworkCapabilities capabilities) { updateWifiConnectionState(capabilities); } @Override public void onLost(@NonNull Network network) { mHandler.post(() -> updateWifiConnectionState()); mConnectedToWifi = false; } }); updateWifiConnectionState(); }, mHandler); } @VisibleForTesting() void updateWifiConnectionState() { Network current = mConnectivityManager.getActiveNetwork(); NetworkCapabilities capabilities = mConnectivityManager.getNetworkCapabilities(current); if (current == null || capabilities == null) { mConnectedToWifi = false; return; } mConnectedToWifi = capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI); void updateWifiConnectionState(NetworkCapabilities capabilities) { mConnectedToWifi = capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) && capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED) && capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_TRUSTED); } /** Loading
services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java +15 −30 Original line number Diff line number Diff line Loading @@ -253,7 +253,6 @@ import android.media.AudioAttributes; import android.media.AudioManager; import android.media.session.MediaSession; import android.net.ConnectivityManager; import android.net.Network; import android.net.NetworkCapabilities; import android.net.Uri; import android.os.Binder; Loading Loading @@ -571,6 +570,9 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { @Mock NotificationAttentionHelper mAttentionHelper; @Mock NetworkCapabilities mWifiNetworkCapabilities; private NotificationManagerService.WorkerHandler mWorkerHandler; private class TestableToastCallback extends ITransientNotification.Stub { Loading Loading @@ -771,7 +773,14 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { mActivityIntentImmutable = spy(PendingIntent.getActivity(mContext, 0, new Intent().setPackage(mPkg), FLAG_IMMUTABLE)); when(mConnectivityManager.getActiveNetwork()).thenReturn(null); when(mWifiNetworkCapabilities.hasTransport(eq(NetworkCapabilities.TRANSPORT_WIFI))) .thenReturn(true); when(mWifiNetworkCapabilities .hasCapability(eq(NetworkCapabilities.NET_CAPABILITY_VALIDATED))) .thenReturn(true); when(mWifiNetworkCapabilities .hasCapability(eq(NetworkCapabilities.NET_CAPABILITY_TRUSTED))) .thenReturn(true); initNMS(); } Loading Loading @@ -14391,13 +14400,7 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { public void testMakeRankingUpdate_clearsHasSensitiveContentIfConnectedToWifi() { mSetFlagsRule.enableFlags(FLAG_REDACT_SENSITIVE_NOTIFICATIONS_FROM_UNTRUSTED_LISTENERS, FLAG_REDACT_SENSITIVE_CONTENT_NOTIFICATIONS_ON_LOCKSCREEN); when(mConnectivityManager.getActiveNetwork()).thenReturn(mock(Network.class)); when(mConnectivityManager.getNetworkCapabilities(any())).thenReturn( new NetworkCapabilities.Builder() .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) .build() ); mService.updateWifiConnectionState(); mService.updateWifiConnectionState(mWifiNetworkCapabilities); when(mListeners.hasSensitiveContent(any())).thenReturn(true); NotificationRecord pkgA = new NotificationRecord(mContext, generateSbn("a", 1000, 9, 0), mTestNotificationChannel); Loading @@ -14416,13 +14419,7 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { public void testMakeRankingUpdate_doesntClearHasSensitiveContentIfNotConnectedToWifi() { mSetFlagsRule.enableFlags(FLAG_REDACT_SENSITIVE_NOTIFICATIONS_FROM_UNTRUSTED_LISTENERS, FLAG_REDACT_SENSITIVE_CONTENT_NOTIFICATIONS_ON_LOCKSCREEN); when(mConnectivityManager.getActiveNetwork()).thenReturn(mock(Network.class)); when(mConnectivityManager.getNetworkCapabilities(any())).thenReturn( new NetworkCapabilities.Builder() .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR) .build() ); mService.updateWifiConnectionState(); mService.updateWifiConnectionState(mock(NetworkCapabilities.class)); when(mListeners.hasSensitiveContent(any())).thenReturn(true); NotificationRecord record = getSensitiveNotificationRecord(); mService.addNotification(record); Loading @@ -14440,13 +14437,7 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { public void testMakeRankingUpdate_doesntClearHasSensitiveContentIfNotSysUi() { mSetFlagsRule.enableFlags(FLAG_REDACT_SENSITIVE_NOTIFICATIONS_FROM_UNTRUSTED_LISTENERS); mSetFlagsRule.disableFlags(FLAG_REDACT_SENSITIVE_CONTENT_NOTIFICATIONS_ON_LOCKSCREEN); when(mConnectivityManager.getActiveNetwork()).thenReturn(mock(Network.class)); when(mConnectivityManager.getNetworkCapabilities(any())).thenReturn( new NetworkCapabilities.Builder() .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) .build() ); mService.updateWifiConnectionState(); mService.updateWifiConnectionState(mWifiNetworkCapabilities); when(mListeners.hasSensitiveContent(any())).thenReturn(true); NotificationRecord record = getSensitiveNotificationRecord(); mService.addNotification(record); Loading @@ -14463,13 +14454,7 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { public void testMakeRankingUpdate_doesntClearHasSensitiveContentIfFlagDisabled() { mSetFlagsRule.enableFlags(FLAG_REDACT_SENSITIVE_NOTIFICATIONS_FROM_UNTRUSTED_LISTENERS); mSetFlagsRule.disableFlags(FLAG_REDACT_SENSITIVE_CONTENT_NOTIFICATIONS_ON_LOCKSCREEN); when(mConnectivityManager.getActiveNetwork()).thenReturn(mock(Network.class)); when(mConnectivityManager.getNetworkCapabilities(any())).thenReturn( new NetworkCapabilities.Builder() .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) .build() ); mService.updateWifiConnectionState(); mService.updateWifiConnectionState(mWifiNetworkCapabilities); when(mListeners.hasSensitiveContent(any())).thenReturn(true); NotificationRecord record = getSensitiveNotificationRecord(); mService.addNotification(record);