Loading packages/SystemUI/src/com/android/systemui/SystemUIFactory.java +5 −1 Original line number Diff line number Diff line Loading @@ -22,12 +22,15 @@ import static com.android.systemui.Dependency.LEAK_REPORT_EMAIL_NAME; import android.annotation.Nullable; import android.app.AlarmManager; import android.content.Context; import android.os.Handler; import android.os.Looper; import android.util.Log; import android.view.ViewGroup; import com.android.internal.colorextraction.ColorExtractor.GradientColors; import com.android.internal.util.function.TriConsumer; import com.android.internal.widget.LockPatternUtils; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.keyguard.ViewMediatorCallback; import com.android.systemui.assist.AssistManager; import com.android.systemui.classifier.FalsingManager; Loading Loading @@ -125,7 +128,8 @@ public class SystemUIFactory { DismissCallbackRegistry dismissCallbackRegistry, KeyguardBouncer.BouncerExpansionCallback expansionCallback) { return new KeyguardBouncer(context, callback, lockPatternUtils, container, dismissCallbackRegistry, FalsingManager.getInstance(context), expansionCallback); dismissCallbackRegistry, FalsingManager.getInstance(context), expansionCallback, KeyguardUpdateMonitor.getInstance(context), new Handler(Looper.getMainLooper())); } public ScrimController createScrimController(ScrimView scrimBehind, ScrimView scrimInFront, Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java +13 −4 Original line number Diff line number Diff line Loading @@ -54,6 +54,7 @@ import java.io.PrintWriter; public class KeyguardBouncer { private static final String TAG = "KeyguardBouncer"; static final long BOUNCER_FACE_DELAY = 800; static final float ALPHA_EXPANSION_THRESHOLD = 0.95f; static final float EXPANSION_HIDDEN = 1f; static final float EXPANSION_VISIBLE = 0f; Loading @@ -66,6 +67,7 @@ public class KeyguardBouncer { private final DismissCallbackRegistry mDismissCallbackRegistry; private final Handler mHandler; private final BouncerExpansionCallback mExpansionCallback; private final KeyguardUpdateMonitor mKeyguardUpdateMonitor; private final KeyguardUpdateMonitorCallback mUpdateMonitorCallback = new KeyguardUpdateMonitorCallback() { @Override Loading Loading @@ -93,16 +95,18 @@ public class KeyguardBouncer { public KeyguardBouncer(Context context, ViewMediatorCallback callback, LockPatternUtils lockPatternUtils, ViewGroup container, DismissCallbackRegistry dismissCallbackRegistry, FalsingManager falsingManager, BouncerExpansionCallback expansionCallback) { BouncerExpansionCallback expansionCallback, KeyguardUpdateMonitor keyguardUpdateMonitor, Handler handler) { mContext = context; mCallback = callback; mLockPatternUtils = lockPatternUtils; mContainer = container; KeyguardUpdateMonitor.getInstance(mContext).registerCallback(mUpdateMonitorCallback); mKeyguardUpdateMonitor = keyguardUpdateMonitor; mFalsingManager = falsingManager; mDismissCallbackRegistry = dismissCallbackRegistry; mExpansionCallback = expansionCallback; mHandler = new Handler(); mHandler = handler; mKeyguardUpdateMonitor.registerCallback(mUpdateMonitorCallback); } public void show(boolean resetSecuritySelection) { Loading Loading @@ -164,7 +168,11 @@ public class KeyguardBouncer { // Split up the work over multiple frames. DejankUtils.removeCallbacks(mResetRunnable); if (mKeyguardUpdateMonitor.isFaceDetectionRunning()) { mHandler.postDelayed(mShowRunnable, BOUNCER_FACE_DELAY); } else { DejankUtils.postAfterTraversal(mShowRunnable); } mCallback.onBouncerVisiblityChanged(true /* shown */); mExpansionCallback.onStartingToShow(); Loading Loading @@ -266,6 +274,7 @@ public class KeyguardBouncer { private void cancelShowRunnable() { DejankUtils.removeCallbacks(mShowRunnable); mHandler.removeCallbacks(mShowRunnable); mShowingSoon = false; } Loading packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardBouncerTest.java +27 −1 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.systemui.statusbar.phone; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyFloat; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq; Loading @@ -31,6 +32,7 @@ import static org.mockito.Mockito.when; import android.content.res.ColorStateList; import android.graphics.Color; import android.os.Handler; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper; import android.view.ViewGroup; Loading @@ -42,6 +44,7 @@ import androidx.test.filters.SmallTest; import com.android.internal.widget.LockPatternUtils; import com.android.keyguard.KeyguardHostView; import com.android.keyguard.KeyguardSecurityModel; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.keyguard.ViewMediatorCallback; import com.android.systemui.DejankUtils; import com.android.systemui.SysuiTestCase; Loading @@ -53,6 +56,7 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.MockitoAnnotations; Loading @@ -75,6 +79,10 @@ public class KeyguardBouncerTest extends SysuiTestCase { private ViewTreeObserver mViewTreeObserver; @Mock private KeyguardBouncer.BouncerExpansionCallback mExpansionCallback; @Mock private KeyguardUpdateMonitor mKeyguardUpdateMonitor; @Mock private Handler mHandler; private KeyguardBouncer mBouncer; Loading @@ -88,7 +96,7 @@ public class KeyguardBouncerTest extends SysuiTestCase { when(mKeyguardHostView.getHeight()).thenReturn(500); mBouncer = new KeyguardBouncer(getContext(), mViewMediatorCallback, mLockPatternUtils, container, mDismissCallbackRegistry, mFalsingManager, mExpansionCallback) { mExpansionCallback, mKeyguardUpdateMonitor, mHandler) { @Override protected void inflateView() { super.inflateView(); Loading Loading @@ -366,4 +374,22 @@ public class KeyguardBouncerTest extends SysuiTestCase { when(mKeyguardHostView.hasDismissActions()).thenReturn(true); Assert.assertTrue("Action should exist", mBouncer.willDismissWithAction()); } @Test public void testShow_delaysIfFaceAuthIsRunning() { when(mKeyguardUpdateMonitor.isFaceDetectionRunning()).thenReturn(true); mBouncer.show(true /* reset */); ArgumentCaptor<Runnable> showRunnable = ArgumentCaptor.forClass(Runnable.class); verify(mHandler).postDelayed(showRunnable.capture(), eq(KeyguardBouncer.BOUNCER_FACE_DELAY)); mBouncer.hide(false /* destroyView */); verify(mHandler).removeCallbacks(eq(showRunnable.getValue())); } @Test public void testRegisterUpdateMonitorCallback() { verify(mKeyguardUpdateMonitor).registerCallback(any()); } } Loading
packages/SystemUI/src/com/android/systemui/SystemUIFactory.java +5 −1 Original line number Diff line number Diff line Loading @@ -22,12 +22,15 @@ import static com.android.systemui.Dependency.LEAK_REPORT_EMAIL_NAME; import android.annotation.Nullable; import android.app.AlarmManager; import android.content.Context; import android.os.Handler; import android.os.Looper; import android.util.Log; import android.view.ViewGroup; import com.android.internal.colorextraction.ColorExtractor.GradientColors; import com.android.internal.util.function.TriConsumer; import com.android.internal.widget.LockPatternUtils; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.keyguard.ViewMediatorCallback; import com.android.systemui.assist.AssistManager; import com.android.systemui.classifier.FalsingManager; Loading Loading @@ -125,7 +128,8 @@ public class SystemUIFactory { DismissCallbackRegistry dismissCallbackRegistry, KeyguardBouncer.BouncerExpansionCallback expansionCallback) { return new KeyguardBouncer(context, callback, lockPatternUtils, container, dismissCallbackRegistry, FalsingManager.getInstance(context), expansionCallback); dismissCallbackRegistry, FalsingManager.getInstance(context), expansionCallback, KeyguardUpdateMonitor.getInstance(context), new Handler(Looper.getMainLooper())); } public ScrimController createScrimController(ScrimView scrimBehind, ScrimView scrimInFront, Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java +13 −4 Original line number Diff line number Diff line Loading @@ -54,6 +54,7 @@ import java.io.PrintWriter; public class KeyguardBouncer { private static final String TAG = "KeyguardBouncer"; static final long BOUNCER_FACE_DELAY = 800; static final float ALPHA_EXPANSION_THRESHOLD = 0.95f; static final float EXPANSION_HIDDEN = 1f; static final float EXPANSION_VISIBLE = 0f; Loading @@ -66,6 +67,7 @@ public class KeyguardBouncer { private final DismissCallbackRegistry mDismissCallbackRegistry; private final Handler mHandler; private final BouncerExpansionCallback mExpansionCallback; private final KeyguardUpdateMonitor mKeyguardUpdateMonitor; private final KeyguardUpdateMonitorCallback mUpdateMonitorCallback = new KeyguardUpdateMonitorCallback() { @Override Loading Loading @@ -93,16 +95,18 @@ public class KeyguardBouncer { public KeyguardBouncer(Context context, ViewMediatorCallback callback, LockPatternUtils lockPatternUtils, ViewGroup container, DismissCallbackRegistry dismissCallbackRegistry, FalsingManager falsingManager, BouncerExpansionCallback expansionCallback) { BouncerExpansionCallback expansionCallback, KeyguardUpdateMonitor keyguardUpdateMonitor, Handler handler) { mContext = context; mCallback = callback; mLockPatternUtils = lockPatternUtils; mContainer = container; KeyguardUpdateMonitor.getInstance(mContext).registerCallback(mUpdateMonitorCallback); mKeyguardUpdateMonitor = keyguardUpdateMonitor; mFalsingManager = falsingManager; mDismissCallbackRegistry = dismissCallbackRegistry; mExpansionCallback = expansionCallback; mHandler = new Handler(); mHandler = handler; mKeyguardUpdateMonitor.registerCallback(mUpdateMonitorCallback); } public void show(boolean resetSecuritySelection) { Loading Loading @@ -164,7 +168,11 @@ public class KeyguardBouncer { // Split up the work over multiple frames. DejankUtils.removeCallbacks(mResetRunnable); if (mKeyguardUpdateMonitor.isFaceDetectionRunning()) { mHandler.postDelayed(mShowRunnable, BOUNCER_FACE_DELAY); } else { DejankUtils.postAfterTraversal(mShowRunnable); } mCallback.onBouncerVisiblityChanged(true /* shown */); mExpansionCallback.onStartingToShow(); Loading Loading @@ -266,6 +274,7 @@ public class KeyguardBouncer { private void cancelShowRunnable() { DejankUtils.removeCallbacks(mShowRunnable); mHandler.removeCallbacks(mShowRunnable); mShowingSoon = false; } Loading
packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardBouncerTest.java +27 −1 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.systemui.statusbar.phone; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyFloat; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq; Loading @@ -31,6 +32,7 @@ import static org.mockito.Mockito.when; import android.content.res.ColorStateList; import android.graphics.Color; import android.os.Handler; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper; import android.view.ViewGroup; Loading @@ -42,6 +44,7 @@ import androidx.test.filters.SmallTest; import com.android.internal.widget.LockPatternUtils; import com.android.keyguard.KeyguardHostView; import com.android.keyguard.KeyguardSecurityModel; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.keyguard.ViewMediatorCallback; import com.android.systemui.DejankUtils; import com.android.systemui.SysuiTestCase; Loading @@ -53,6 +56,7 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.MockitoAnnotations; Loading @@ -75,6 +79,10 @@ public class KeyguardBouncerTest extends SysuiTestCase { private ViewTreeObserver mViewTreeObserver; @Mock private KeyguardBouncer.BouncerExpansionCallback mExpansionCallback; @Mock private KeyguardUpdateMonitor mKeyguardUpdateMonitor; @Mock private Handler mHandler; private KeyguardBouncer mBouncer; Loading @@ -88,7 +96,7 @@ public class KeyguardBouncerTest extends SysuiTestCase { when(mKeyguardHostView.getHeight()).thenReturn(500); mBouncer = new KeyguardBouncer(getContext(), mViewMediatorCallback, mLockPatternUtils, container, mDismissCallbackRegistry, mFalsingManager, mExpansionCallback) { mExpansionCallback, mKeyguardUpdateMonitor, mHandler) { @Override protected void inflateView() { super.inflateView(); Loading Loading @@ -366,4 +374,22 @@ public class KeyguardBouncerTest extends SysuiTestCase { when(mKeyguardHostView.hasDismissActions()).thenReturn(true); Assert.assertTrue("Action should exist", mBouncer.willDismissWithAction()); } @Test public void testShow_delaysIfFaceAuthIsRunning() { when(mKeyguardUpdateMonitor.isFaceDetectionRunning()).thenReturn(true); mBouncer.show(true /* reset */); ArgumentCaptor<Runnable> showRunnable = ArgumentCaptor.forClass(Runnable.class); verify(mHandler).postDelayed(showRunnable.capture(), eq(KeyguardBouncer.BOUNCER_FACE_DELAY)); mBouncer.hide(false /* destroyView */); verify(mHandler).removeCallbacks(eq(showRunnable.getValue())); } @Test public void testRegisterUpdateMonitorCallback() { verify(mKeyguardUpdateMonitor).registerCallback(any()); } }