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 9ab4d77c83c7f..08a91bb76b3c6 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.ImageView; 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 @@ public class QuickStatusBarHeader extends BaseStatusBarHeader implements } @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 class QuickStatusBarHeader extends BaseStatusBarHeader implements } 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 1973b540494c1..350a95ff66f48 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.os.Handler; 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 @@ public class QSFragmentTest extends FragmentTestCase { 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();