From e967e9676da91f3d804e9168223eed571e312325 Mon Sep 17 00:00:00 2001 From: Mady Mellor Date: Thu, 26 Mar 2020 17:36:44 -0700 Subject: [PATCH] Ensure activity view is always cleaned up - remove mInflated flag and just use whether the views are null or not as a signal - unify where views are nulled out / expanded view cleaned up, always ensure to clean up expanded view first Test: manual Bug: 152535659 Change-Id: I9ebaafe7d678fc7c3af790e007f0b6d51dfeb00b --- .../com/android/systemui/bubbles/Bubble.java | 24 ++++++++----------- .../systemui/bubbles/BubbleStackView.java | 3 +-- 2 files changed, 11 insertions(+), 16 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/Bubble.java b/packages/SystemUI/src/com/android/systemui/bubbles/Bubble.java index afa3164cbd38b..71f2bc09b9832 100644 --- a/packages/SystemUI/src/com/android/systemui/bubbles/Bubble.java +++ b/packages/SystemUI/src/com/android/systemui/bubbles/Bubble.java @@ -76,7 +76,6 @@ class Bubble implements BubbleViewProvider { private BadgedImageView mIconView; private BubbleExpandedView mExpandedView; - private boolean mInflated; private BubbleViewInfoTask mInflationTask; private boolean mInflateSynchronously; @@ -166,10 +165,16 @@ class Bubble implements BubbleViewProvider { return mExpandedView; } - void cleanupExpandedState() { + /** + * Call when the views should be removed, ensure this is called to clean up ActivityView + * content. + */ + void cleanupViews() { if (mExpandedView != null) { mExpandedView.cleanUpExpandedState(); + mExpandedView = null; } + mIconView = null; } /** @@ -213,17 +218,15 @@ class Bubble implements BubbleViewProvider { } boolean isInflated() { - return mInflated; + return mIconView != null && mExpandedView != null; } void stopInflation() { if (mInflationTask == null) { return; } - mInflationTask.cancel(/* mayInterruptIfRunning */ true); - mIconView = null; - mExpandedView = null; - mInflated = false; + mInflationTask.cancel(true /* mayInterruptIfRunning */); + cleanupViews(); } void setViewInfo(BubbleViewInfoTask.BubbleViewInfo info) { @@ -240,9 +243,6 @@ class Bubble implements BubbleViewProvider { mDotColor = info.dotColor; mDotPath = info.dotPath; - if (mExpandedView != null && mIconView != null) { - mInflated = true; - } if (mExpandedView != null) { mExpandedView.update(/* bubble */ this); } @@ -251,10 +251,6 @@ class Bubble implements BubbleViewProvider { } } - void setInflated(boolean inflated) { - mInflated = inflated; - } - /** * Set visibility of bubble in the expanded state. * diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleStackView.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleStackView.java index 4b036812dbed7..6fd6b8d9f738e 100644 --- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleStackView.java +++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleStackView.java @@ -963,8 +963,7 @@ public class BubbleStackView extends FrameLayout { if (v instanceof BadgedImageView && ((BadgedImageView) v).getKey().equals(bubble.getKey())) { mBubbleContainer.removeViewAt(i); - bubble.cleanupExpandedState(); - bubble.setInflated(false); + bubble.cleanupViews(); logBubbleEvent(bubble, SysUiStatsLog.BUBBLE_UICHANGED__ACTION__DISMISSED); return; }