Fix crash when opening overflow after dismissing stack
It changed recently such that we remove the bubble stack
view when its dismissed (previously we just made it
invisible).
This revealed that we weren't cleaning up the bubble
overflow activity view when the stack was dismissed, bc
the parent of that view would be different resulting in
a crash.
This also renamed / simplified a method.
Bug: 157567251
Bug: 155417004
Test: manual - have bubbles, visit the overflow
- dismiss the stack
- get new bubble, open it, visit the overflow
=> no crash
Change-Id: Ia2823e5c2cb9b2a53b2379945287588edc30c072
This commit is contained in:
@@ -655,7 +655,13 @@ public class BubbleController implements ConfigurationController.ConfigurationLi
|
||||
|
||||
try {
|
||||
mAddedToWindowManager = false;
|
||||
mWindowManager.removeView(mStackView);
|
||||
if (mStackView != null) {
|
||||
mWindowManager.removeView(mStackView);
|
||||
mStackView.removeView(mBubbleScrim);
|
||||
mStackView = null;
|
||||
} else {
|
||||
Log.w(TAG, "StackView added to WindowManager, but was null when removing!");
|
||||
}
|
||||
} catch (IllegalArgumentException e) {
|
||||
// This means the stack has already been removed - it shouldn't happen, but ignore if it
|
||||
// does, since we wanted it removed anyway.
|
||||
|
||||
@@ -311,7 +311,9 @@ public class BubbleExpandedView extends LinearLayout {
|
||||
* if a view has been added or removed from on top of the ActivityView, such as the manage menu.
|
||||
*/
|
||||
void updateObscuredTouchableRegion() {
|
||||
mActivityView.onLocationChanged();
|
||||
if (mActivityView != null) {
|
||||
mActivityView.onLocationChanged();
|
||||
}
|
||||
}
|
||||
|
||||
void applyThemeAttrs() {
|
||||
|
||||
@@ -129,7 +129,7 @@ public class BubbleOverflow implements BubbleViewProvider {
|
||||
return mOverflowBtn;
|
||||
}
|
||||
|
||||
void setBtnVisible(int visible) {
|
||||
void setVisible(int visible) {
|
||||
mOverflowBtn.setVisibility(visible);
|
||||
}
|
||||
|
||||
|
||||
@@ -1119,6 +1119,9 @@ public class BubbleStackView extends FrameLayout
|
||||
super.onDetachedFromWindow();
|
||||
getViewTreeObserver().removeOnPreDrawListener(mViewUpdater);
|
||||
getViewTreeObserver().removeOnComputeInternalInsetsListener(this);
|
||||
if (mBubbleOverflow != null && mBubbleOverflow.getExpandedView() != null) {
|
||||
mBubbleOverflow.getExpandedView().cleanUpExpandedState();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1339,21 +1342,12 @@ public class BubbleStackView extends FrameLayout
|
||||
Log.d(TAG, "was asked to remove Bubble, but didn't find the view! " + bubble);
|
||||
}
|
||||
|
||||
private void updateOverflowBtnVisibility() {
|
||||
if (!BubbleExperimentConfig.allowBubbleOverflow(mContext)) {
|
||||
private void updateOverflowVisibility() {
|
||||
if (!BubbleExperimentConfig.allowBubbleOverflow(mContext)
|
||||
|| mBubbleOverflow == null) {
|
||||
return;
|
||||
}
|
||||
if (mIsExpanded) {
|
||||
if (DEBUG_BUBBLE_STACK_VIEW) {
|
||||
Log.d(TAG, "Show overflow button.");
|
||||
}
|
||||
mBubbleOverflow.setBtnVisible(VISIBLE);
|
||||
} else {
|
||||
if (DEBUG_BUBBLE_STACK_VIEW) {
|
||||
Log.d(TAG, "Collapsed. Hide overflow button.");
|
||||
}
|
||||
mBubbleOverflow.setBtnVisible(GONE);
|
||||
}
|
||||
mBubbleOverflow.setVisible(mIsExpanded ? VISIBLE : GONE);
|
||||
}
|
||||
|
||||
// via BubbleData.Listener
|
||||
@@ -1607,7 +1601,7 @@ public class BubbleStackView extends FrameLayout
|
||||
Log.d(TAG, BubbleDebugConfig.formatBubblesString(getBubblesOnScreen(),
|
||||
mExpandedBubble));
|
||||
}
|
||||
updateOverflowBtnVisibility();
|
||||
updateOverflowVisibility();
|
||||
mBubbleContainer.cancelAllAnimations();
|
||||
mExpandedAnimationController.collapseBackToStack(
|
||||
mStackAnimationController.getStackPositionAlongNearestHorizontalEdge()
|
||||
@@ -1631,7 +1625,7 @@ public class BubbleStackView extends FrameLayout
|
||||
beforeExpandedViewAnimation();
|
||||
|
||||
mBubbleContainer.setActiveController(mExpandedAnimationController);
|
||||
updateOverflowBtnVisibility();
|
||||
updateOverflowVisibility();
|
||||
mExpandedAnimationController.expandFromStack(() -> {
|
||||
updatePointerPosition();
|
||||
afterExpandedViewAnimation();
|
||||
|
||||
Reference in New Issue
Block a user