Merge "[Bouncer] Add min margin bottom for window inset." into tm-dev

This commit is contained in:
Aaron Liu
2022-04-18 16:37:27 +00:00
committed by Android (Google) Code Review
3 changed files with 32 additions and 20 deletions

View File

@@ -38,6 +38,9 @@
<!-- Margin around the various security views --> <!-- Margin around the various security views -->
<dimen name="keyguard_security_view_top_margin">8dp</dimen> <dimen name="keyguard_security_view_top_margin">8dp</dimen>
<!-- Minimum bottom margin under the security view -->
<dimen name="keyguard_security_view_bottom_margin">60dp</dimen>
<dimen name="keyguard_eca_top_margin">18dp</dimen> <dimen name="keyguard_eca_top_margin">18dp</dimen>
<dimen name="keyguard_eca_bottom_margin">12dp</dimen> <dimen name="keyguard_eca_bottom_margin">12dp</dimen>

View File

@@ -555,7 +555,9 @@ public class KeyguardSecurityContainer extends FrameLayout {
int bottomInset = insets.getInsetsIgnoringVisibility(systemBars()).bottom; int bottomInset = insets.getInsetsIgnoringVisibility(systemBars()).bottom;
int imeInset = insets.getInsets(ime()).bottom; int imeInset = insets.getInsets(ime()).bottom;
int inset = max(bottomInset, imeInset); int inset = max(bottomInset, imeInset);
setPadding(getPaddingLeft(), getPaddingTop(), getPaddingRight(), inset); int paddingBottom = max(inset, getContext().getResources()
.getDimensionPixelSize(R.dimen.keyguard_security_view_bottom_margin));
setPadding(getPaddingLeft(), getPaddingTop(), getPaddingRight(), paddingBottom);
return insets.inset(0, 0, 0, inset); return insets.inset(0, 0, 0, inset);
} }

View File

