From e3c2e51f67959398a367dc5d6162c0119abd0058 Mon Sep 17 00:00:00 2001 From: Fan Zhang Date: Thu, 21 Sep 2017 15:37:41 -0700 Subject: [PATCH] Set device credential's Window flag to be SECURE. This prevents showing any pattern/pin in recent list. Fixes: 64339515 Bug: 38258991 Merged-In: I99c283dd4a1f2d579f565ccf5839a705e75ed6fc Test: visual Test: runtest --path \ tests/app/src/com/android/settings/password/ChooseLockGenericTest.java Change-Id: Ia9935ef710cf1795d9ce464e0a9edff75be9c0c3 --- .../ConfirmDeviceCredentialBaseActivity.java | 2 +- .../android/settings/ChooseLockGenericTest.java | 16 ++++++++++++---- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/com/android/settings/ConfirmDeviceCredentialBaseActivity.java b/src/com/android/settings/ConfirmDeviceCredentialBaseActivity.java index 489dbbe9ec3..d04014852d2 100644 --- a/src/com/android/settings/ConfirmDeviceCredentialBaseActivity.java +++ b/src/com/android/settings/ConfirmDeviceCredentialBaseActivity.java @@ -63,7 +63,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); diff --git a/tests/app/src/com/android/settings/ChooseLockGenericTest.java b/tests/app/src/com/android/settings/ChooseLockGenericTest.java index 924e716e740..e52d6f76c4c 100644 --- a/tests/app/src/com/android/settings/ChooseLockGenericTest.java +++ b/tests/app/src/com/android/settings/ChooseLockGenericTest.java @@ -18,9 +18,7 @@ package com.android.settings; 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; + } }