diff options
5 files changed, 66 insertions, 58 deletions
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java index 95567ec94794..67ef02a6029b 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java @@ -19,6 +19,8 @@ import static android.view.WindowInsets.Type.ime; import static android.view.WindowInsets.Type.systemBars; import static android.view.WindowInsetsAnimation.Callback.DISPATCH_MODE_STOP; +import static com.android.systemui.plugins.FalsingManager.LOW_PENALTY; + import static java.lang.Integer.max; import android.animation.Animator; @@ -71,7 +73,7 @@ import com.android.keyguard.KeyguardSecurityModel.SecurityMode; import com.android.systemui.Gefingerpoken; import com.android.systemui.R; import com.android.systemui.animation.Interpolators; -import com.android.systemui.classifier.FalsingCollector; +import com.android.systemui.plugins.FalsingManager; import com.android.systemui.shared.system.SysUiStatsLog; import com.android.systemui.statusbar.policy.UserSwitcherController; import com.android.systemui.statusbar.policy.UserSwitcherController.BaseUserAdapter; @@ -124,7 +126,7 @@ public class KeyguardSecurityContainer extends FrameLayout { @VisibleForTesting KeyguardSecurityViewFlipper mSecurityViewFlipper; private GlobalSettings mGlobalSettings; - private FalsingCollector mFalsingCollector; + private FalsingManager mFalsingManager; private UserSwitcherController mUserSwitcherController; private AlertDialog mAlertDialog; private boolean mSwipeUpToRetry; @@ -300,7 +302,7 @@ public class KeyguardSecurityContainer extends FrameLayout { setupViewMode(); } - void initMode(@Mode int mode, GlobalSettings globalSettings, FalsingCollector falsingCollector, + void initMode(@Mode int mode, GlobalSettings globalSettings, FalsingManager falsingManager, UserSwitcherController userSwitcherController) { if (mCurrentMode == mode) return; Log.i(TAG, "Switching mode from " + modeToString(mCurrentMode) + " to " @@ -318,7 +320,7 @@ public class KeyguardSecurityContainer extends FrameLayout { mViewMode = new DefaultViewMode(); } mGlobalSettings = globalSettings; - mFalsingCollector = falsingCollector; + mFalsingManager = falsingManager; mUserSwitcherController = userSwitcherController; setupViewMode(); } @@ -338,11 +340,11 @@ public class KeyguardSecurityContainer extends FrameLayout { private void setupViewMode() { if (mSecurityViewFlipper == null || mGlobalSettings == null - || mFalsingCollector == null || mUserSwitcherController == null) { + || mFalsingManager == null || mUserSwitcherController == null) { return; } - mViewMode.init(this, mGlobalSettings, mSecurityViewFlipper, mFalsingCollector, + mViewMode.init(this, mGlobalSettings, mSecurityViewFlipper, mFalsingManager, mUserSwitcherController); } @@ -695,7 +697,7 @@ public class KeyguardSecurityContainer extends FrameLayout { default void init(@NonNull ViewGroup v, @NonNull GlobalSettings globalSettings, @NonNull KeyguardSecurityViewFlipper viewFlipper, - @NonNull FalsingCollector falsingCollector, + @NonNull FalsingManager falsingManager, @NonNull UserSwitcherController userSwitcherController) {}; /** Reinitialize the location */ @@ -732,7 +734,7 @@ public class KeyguardSecurityContainer extends FrameLayout { @Override public void init(@NonNull ViewGroup v, @NonNull GlobalSettings globalSettings, @NonNull KeyguardSecurityViewFlipper viewFlipper, - @NonNull FalsingCollector falsingCollector, + @NonNull FalsingManager falsingManager, @NonNull UserSwitcherController userSwitcherController) { mView = v; mViewFlipper = viewFlipper; @@ -760,18 +762,18 @@ public class KeyguardSecurityContainer extends FrameLayout { private KeyguardSecurityViewFlipper mViewFlipper; private ImageView mUserIconView; private TextView mUserSwitcher; - private FalsingCollector mFalsingCollector; + private FalsingManager mFalsingManager; private UserSwitcherController mUserSwitcherController; private KeyguardUserSwitcherPopupMenu mPopup; @Override public void init(@NonNull ViewGroup v, @NonNull GlobalSettings globalSettings, @NonNull KeyguardSecurityViewFlipper viewFlipper, - @NonNull FalsingCollector falsingCollector, + @NonNull FalsingManager falsingManager, @NonNull UserSwitcherController userSwitcherController) { mView = v; mViewFlipper = viewFlipper; - mFalsingCollector = falsingCollector; + mFalsingManager = falsingManager; mUserSwitcherController = userSwitcherController; if (mUserSwitcherViewGroup == null) { @@ -865,30 +867,26 @@ public class KeyguardSecurityContainer extends FrameLayout { } anchor.setClickable(true); - anchor.setOnTouchListener((v, ev) -> { - if (ev.getActionMasked() == MotionEvent.ACTION_DOWN) { - mFalsingCollector.avoidGesture(); - mPopup = new KeyguardUserSwitcherPopupMenu(v.getContext(), - mFalsingCollector); - mPopup.setAnchorView(anchor); - mPopup.setAdapter(adapter); - mPopup.setOnItemClickListener(new AdapterView.OnItemClickListener() { - public void onItemClick(AdapterView parent, View view, int pos, - long id) { - mFalsingCollector.avoidGesture(); - - // - 1 to account for the header view - UserRecord user = adapter.getItem(pos - 1); - if (!user.isCurrent) { - adapter.onUserListItemClicked(user); - } - mPopup.dismiss(); - mPopup = null; + anchor.setOnClickListener((v) -> { + if (mFalsingManager.isFalseTap(LOW_PENALTY)) return; + + mPopup = new KeyguardUserSwitcherPopupMenu(v.getContext(), mFalsingManager); + mPopup.setAnchorView(anchor); + mPopup.setAdapter(adapter); + mPopup.setOnItemClickListener(new AdapterView.OnItemClickListener() { + public void onItemClick(AdapterView parent, View view, int pos, long id) { + if (mFalsingManager.isFalseTap(LOW_PENALTY)) return; + + // - 1 to account for the header view + UserRecord user = adapter.getItem(pos - 1); + if (!user.isCurrent) { + adapter.onUserListItemClicked(user); } - }); - mPopup.show(); - } - return true; + mPopup.dismiss(); + mPopup = null; + } + }); + mPopup.show(); }); } @@ -935,7 +933,7 @@ public class KeyguardSecurityContainer extends FrameLayout { @Override public void init(@NonNull ViewGroup v, @NonNull GlobalSettings globalSettings, @NonNull KeyguardSecurityViewFlipper viewFlipper, - @NonNull FalsingCollector falsingCollector, + @NonNull FalsingManager falsingManager, @NonNull UserSwitcherController userSwitcherController) { mView = v; mViewFlipper = viewFlipper; diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainerController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainerController.java index 6b73a324eff3..2fb2211150ec 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainerController.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainerController.java @@ -51,6 +51,7 @@ import com.android.settingslib.utils.ThreadUtils; import com.android.systemui.Gefingerpoken; import com.android.systemui.R; import com.android.systemui.classifier.FalsingCollector; +import com.android.systemui.plugins.FalsingManager; import com.android.systemui.shared.system.SysUiStatsLog; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.KeyguardStateController; @@ -79,6 +80,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard private final SecurityCallback mSecurityCallback; private final ConfigurationController mConfigurationController; private final FalsingCollector mFalsingCollector; + private final FalsingManager mFalsingManager; private final UserSwitcherController mUserSwitcherController; private final GlobalSettings mGlobalSettings; @@ -234,6 +236,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard KeyguardSecurityViewFlipperController securityViewFlipperController, ConfigurationController configurationController, FalsingCollector falsingCollector, + FalsingManager falsingManager, UserSwitcherController userSwitcherController, GlobalSettings globalSettings) { super(view); @@ -250,6 +253,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard mConfigurationController = configurationController; mLastOrientation = getResources().getConfiguration().orientation; mFalsingCollector = falsingCollector; + mFalsingManager = falsingManager; mUserSwitcherController = userSwitcherController; mGlobalSettings = globalSettings; } @@ -519,7 +523,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard mode = KeyguardSecurityContainer.MODE_ONE_HANDED; } - mView.initMode(mode, mGlobalSettings, mFalsingCollector, mUserSwitcherController); + mView.initMode(mode, mGlobalSettings, mFalsingManager, mUserSwitcherController); } public void reportFailedUnlockAttempt(int userId, int timeoutMs) { @@ -609,6 +613,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard private final KeyguardSecurityViewFlipperController mSecurityViewFlipperController; private final ConfigurationController mConfigurationController; private final FalsingCollector mFalsingCollector; + private final FalsingManager mFalsingManager; private final GlobalSettings mGlobalSettings; private final UserSwitcherController mUserSwitcherController; @@ -625,6 +630,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard KeyguardSecurityViewFlipperController securityViewFlipperController, ConfigurationController configurationController, FalsingCollector falsingCollector, + FalsingManager falsingManager, UserSwitcherController userSwitcherController, GlobalSettings globalSettings) { mView = view; @@ -638,6 +644,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard mSecurityViewFlipperController = securityViewFlipperController; mConfigurationController = configurationController; mFalsingCollector = falsingCollector; + mFalsingManager = falsingManager; mGlobalSettings = globalSettings; mUserSwitcherController = userSwitcherController; } @@ -648,8 +655,8 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard mAdminSecondaryLockScreenControllerFactory, mLockPatternUtils, mKeyguardUpdateMonitor, mKeyguardSecurityModel, mMetricsLogger, mUiEventLogger, mKeyguardStateController, securityCallback, mSecurityViewFlipperController, - mConfigurationController, mFalsingCollector, mUserSwitcherController, - mGlobalSettings); + mConfigurationController, mFalsingCollector, mFalsingManager, + mUserSwitcherController, mGlobalSettings); } } diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardUserSwitcherPopupMenu.java b/packages/SystemUI/src/com/android/keyguard/KeyguardUserSwitcherPopupMenu.java index ca31b40d7fbf..dfb466788ca7 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardUserSwitcherPopupMenu.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardUserSwitcherPopupMenu.java @@ -26,14 +26,14 @@ import android.widget.ListView; import android.widget.TextView; import com.android.systemui.R; -import com.android.systemui.classifier.FalsingCollector; +import com.android.systemui.plugins.FalsingManager; /** * Custom user-switcher for use on the bouncer. */ public class KeyguardUserSwitcherPopupMenu extends ListPopupWindow { private Context mContext; - private FalsingCollector mFalsingCollector; + private FalsingManager mFalsingManager; private int mLastHeight = -1; private View.OnLayoutChangeListener mLayoutListener = (v, l, t, r, b, ol, ot, or, ob) -> { int height = -v.getMeasuredHeight() + getAnchorView().getHeight(); @@ -45,10 +45,10 @@ public class KeyguardUserSwitcherPopupMenu extends ListPopupWindow { }; public KeyguardUserSwitcherPopupMenu(@NonNull Context context, - @NonNull FalsingCollector falsingCollector) { + @NonNull FalsingManager falsingManager) { super(context); mContext = context; - mFalsingCollector = falsingCollector; + mFalsingManager = falsingManager; Resources res = mContext.getResources(); setBackgroundDrawable( res.getDrawable(R.drawable.keyguard_user_switcher_popup_bg, context.getTheme())); @@ -76,7 +76,7 @@ public class KeyguardUserSwitcherPopupMenu extends ListPopupWindow { listView.setOnTouchListener((v, ev) -> { if (ev.getActionMasked() == MotionEvent.ACTION_DOWN) { - mFalsingCollector.avoidGesture(); + return mFalsingManager.isFalseTap(FalsingManager.LOW_PENALTY); } return false; }); diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardSecurityContainerControllerTest.java b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardSecurityContainerControllerTest.java index 98ce138db857..c873804bc82c 100644 --- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardSecurityContainerControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardSecurityContainerControllerTest.java @@ -48,6 +48,7 @@ import com.android.keyguard.KeyguardSecurityModel.SecurityMode; import com.android.systemui.R; import com.android.systemui.SysuiTestCase; import com.android.systemui.classifier.FalsingCollector; +import com.android.systemui.plugins.FalsingManager; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.statusbar.policy.UserSwitcherController; @@ -111,6 +112,8 @@ public class KeyguardSecurityContainerControllerTest extends SysuiTestCase { @Mock private FalsingCollector mFalsingCollector; @Mock + private FalsingManager mFalsingManager; + @Mock private GlobalSettings mGlobalSettings; @Mock private UserSwitcherController mUserSwitcherController; @@ -147,8 +150,8 @@ public class KeyguardSecurityContainerControllerTest extends SysuiTestCase { mView, mAdminSecondaryLockScreenControllerFactory, mLockPatternUtils, mKeyguardUpdateMonitor, mKeyguardSecurityModel, mMetricsLogger, mUiEventLogger, mKeyguardStateController, mKeyguardSecurityViewFlipperController, - mConfigurationController, mFalsingCollector, mUserSwitcherController, - mGlobalSettings).create(mSecurityCallback); + mConfigurationController, mFalsingCollector, mFalsingManager, + mUserSwitcherController, mGlobalSettings).create(mSecurityCallback); } @Test @@ -185,14 +188,14 @@ public class KeyguardSecurityContainerControllerTest extends SysuiTestCase { public void onResourcesUpdate_callsThroughOnRotationChange() { // Rotation is the same, shouldn't cause an update mKeyguardSecurityContainerController.updateResources(); - verify(mView, never()).initMode(MODE_DEFAULT, mGlobalSettings, mFalsingCollector, + verify(mView, never()).initMode(MODE_DEFAULT, mGlobalSettings, mFalsingManager, mUserSwitcherController); // Update rotation. Should trigger update mConfiguration.orientation = Configuration.ORIENTATION_LANDSCAPE; mKeyguardSecurityContainerController.updateResources(); - verify(mView).initMode(MODE_DEFAULT, mGlobalSettings, mFalsingCollector, + verify(mView).initMode(MODE_DEFAULT, mGlobalSettings, mFalsingManager, mUserSwitcherController); } @@ -250,7 +253,7 @@ public class KeyguardSecurityContainerControllerTest extends SysuiTestCase { .thenReturn((KeyguardInputViewController) mKeyguardPasswordViewController); mKeyguardSecurityContainerController.showSecurityScreen(SecurityMode.Pattern); - verify(mView).initMode(MODE_DEFAULT, mGlobalSettings, mFalsingCollector, + verify(mView).initMode(MODE_DEFAULT, mGlobalSettings, mFalsingManager, mUserSwitcherController); } @@ -262,7 +265,7 @@ public class KeyguardSecurityContainerControllerTest extends SysuiTestCase { .thenReturn((KeyguardInputViewController) mKeyguardPasswordViewController); mKeyguardSecurityContainerController.showSecurityScreen(SecurityMode.Pattern); - verify(mView).initMode(MODE_ONE_HANDED, mGlobalSettings, mFalsingCollector, + verify(mView).initMode(MODE_ONE_HANDED, mGlobalSettings, mFalsingManager, mUserSwitcherController); } @@ -274,7 +277,7 @@ public class KeyguardSecurityContainerControllerTest extends SysuiTestCase { .thenReturn((KeyguardInputViewController) mKeyguardPasswordViewController); mKeyguardSecurityContainerController.showSecurityScreen(SecurityMode.Password); - verify(mView).initMode(MODE_DEFAULT, mGlobalSettings, mFalsingCollector, + verify(mView).initMode(MODE_DEFAULT, mGlobalSettings, mFalsingManager, mUserSwitcherController); } } diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardSecurityContainerTest.java b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardSecurityContainerTest.java index ea7940a58366..77762859de18 100644 --- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardSecurityContainerTest.java +++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardSecurityContainerTest.java @@ -47,7 +47,7 @@ import androidx.test.filters.SmallTest; import com.android.systemui.R; import com.android.systemui.SysuiTestCase; -import com.android.systemui.classifier.FalsingCollector; +import com.android.systemui.plugins.FalsingManager; import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.statusbar.policy.UserSwitcherController; import com.android.systemui.statusbar.policy.UserSwitcherController.UserRecord; @@ -83,7 +83,7 @@ public class KeyguardSecurityContainerTest extends SysuiTestCase { @Mock private GlobalSettings mGlobalSettings; @Mock - private FalsingCollector mFalsingCollector; + private FalsingManager mFalsingManager; @Mock private UserSwitcherController mUserSwitcherController; @Mock @@ -117,7 +117,7 @@ public class KeyguardSecurityContainerTest extends SysuiTestCase { @Test public void onMeasure_usesHalfWidthWithOneHandedModeEnabled() { - mKeyguardSecurityContainer.initMode(MODE_ONE_HANDED, mGlobalSettings, mFalsingCollector, + mKeyguardSecurityContainer.initMode(MODE_ONE_HANDED, mGlobalSettings, mFalsingManager, mUserSwitcherController); int halfWidthMeasureSpec = @@ -129,7 +129,7 @@ public class KeyguardSecurityContainerTest extends SysuiTestCase { @Test public void onMeasure_usesFullWidthWithOneHandedModeDisabled() { - mKeyguardSecurityContainer.initMode(MODE_DEFAULT, mGlobalSettings, mFalsingCollector, + mKeyguardSecurityContainer.initMode(MODE_DEFAULT, mGlobalSettings, mFalsingManager, mUserSwitcherController); mKeyguardSecurityContainer.measure(FAKE_MEASURE_SPEC, FAKE_MEASURE_SPEC); @@ -141,7 +141,7 @@ public class KeyguardSecurityContainerTest extends SysuiTestCase { int imeInsetAmount = 100; int systemBarInsetAmount = 10; - mKeyguardSecurityContainer.initMode(MODE_DEFAULT, mGlobalSettings, mFalsingCollector, + mKeyguardSecurityContainer.initMode(MODE_DEFAULT, mGlobalSettings, mFalsingManager, mUserSwitcherController); Insets imeInset = Insets.of(0, 0, 0, imeInsetAmount); @@ -166,7 +166,7 @@ public class KeyguardSecurityContainerTest extends SysuiTestCase { int imeInsetAmount = 0; int systemBarInsetAmount = 10; - mKeyguardSecurityContainer.initMode(MODE_DEFAULT, mGlobalSettings, mFalsingCollector, + mKeyguardSecurityContainer.initMode(MODE_DEFAULT, mGlobalSettings, mFalsingManager, mUserSwitcherController); Insets imeInset = Insets.of(0, 0, 0, imeInsetAmount); @@ -187,7 +187,7 @@ public class KeyguardSecurityContainerTest extends SysuiTestCase { private void setupForUpdateKeyguardPosition(boolean oneHandedMode) { int mode = oneHandedMode ? MODE_ONE_HANDED : MODE_DEFAULT; - mKeyguardSecurityContainer.initMode(mode, mGlobalSettings, mFalsingCollector, + mKeyguardSecurityContainer.initMode(mode, mGlobalSettings, mFalsingManager, mUserSwitcherController); mKeyguardSecurityContainer.measure(FAKE_MEASURE_SPEC, FAKE_MEASURE_SPEC); @@ -298,7 +298,7 @@ public class KeyguardSecurityContainerTest extends SysuiTestCase { private void setupUserSwitcher() { mKeyguardSecurityContainer.initMode(KeyguardSecurityContainer.MODE_USER_SWITCHER, - mGlobalSettings, mFalsingCollector, mUserSwitcherController); + mGlobalSettings, mFalsingManager, mUserSwitcherController); } private ArrayList<UserRecord> buildUserRecords(int count) { |