diff options
4 files changed, 25 insertions, 0 deletions
diff --git a/service/java/com/android/server/wifi/ClientModeImpl.java b/service/java/com/android/server/wifi/ClientModeImpl.java index c5f6966df2..d4858416fe 100644 --- a/service/java/com/android/server/wifi/ClientModeImpl.java +++ b/service/java/com/android/server/wifi/ClientModeImpl.java @@ -5798,6 +5798,8 @@ public class ClientModeImpl extends StateMachine implements ClientMode { // We need to get the updated pseudonym from supplicant for EAP-SIM/AKA/AKA' if (config.enterpriseConfig != null && config.enterpriseConfig.isAuthenticationSimBased()) { + // clear SIM related EapFailurenotification + mEapFailureNotifier.dismissEapFailureNotification(config.SSID); if (mWifiCarrierInfoManager.isOobPseudonymFeatureEnabled( config.carrierId)) { if (mVerboseLoggingEnabled) { diff --git a/service/java/com/android/server/wifi/EapFailureNotifier.java b/service/java/com/android/server/wifi/EapFailureNotifier.java index 64143eb816..fc0dddb5f6 100644 --- a/service/java/com/android/server/wifi/EapFailureNotifier.java +++ b/service/java/com/android/server/wifi/EapFailureNotifier.java @@ -135,6 +135,23 @@ public class EapFailureNotifier { } /** + * Dismiss notification + */ + public void dismissEapFailureNotification(String ssid) { + if (TextUtils.isEmpty(mCurrentShownSsid) || TextUtils.isEmpty(ssid) + || !TextUtils.equals(ssid, mCurrentShownSsid)) { + return; + } + StatusBarNotification[] activeNotifications = mNotificationManager.getActiveNotifications(); + for (StatusBarNotification activeNotification : activeNotifications) { + if ((activeNotification.getId() == NOTIFICATION_ID)) { + mNotificationManager.cancel(NOTIFICATION_ID); + return; + } + } + } + + /** * Display eap error notification which defined by carrier. * * @param ssid Error Message which defined by carrier diff --git a/service/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java b/service/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java index 915c9a49b0..9bb62b5c89 100644 --- a/service/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java +++ b/service/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java @@ -1577,6 +1577,7 @@ public class ClientModeImplTest extends WifiBaseTest { mCmi.sendMessage(WifiMonitor.NETWORK_CONNECTION_EVENT, new NetworkConnectionEventInfo(0, wifiSsid, TEST_BSSID_STR, false, null)); mLooper.dispatchAll(); + verify(mEapFailureNotifier).dismissEapFailureNotification(mConnectedNetwork.SSID); assertEquals("L3ProvisioningState", getCurrentState().getName()); } diff --git a/service/tests/wifitests/src/com/android/server/wifi/EapFailureNotifierTest.java b/service/tests/wifitests/src/com/android/server/wifi/EapFailureNotifierTest.java index e257c2d1bb..cb0706e4b0 100644 --- a/service/tests/wifitests/src/com/android/server/wifi/EapFailureNotifierTest.java +++ b/service/tests/wifitests/src/com/android/server/wifi/EapFailureNotifierTest.java @@ -20,6 +20,7 @@ import static com.android.server.wifi.EapFailureNotifier.CONFIG_EAP_FAILURE_DISA import static com.android.server.wifi.EapFailureNotifier.CONFIG_EAP_FAILURE_DISABLE_THRESHOLD; import static com.android.server.wifi.EapFailureNotifier.ERROR_MESSAGE_OVERLAY_PREFIX; import static com.android.server.wifi.EapFailureNotifier.ERROR_MESSAGE_OVERLAY_UNKNOWN_ERROR_CODE; +import static com.android.server.wifi.EapFailureNotifier.NOTIFICATION_ID; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; @@ -274,6 +275,10 @@ public class EapFailureNotifierTest extends WifiBaseTest { verify(mFrameworkFacade, never()).makeNotificationBuilder(any(), eq(WifiService.NOTIFICATION_NETWORK_ALERTS)); assertEquals(mExpectedEapFailureConfig, failureConfig); + + // verify cancel notification works + mEapFailureNotifier.dismissEapFailureNotification(SSID_1); + verify(mWifiNotificationManager).cancel(NOTIFICATION_ID); } /** |