diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java b/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java index 20f1a8ed76893..1422a25bfe12c 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java @@ -515,7 +515,13 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca public void setExpanded(boolean expanded) { if (DEBUG) Log.d(TAG, "setExpanded " + expanded); mQsExpanded = expanded; - updateQsPanelControllerListening(); + if (mInSplitShade && mQsExpanded) { + // in split shade QS is expanded immediately when shade expansion starts and then we + // also need to listen to changes - otherwise QS is updated only once its fully expanded + setListening(true); + } else { + updateQsPanelControllerListening(); + } updateQsState(); } 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 cd7a949443c93..72e022ed7bbbb 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/QSFragmentTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QSFragmentTest.java @@ -439,6 +439,17 @@ public class QSFragmentTest extends SysuiBaseFragmentTest { verify(mQSPanelController).setExpanded(false); } + @Test + public void startsListeningAfterStateChangeToExpanded_inSplitShade() { + QSFragment fragment = resumeAndGetFragment(); + enableSplitShade(); + fragment.setQsVisible(true); + clearInvocations(mQSPanelController); + + fragment.setExpanded(true); + verify(mQSPanelController).setListening(true, true); + } + @Override protected Fragment instantiate(Context context, String className, Bundle arguments) { MockitoAnnotations.initMocks(this);