summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/keyguard/KeyguardSecurityContainerTest.java22
-rw-r--r--packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java27
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);
+ }
}
}