Make sure there are bubbles before animating due to IME changes.
Also, don't crash if we try to spring the first bubble when there are no bubbles.
Fixes: 127275756
Test: atest SystemUITests
Change-Id: I6259398d894039d42f93300d0d997d14372f07b6
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java
index 471619e..656d757 100644
--- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java
+++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java
@@ -582,12 +582,9 @@
int displayRotation) throws RemoteException {}
@Override
- public void onImeVisibilityChanged(boolean imeVisible, int imeHeight)
- throws RemoteException {
- if (mStackView != null) {
- mStackView.post(() -> {
- mStackView.onImeVisibilityChanged(imeVisible, imeHeight);
- });
+ public void onImeVisibilityChanged(boolean imeVisible, int imeHeight) {
+ if (mStackView != null && mStackView.getBubbleCount() > 0) {
+ mStackView.post(() -> mStackView.onImeVisibilityChanged(imeVisible, imeHeight));
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/animation/StackAnimationController.java b/packages/SystemUI/src/com/android/systemui/bubbles/animation/StackAnimationController.java
index f47fbe0..47668b8 100644
--- a/packages/SystemUI/src/com/android/systemui/bubbles/animation/StackAnimationController.java
+++ b/packages/SystemUI/src/com/android/systemui/bubbles/animation/StackAnimationController.java
@@ -440,6 +440,10 @@
DynamicAnimation.ViewProperty property, SpringForce spring,
float vel, float finalPosition) {
+ if (mLayout.getChildCount() == 0) {
+ return;
+ }
+
Log.d(TAG, String.format("Springing %s to final position %f.",
PhysicsAnimationLayout.getReadablePropertyName(property),
finalPosition));
@@ -489,7 +493,7 @@
@Override
public float getValue(StackAnimationController controller) {
- return mProperty.getValue(mLayout.getChildAt(0));
+ return mLayout.getChildCount() > 0 ? mProperty.getValue(mLayout.getChildAt(0)) : 0;
}
@Override