@@ -70,9 +70,8 @@ import java.util.ArrayList;
@RunWith(AndroidTestingRunner.class) @RunWith(AndroidTestingRunner.class)
@TestableLooper.RunWithLooper() @TestableLooper.RunWithLooper()
public class KeyguardSecurityContainerTest extends SysuiTestCase { public class KeyguardSecurityContainerTest extends SysuiTestCase {
private static final int SCREEN_WIDTH = 1600; private int mScreenWidth;
private static final int FAKE_MEASURE_SPEC = private int mFakeMeasureSpec;
View.MeasureSpec.makeMeasureSpec(SCREEN_WIDTH, View.MeasureSpec.EXACTLY);
@Rule @Rule
public MockitoRule mRule = MockitoJUnit.rule(); public MockitoRule mRule = MockitoJUnit.rule();
@@ -114,6 +113,10 @@ public class KeyguardSecurityContainerTest extends SysuiTestCase {
when(mUserSwitcherController.getKeyguardStateController()) when(mUserSwitcherController.getKeyguardStateController())
.thenReturn(mKeyguardStateController); .thenReturn(mKeyguardStateController);
when(mKeyguardStateController.isShowing()).thenReturn(true); when(mKeyguardStateController.isShowing()).thenReturn(true);
mScreenWidth = getUiDevice().getDisplayWidth();
mFakeMeasureSpec = View
.MeasureSpec.makeMeasureSpec(mScreenWidth, View.MeasureSpec.EXACTLY);
} }
@Test @Test
@@ -122,10 +125,10 @@ public class KeyguardSecurityContainerTest extends SysuiTestCase {
mUserSwitcherController); mUserSwitcherController);
int halfWidthMeasureSpec = int halfWidthMeasureSpec =
View.MeasureSpec.makeMeasureSpec(SCREEN_WIDTH / 2, View.MeasureSpec.EXACTLY); View.MeasureSpec.makeMeasureSpec(mScreenWidth / 2, View.MeasureSpec.EXACTLY);
mKeyguardSecurityContainer.onMeasure(FAKE_MEASURE_SPEC, FAKE_MEASURE_SPEC); mKeyguardSecurityContainer.onMeasure(mFakeMeasureSpec, mFakeMeasureSpec);
verify(mSecurityViewFlipper).measure(halfWidthMeasureSpec, FAKE_MEASURE_SPEC); verify(mSecurityViewFlipper).measure(halfWidthMeasureSpec, mFakeMeasureSpec);
} }
@Test @Test
@@ -133,14 +136,16 @@ public class KeyguardSecurityContainerTest extends SysuiTestCase {
mKeyguardSecurityContainer.initMode(MODE_DEFAULT, mGlobalSettings, mFalsingManager, mKeyguardSecurityContainer.initMode(MODE_DEFAULT, mGlobalSettings, mFalsingManager,
mUserSwitcherController); mUserSwitcherController);
mKeyguardSecurityContainer.measure(FAKE_MEASURE_SPEC, FAKE_MEASURE_SPEC); mKeyguardSecurityContainer.measure(mFakeMeasureSpec, mFakeMeasureSpec);
verify(mSecurityViewFlipper).measure(FAKE_MEASURE_SPEC, FAKE_MEASURE_SPEC); verify(mSecurityViewFlipper).measure(mFakeMeasureSpec, mFakeMeasureSpec);
} }
@Test @Test
public void onMeasure_respectsViewInsets() { public void onMeasure_respectsViewInsets() {
int imeInsetAmount = 100; int paddingBottom = getContext().getResources()
int systemBarInsetAmount = 10; .getDimensionPixelSize(R.dimen.keyguard_security_view_bottom_margin);
int imeInsetAmount = paddingBottom + 1;
int systemBarInsetAmount = 0;
mKeyguardSecurityContainer.initMode(MODE_DEFAULT, mGlobalSettings, mFalsingManager, mKeyguardSecurityContainer.initMode(MODE_DEFAULT, mGlobalSettings, mFalsingManager,
mUserSwitcherController); mUserSwitcherController);
@@ -155,17 +160,19 @@ public class KeyguardSecurityContainerTest extends SysuiTestCase {
// It's reduced by the max of the systembar and IME, so just subtract IME inset. // It's reduced by the max of the systembar and IME, so just subtract IME inset.
int expectedHeightMeasureSpec = View.MeasureSpec.makeMeasureSpec( int expectedHeightMeasureSpec = View.MeasureSpec.makeMeasureSpec(
SCREEN_WIDTH - imeInsetAmount, View.MeasureSpec.EXACTLY); mScreenWidth - imeInsetAmount, View.MeasureSpec.EXACTLY);
mKeyguardSecurityContainer.onApplyWindowInsets(insets); mKeyguardSecurityContainer.onApplyWindowInsets(insets);
mKeyguardSecurityContainer.measure(FAKE_MEASURE_SPEC, FAKE_MEASURE_SPEC); mKeyguardSecurityContainer.measure(mFakeMeasureSpec, mFakeMeasureSpec);
verify(mSecurityViewFlipper).measure(FAKE_MEASURE_SPEC, expectedHeightMeasureSpec); verify(mSecurityViewFlipper).measure(mFakeMeasureSpec, expectedHeightMeasureSpec);
} }
@Test @Test
public void onMeasure_respectsViewInsets_largerSystembar() { public void onMeasure_respectsViewInsets_largerSystembar() {
int imeInsetAmount = 0; int imeInsetAmount = 0;
int systemBarInsetAmount = 10; int paddingBottom = getContext().getResources()
.getDimensionPixelSize(R.dimen.keyguard_security_view_bottom_margin);
int systemBarInsetAmount = paddingBottom + 1;
mKeyguardSecurityContainer.initMode(MODE_DEFAULT, mGlobalSettings, mFalsingManager, mKeyguardSecurityContainer.initMode(MODE_DEFAULT, mGlobalSettings, mFalsingManager,
mUserSwitcherController); mUserSwitcherController);
@@ -179,11 +186,11 @@ public class KeyguardSecurityContainerTest extends SysuiTestCase {
.build(); .build();
int expectedHeightMeasureSpec = View.MeasureSpec.makeMeasureSpec( int expectedHeightMeasureSpec = View.MeasureSpec.makeMeasureSpec(
SCREEN_WIDTH - systemBarInsetAmount, View.MeasureSpec.EXACTLY); mScreenWidth - systemBarInsetAmount, View.MeasureSpec.EXACTLY);
mKeyguardSecurityContainer.onApplyWindowInsets(insets); mKeyguardSecurityContainer.onApplyWindowInsets(insets);
mKeyguardSecurityContainer.measure(FAKE_MEASURE_SPEC, FAKE_MEASURE_SPEC); mKeyguardSecurityContainer.measure(mFakeMeasureSpec, mFakeMeasureSpec);
verify(mSecurityViewFlipper).measure(FAKE_MEASURE_SPEC, expectedHeightMeasureSpec); verify(mSecurityViewFlipper).measure(mFakeMeasureSpec, expectedHeightMeasureSpec);
} }
private void setupForUpdateKeyguardPosition(boolean oneHandedMode) { private void setupForUpdateKeyguardPosition(boolean oneHandedMode) {
@@ -191,8 +198,8 @@ public class KeyguardSecurityContainerTest extends SysuiTestCase {
mKeyguardSecurityContainer.initMode(mode, mGlobalSettings, mFalsingManager, mKeyguardSecurityContainer.initMode(mode, mGlobalSettings, mFalsingManager,
mUserSwitcherController); mUserSwitcherController);
mKeyguardSecurityContainer.measure(FAKE_MEASURE_SPEC, FAKE_MEASURE_SPEC); mKeyguardSecurityContainer.measure(mFakeMeasureSpec, mFakeMeasureSpec);
mKeyguardSecurityContainer.layout(0, 0, SCREEN_WIDTH, SCREEN_WIDTH); mKeyguardSecurityContainer.layout(0, 0, mScreenWidth, mScreenWidth);
// Clear any interactions with the mock so we know the interactions definitely come from the // Clear any interactions with the mock so we know the interactions definitely come from the
// below testing. // below testing.