summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Joshua Mokut <jmokut@google.com> 2023-06-14 18:36:45 +0100
committer Joshua Mokut <jmokut@google.com> 2023-06-21 14:36:27 +0100
commit733b66e88265fbb692c6dec554ad57107e0439cd (patch)
tree149605b110355b37b3f687fe5510af2347026de5
parent5dc4f71ded9f6c4b9a0ea74ac34e1b3a3f69b6ce (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.java1
-rw-r--r--packages/SystemUI/tests/src/com/android/keyguard/KeyguardPatternViewControllerTest.kt96
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()
}