diff options
| -rw-r--r-- | packages/SystemUI/multivalentTests/src/com/android/keyguard/KeyguardSecurityContainerTest.java | 22 | ||||
| -rw-r--r-- | packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java | 27 |
2 files changed, 48 insertions, 1 deletions
diff --git a/packages/SystemUI/multivalentTests/src/com/android/keyguard/KeyguardSecurityContainerTest.java b/packages/SystemUI/multivalentTests/src/com/android/keyguard/KeyguardSecurityContainerTest.java index 156e06843d15..312e62d0b624 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/keyguard/KeyguardSecurityContainerTest.java +++ b/packages/SystemUI/multivalentTests/src/com/android/keyguard/KeyguardSecurityContainerTest.java @@ -196,6 +196,28 @@ public class KeyguardSecurityContainerTest extends SysuiTestCase { } @Test + public void testUserSwitcherToOneHandedRemovesViews() { + // Can happen when a SIM is inserted into a large screen device + initMode(MODE_USER_SWITCHER); + { + View view1 = mKeyguardSecurityContainer.findViewById( + R.id.keyguard_bouncer_user_switcher); + View view2 = mKeyguardSecurityContainer.findViewById(R.id.user_switcher_header); + assertThat(view1).isNotNull(); + assertThat(view2).isNotNull(); + } + + initMode(MODE_ONE_HANDED); + { + View view1 = mKeyguardSecurityContainer.findViewById( + R.id.keyguard_bouncer_user_switcher); + View view2 = mKeyguardSecurityContainer.findViewById(R.id.user_switcher_header); + assertThat(view1).isNull(); + assertThat(view2).isNull(); + } + } + + @Test public void updatePosition_movesKeyguard() { setupForUpdateKeyguardPosition(/* oneHandedMode= */ true); mKeyguardSecurityContainer.updatePositionByTouchX( diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java index 7efe2dde1320..ffbc85ca530f 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java @@ -968,6 +968,15 @@ public class KeyguardSecurityContainer extends ConstraintLayout { constraintSet.constrainWidth(mViewFlipper.getId(), MATCH_CONSTRAINT); constraintSet.applyTo(mView); } + + @Override + public void onDestroy() { + if (mView == null) return; + ConstraintSet constraintSet = new ConstraintSet(); + constraintSet.clone(mView); + constraintSet.clear(mViewFlipper.getId()); + constraintSet.applyTo(mView); + } } /** @@ -1043,12 +1052,20 @@ public class KeyguardSecurityContainer extends ConstraintLayout { @Override public void onDensityOrFontScaleChanged() { mView.removeView(mUserSwitcherViewGroup); + mView.removeView(mUserSwitcher); inflateUserSwitcher(); } @Override public void onDestroy() { - mUserSwitcherController.removeUserSwitchCallback(mUserSwitchCallback); + ConstraintSet constraintSet = new ConstraintSet(); + constraintSet.clone(mView); + constraintSet.clear(mUserSwitcherViewGroup.getId()); + constraintSet.clear(mViewFlipper.getId()); + constraintSet.applyTo(mView); + + mView.removeView(mUserSwitcherViewGroup); + mView.removeView(mUserSwitcher); } private Drawable findLargeUserIcon(int userId) { @@ -1344,5 +1361,13 @@ public class KeyguardSecurityContainer extends ConstraintLayout { constraintSet.constrainPercentWidth(mViewFlipper.getId(), 0.5f); constraintSet.applyTo(mView); } + + @Override + public void onDestroy() { + ConstraintSet constraintSet = new ConstraintSet(); + constraintSet.clone(mView); + constraintSet.clear(mViewFlipper.getId()); + constraintSet.applyTo(mView); + } } } |