summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Victor Truong <truongvi@google.com> 2022-08-17 14:41:58 -0400
committer Victor Truong <truongvi@google.com> 2022-08-19 15:31:05 -0400
commit5b29a93863c08beef6548b35f3a5b906c7e47f40 (patch)
tree6861fd3ce1b5309be2d74bfa7b730308bbed938a
parent0082587393569e1c2aa1e8e742960d95e481ce3b (diff)
Remove views from StatusBarView when View is detached.
Dreams were crashing SysUI. The MediaShellView was still attached after a dream starts so the next time Dreams came up, it would still have a parent causing SysUI to crash Bug: 242626584 Test: atest DreamOverlayStatusBarViewControllerTest Change-Id: Ibf14a10139e0c4d58c95be49e00992da138d1fc7
-rw-r--r--packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayStatusBarView.java6
-rw-r--r--packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayStatusBarViewController.java1
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/dreams/DreamOverlayStatusBarViewControllerTest.java6
3 files changed, 12 insertions, 1 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayStatusBarView.java b/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayStatusBarView.java
index 7e4a108aadf1..823255c38a84 100644
--- a/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayStatusBarView.java
+++ b/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayStatusBarView.java
@@ -113,7 +113,7 @@ public class DreamOverlayStatusBarView extends ConstraintLayout {
}
void setExtraStatusBarItemViews(List<View> views) {
- mSystemStatusViewGroup.removeAllViews();
+ removeAllStatusBarItemViews();
views.forEach(view -> mSystemStatusViewGroup.addView(view));
}
@@ -121,4 +121,8 @@ public class DreamOverlayStatusBarView extends ConstraintLayout {
final View statusIcon = findViewById(resId);
return Objects.requireNonNull(statusIcon);
}
+
+ void removeAllStatusBarItemViews() {
+ mSystemStatusViewGroup.removeAllViews();
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayStatusBarViewController.java b/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayStatusBarViewController.java
index 65cfae1ac14b..6f505504b186 100644
--- a/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayStatusBarViewController.java
+++ b/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayStatusBarViewController.java
@@ -192,6 +192,7 @@ public class DreamOverlayStatusBarViewController extends ViewController<DreamOve
mDreamOverlayNotificationCountProvider.ifPresent(
provider -> provider.removeCallback(mNotificationCountCallback));
mStatusBarItemsProvider.removeCallback(mStatusBarItemsProviderCallback);
+ mView.removeAllStatusBarItemViews();
mTouchInsetSession.clear();
mIsAttached = false;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/dreams/DreamOverlayStatusBarViewControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/dreams/DreamOverlayStatusBarViewControllerTest.java
index 01309f86a137..7f6b79b48939 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/dreams/DreamOverlayStatusBarViewControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/dreams/DreamOverlayStatusBarViewControllerTest.java
@@ -308,6 +308,12 @@ public class DreamOverlayStatusBarViewControllerTest extends SysuiTestCase {
}
@Test
+ public void testOnViewDetachedRemovesViews() {
+ mController.onViewDetached();
+ verify(mView).removeAllStatusBarItemViews();
+ }
+
+ @Test
public void testWifiIconHiddenWhenWifiBecomesAvailable() {
// Make sure wifi starts out unavailable when onViewAttached is called, and then returns
// true on the second query.