Fix sysui crashlooping
Fix startup lifecycle on header.
Test: runtest systemui
Change-Id: I732cc2fb6693b9857c14534154d02a9b18e7d44a
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStatusBarHeader.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStatusBarHeader.java
index 9ab4d77..08a91bb 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStatusBarHeader.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStatusBarHeader.java
@@ -32,6 +32,7 @@
import android.widget.TextView;
import android.widget.Toast;
+import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.nano.MetricsProto;
import com.android.keyguard.KeyguardStatusView;
@@ -236,13 +237,8 @@
}
@Override
- protected void onAttachedToWindow() {
- super.onAttachedToWindow();
- mHost.getUserInfoController().addCallback(this);
- }
-
- @Override
- protected void onDetachedFromWindow() {
+ @VisibleForTesting
+ public void onDetachedFromWindow() {
setListening(false);
mHost.getUserInfoController().removeCallback(this);
mHost.getNetworkController().removeEmergencyListener(this);
@@ -375,7 +371,7 @@
}
public void setUserInfoController(UserInfoController userInfoController) {
- // Don't care
+ userInfoController.addCallback(this);
}
@Override
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/QSFragmentTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/QSFragmentTest.java
index 1973b54..350a95f 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/QSFragmentTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QSFragmentTest.java
@@ -21,8 +21,10 @@
import android.support.test.runner.AndroidJUnit4;
import com.android.systemui.FragmentTestCase;
+import com.android.systemui.R;
import com.android.systemui.statusbar.phone.PhoneStatusBar;
import com.android.systemui.statusbar.phone.QSTileHost;
+import com.android.systemui.statusbar.phone.QuickStatusBarHeader;
import com.android.systemui.statusbar.phone.StatusBarIconController;
import com.android.systemui.statusbar.policy.BatteryController;
import com.android.systemui.statusbar.policy.BluetoothController;
@@ -86,6 +88,10 @@
qs.setListening(false);
waitForIdleSync(h);
+ // Manually push header through detach so it can handle standard cleanup it does on
+ // removed from window.
+ ((QuickStatusBarHeader) qs.getView().findViewById(R.id.header)).onDetachedFromWindow();
+
host.destroy();
// Ensure the tuner cleans up its persistent listeners.
TunerService.get(mContext).destroy();