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();