From 6d479d99a989e7d00860a1a86b51ad5f9dbe5fc6 Mon Sep 17 00:00:00 2001 From: Fan Zhang Date: Mon, 7 Aug 2017 17:29:18 -0700 Subject: [PATCH] Misc fixes for settings - Set device credential's Window flag to be SECURE. This prevents showing any pattern/pin in recent list. - Disable tap sound on entity header Fixes: 64339515 Fixes: 64413598 Test: visual Test: runtest --path \ tests/app/src/com/android/settings/password/ChooseLockGenericTest.java --- .../ConfirmDeviceCredentialBaseActivity.java | 2 +- .../settings/widget/EntityHeaderController.java | 1 + .../settings/password/ChooseLockGenericTest.java | 16 ++++++++++++---- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/com/android/settings/password/ConfirmDeviceCredentialBaseActivity.java b/src/com/android/settings/password/ConfirmDeviceCredentialBaseActivity.java index 2b2b38f231d..d2bd934b7c1 100644 --- a/src/com/android/settings/password/ConfirmDeviceCredentialBaseActivity.java +++ b/src/com/android/settings/password/ConfirmDeviceCredentialBaseActivity.java @@ -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); diff --git a/src/com/android/settings/widget/EntityHeaderController.java b/src/com/android/settings/widget/EntityHeaderController.java index f2fca7c827a..70b040de935 100644 --- a/src/com/android/settings/widget/EntityHeaderController.java +++ b/src/com/android/settings/widget/EntityHeaderController.java @@ -215,6 +215,7 @@ public class EntityHeaderController { final LayoutPreference pref = new LayoutPreference(uiContext, done(activity)); // Makes sure it's the first preference onscreen. pref.setOrder(-1000); + pref.setSelectable(false); pref.setKey(PREF_KEY_APP_HEADER); return pref; } diff --git a/tests/app/src/com/android/settings/password/ChooseLockGenericTest.java b/tests/app/src/com/android/settings/password/ChooseLockGenericTest.java index e2bd6eeaace..40b69a400a0 100644 --- a/tests/app/src/com/android/settings/password/ChooseLockGenericTest.java +++ b/tests/app/src/com/android/settings/password/ChooseLockGenericTest.java @@ -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; + } }