Set device credential's Window flag to be SECURE.

This prevents showing any pattern/pin in recent list.

Fixes: 64339515
Bug: 38258991
Test: visual
Test: runtest --path \
      tests/app/src/com/android/settings/password/ChooseLockGenericTest.java
(cherry picked from commit 6d479d99a9)

Change-Id: I99c283dd4a1f2d579f565ccf5839a705e75ed6fc
This commit is contained in:
Fan Zhang
2017-08-07 17:29:18 -07:00
parent 535dd7f066
commit 799e124d8e
2 changed files with 13 additions and 5 deletions

View File

@@ -68,7 +68,7 @@ public abstract class ConfirmDeviceCredentialBaseActivity extends SettingsActivi
LinearLayout layout = (LinearLayout) findViewById(R.id.content_parent);
layout.setFitsSystemWindows(false);
}
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
mIsKeyguardLocked = savedState == null
? getSystemService(KeyguardManager.class).isKeyguardLocked()
: savedState.getBoolean(STATE_IS_KEYGUARD_LOCKED, false);

View File

@@ -18,9 +18,7 @@ package com.android.settings.password;
import static android.support.test.InstrumentationRegistry.getInstrumentation;
import static android.support.test.InstrumentationRegistry.getTargetContext;
import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.assertTrue;
import android.app.Activity;
@@ -39,6 +37,7 @@ import android.support.test.uiautomator.UiDevice;
import android.support.test.uiautomator.UiObject;
import android.support.test.uiautomator.UiSelector;
import android.text.format.DateUtils;
import android.view.WindowManager;
import com.android.internal.widget.LockPatternUtils;
@@ -93,7 +92,9 @@ public class ChooseLockGenericTest {
// WHEN ChooseLockGeneric is launched with no extras.
mChooseLockGenericActivityRule.launchActivity(null /* No extras */);
// THEN ConfirmLockPassword.InternalActivity is shown.
assertThat(getCurrentActivity())
final Activity activity = getCurrentActivity();
assertThat(isSecureWindow(activity)).isTrue();
assertThat(activity)
.isInstanceOf(ConfirmLockPassword.InternalActivity.class);
} finally {
finishAllAppTasks();
@@ -110,7 +111,9 @@ public class ChooseLockGenericTest {
// WHEN ChooseLockGeneric is launched with extras to by-pass lock password confirmation.
mChooseLockGenericActivityRule.launchActivity(PHISHING_ATTACK_INTENT);
// THEN ConfirmLockPassword.InternalActivity is still shown.
assertThat(getCurrentActivity())
final Activity activity = getCurrentActivity();
assertThat(isSecureWindow(activity)).isTrue();
assertThat(activity)
.isInstanceOf(ConfirmLockPassword.InternalActivity.class);
} finally {
finishAllAppTasks();
@@ -217,4 +220,9 @@ public class ChooseLockGenericTest {
mDevice.pressEnter();
mDevice.waitForIdle();
}
private boolean isSecureWindow(Activity activity) {
return (activity.getWindow().getAttributes().flags & WindowManager.LayoutParams.FLAG_SECURE)
!= 0;
}
}