Prevent leaking Wi-Fi dialog on lock screen

- The Wi-Fi dialog is designed to be displayed on the system UI

- Dismiss Wi-Fi dialog to prevent leaking user data on lock screen

Bug: 231583603
Test: manual test
make RunSettingsRoboTests ROBOTEST_FILTER=WifiDialogActivityTest

Change-Id: Ie67ff1138ffeddd3e358331d8cef61e0629173e2
This commit is contained in:
Weng Su
2022-07-08 05:37:07 +08:00
parent 2f79c879cc
commit be23c28ff2
2 changed files with 91 additions and 3 deletions

View File

@@ -33,6 +33,7 @@ import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.app.KeyguardManager;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.wifi.WifiConfiguration;
@@ -46,7 +47,6 @@ import com.android.wifitrackerlib.WifiEntry;
import com.google.android.setupcompat.util.WizardManagerHelper;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
@@ -82,6 +82,8 @@ public class WifiDialogActivityTest {
Intent mResultData;
@Mock
WifiConfigController mController;
@Mock
KeyguardManager mKeyguardManager;
WifiDialogActivity mActivity;
@@ -99,6 +101,7 @@ public class WifiDialogActivityTest {
mActivity = spy(Robolectric.setupActivity(WifiDialogActivity.class));
when(mActivity.getSystemService(UserManager.class)).thenReturn(mUserManager);
when(mActivity.getSystemService(WifiManager.class)).thenReturn(mWifiManager);
when(mActivity.getSystemService(KeyguardManager.class)).thenReturn(mKeyguardManager);
}
@Test
@@ -294,4 +297,35 @@ public class WifiDialogActivityTest {
assertThat(result).isTrue();
}
@Test
public void dismissDialog_hasDialog_dialogDismiss() {
mActivity.mDialog = mWifiDialog;
mActivity.mDialog2 = mWifiDialog2;
mActivity.dismissDialog();
verify(mWifiDialog).dismiss();
verify(mWifiDialog2).dismiss();
}
@Test
public void onKeyguardLockedStateChanged_keyguardIsNotLocked_doNotDismissDialog() {
WifiDialogActivity.LockScreenMonitor lockScreenMonitor =
new WifiDialogActivity.LockScreenMonitor(mActivity);
lockScreenMonitor.onKeyguardLockedStateChanged(false /* isKeyguardLocked */);
verify(mActivity, never()).dismissDialog();
}
@Test
public void onKeyguardLockedStateChanged_keyguardIsLocked_dismissDialog() {
WifiDialogActivity.LockScreenMonitor lockScreenMonitor =
new WifiDialogActivity.LockScreenMonitor(mActivity);
lockScreenMonitor.onKeyguardLockedStateChanged(true /* isKeyguardLocked */);
verify(mActivity).dismissDialog();
}
}