diff options
| author | 2023-06-14 18:36:45 +0100 | |
|---|---|---|
| committer | 2023-06-21 14:36:27 +0100 | |
| commit | 733b66e88265fbb692c6dec554ad57107e0439cd (patch) | |
| tree | 149605b110355b37b3f687fe5510af2347026de5 | |
| parent | 5dc4f71ded9f6c4b9a0ea74ac34e1b3a3f69b6ce (diff) | |
Fix pattern lock display in tabletop posture.
Added logic to display pattern lock only on the lower part of the foldable screen when device is in tabletop posture.
Test: atest KeyguardPatternViewControllerTest
Fixes: 280422373
Change-Id: Idb9678b1d5f948b9f8a8d7dccec11abacdceb81d
| -rw-r--r-- | packages/SystemUI/src/com/android/keyguard/KeyguardPatternViewController.java | 1 | ||||
| -rw-r--r-- | packages/SystemUI/tests/src/com/android/keyguard/KeyguardPatternViewControllerTest.kt | 96 |
2 files changed, 60 insertions, 37 deletions
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardPatternViewController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardPatternViewController.java index bcf8e98a8106..4b1afc3dba4a 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardPatternViewController.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardPatternViewController.java @@ -236,6 +236,7 @@ public class KeyguardPatternViewController getKeyguardSecurityCallback().onCancelClicked(); }); } + mView.onDevicePostureChanged(mPostureController.getDevicePosture()); mPostureController.addCallback(mPostureCallback); } diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardPatternViewControllerTest.kt b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardPatternViewControllerTest.kt index 71a57c78e226..2eea9eb76398 100644 --- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardPatternViewControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardPatternViewControllerTest.kt @@ -18,10 +18,12 @@ package com.android.keyguard import android.testing.AndroidTestingRunner import android.testing.TestableLooper +import android.view.View +import androidx.constraintlayout.widget.ConstraintLayout +import androidx.constraintlayout.widget.ConstraintSet import androidx.test.filters.SmallTest import com.android.internal.util.LatencyTracker import com.android.internal.widget.LockPatternUtils -import com.android.internal.widget.LockPatternView import com.android.systemui.R import com.android.systemui.SysuiTestCase import com.android.systemui.classifier.FalsingCollector @@ -29,6 +31,10 @@ import com.android.systemui.classifier.FalsingCollectorFake import com.android.systemui.flags.FakeFeatureFlags import com.android.systemui.flags.Flags import com.android.systemui.statusbar.policy.DevicePostureController +import com.android.systemui.statusbar.policy.DevicePostureController.DEVICE_POSTURE_HALF_OPENED +import com.android.systemui.util.mockito.any +import com.android.systemui.util.mockito.whenever +import com.google.common.truth.Truth.assertThat import org.junit.Before import org.junit.Test import org.junit.runner.RunWith @@ -45,7 +51,7 @@ import org.mockito.MockitoAnnotations @RunWith(AndroidTestingRunner::class) @TestableLooper.RunWithLooper class KeyguardPatternViewControllerTest : SysuiTestCase() { - @Mock private lateinit var mKeyguardPatternView: KeyguardPatternView + private lateinit var mKeyguardPatternView: KeyguardPatternView @Mock private lateinit var mKeyguardUpdateMonitor: KeyguardUpdateMonitor @@ -63,54 +69,70 @@ class KeyguardPatternViewControllerTest : SysuiTestCase() { @Mock private lateinit var mKeyguardMessageAreaControllerFactory: KeyguardMessageAreaController.Factory - @Mock private lateinit var mKeyguardMessageArea: BouncerKeyguardMessageArea - @Mock private lateinit var mKeyguardMessageAreaController: KeyguardMessageAreaController<BouncerKeyguardMessageArea> - @Mock private lateinit var mLockPatternView: LockPatternView - - @Mock private lateinit var mPostureController: DevicePostureController + @Mock private lateinit var mPostureController: DevicePostureController private lateinit var mKeyguardPatternViewController: KeyguardPatternViewController private lateinit var fakeFeatureFlags: FakeFeatureFlags - @Before - fun setup() { - MockitoAnnotations.initMocks(this) - `when`(mKeyguardPatternView.isAttachedToWindow).thenReturn(true) - `when`( - mKeyguardPatternView.requireViewById<BouncerKeyguardMessageArea>( - R.id.bouncer_message_area)) - .thenReturn(mKeyguardMessageArea) - `when`(mKeyguardPatternView.findViewById<LockPatternView>(R.id.lockPatternView)) - .thenReturn(mLockPatternView) - `when`(mKeyguardMessageAreaControllerFactory.create(mKeyguardMessageArea)) - .thenReturn(mKeyguardMessageAreaController) - `when`(mKeyguardPatternView.resources).thenReturn(context.resources) - fakeFeatureFlags = FakeFeatureFlags() - fakeFeatureFlags.set(Flags.REVAMPED_BOUNCER_MESSAGES, false) - mKeyguardPatternViewController = - KeyguardPatternViewController( - mKeyguardPatternView, - mKeyguardUpdateMonitor, - mSecurityMode, - mLockPatternUtils, - mKeyguardSecurityCallback, - mLatencyTracker, - mFalsingCollector, - mEmergencyButtonController, - mKeyguardMessageAreaControllerFactory, - mPostureController, - fakeFeatureFlags) - } + @Before + fun setup() { + MockitoAnnotations.initMocks(this) + whenever(mKeyguardMessageAreaControllerFactory.create(any())) + .thenReturn(mKeyguardMessageAreaController) + fakeFeatureFlags = FakeFeatureFlags() + fakeFeatureFlags.set(Flags.REVAMPED_BOUNCER_MESSAGES, false) + mKeyguardPatternView = View.inflate(mContext, R.layout.keyguard_pattern_view, null) + as KeyguardPatternView + + + mKeyguardPatternViewController = + KeyguardPatternViewController( + mKeyguardPatternView, + mKeyguardUpdateMonitor, + mSecurityMode, + mLockPatternUtils, + mKeyguardSecurityCallback, + mLatencyTracker, + mFalsingCollector, + mEmergencyButtonController, + mKeyguardMessageAreaControllerFactory, + mPostureController, + fakeFeatureFlags + ) + mKeyguardPatternView.onAttachedToWindow() + } + + @Test + fun tabletopPostureIsDetectedFromStart() { + overrideResource(R.dimen.half_opened_bouncer_height_ratio, 0.5f) + whenever(mPostureController.devicePosture).thenReturn(DEVICE_POSTURE_HALF_OPENED) + + mKeyguardPatternViewController.onViewAttached() + + assertThat(getPatternTopGuideline()).isEqualTo(getExpectedTopGuideline()) + } + + private fun getPatternTopGuideline(): Float { + val cs = ConstraintSet() + val container = + mKeyguardPatternView.findViewById(R.id.pattern_container) as ConstraintLayout + cs.clone(container) + return cs.getConstraint(R.id.pattern_top_guideline).layout.guidePercent + } + + private fun getExpectedTopGuideline(): Float { + return mContext.resources.getFloat(R.dimen.half_opened_bouncer_height_ratio) + } @Test fun withFeatureFlagOn_oldMessage_isHidden() { fakeFeatureFlags.set(Flags.REVAMPED_BOUNCER_MESSAGES, true) - mKeyguardPatternViewController.init() + mKeyguardPatternViewController.onViewAttached() verify<KeyguardMessageAreaController<*>>(mKeyguardMessageAreaController).disable() } |