Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 79c8c820 authored by Fabián Kozynski's avatar Fabián Kozynski
Browse files

Restore QSPanelControllerBase listening state

In flexiglass, when the views are detached we set the
tile layout to be not listening. However, if we were listening before,
we should still be listening after re-attaching. This makes sure that
that is restored properly.

Note that this applies to both QQS and QS (as they both use the same
abstract controller class).

Fixes: 366362115
Test: atest QSPanelControllerBaseTest
Test: atest PlatformScenarioTest:AirplaneModeIconTest
Flag: EXEMPT bugfix
Change-Id: Ia67ab43b67bf7699eeaca7687d6a9a70078e01d3
parent 7aa881eb
Loading
Loading
Loading
Loading
+34 −0
Original line number Diff line number Diff line
@@ -136,6 +136,8 @@ public class QSPanelControllerBaseTest extends SysuiTestCase {
    @Mock
    private ViewTreeObserver mViewTreeObserver;

    private boolean mPagedTileLayoutListening = false;

    private TestableLongPressEffectProvider mLongPressEffectProvider =
            new TestableLongPressEffectProvider();

@@ -213,6 +215,11 @@ public class QSPanelControllerBaseTest extends SysuiTestCase {
            return null;
        }).when(mQSPanel).setListening(anyBoolean());

        doAnswer(invocation -> {
            mPagedTileLayoutListening = invocation.getArgument(0);
            return null;
        }).when(mPagedTileLayout).setListening(anyBoolean(), any());

        mController = new TestableQSPanelControllerBase(mQSPanel, mQSHost,
                mQSCustomizerController, mMediaHost,
                mMetricsLogger, mUiEventLogger, mQSLogger, mDumpManager);
@@ -571,6 +578,33 @@ public class QSPanelControllerBaseTest extends SysuiTestCase {
        assertThat(mController.mRecords).isEmpty();
    }

    @Test
    public void listening_dettach_reAttach_listeningSetAgain() {
        mController.setListening(true);

        assertThat(mPagedTileLayoutListening).isTrue();

        mController.onViewDetached();
        assertThat(mPagedTileLayoutListening).isFalse();

        mController.onViewAttached();
        assertThat(mPagedTileLayoutListening).isTrue();
    }

    @Test
    public void notListening_dettach_reAttach_stillNotListening() {
        mController.setListening(false);

        assertThat(mPagedTileLayoutListening).isFalse();

        mController.onViewDetached();
        assertThat(mPagedTileLayoutListening).isFalse();

        mController.onViewAttached();
        assertThat(mPagedTileLayoutListening).isFalse();
    }


    private boolean usingMediaPlayer() {
        return !SceneContainerFlag.isEnabled();
    }
+8 −0
Original line number Diff line number Diff line
@@ -107,6 +107,8 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr
        setLayoutForMediaInScene();
    };

    private boolean mLastListening;

    @VisibleForTesting
    protected final QSPanel.OnConfigurationChangedListener mOnConfigurationChangedListener =
            new QSPanel.OnConfigurationChangedListener() {
@@ -242,6 +244,8 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr
        switchTileLayout(true);

        mDumpManager.registerDumpable(mView.getDumpableTag(), this);

        setListening(mLastListening);
    }

    private void registerForMediaInteractorChanges() {
@@ -259,7 +263,10 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr
        mQSLogger.logOnViewDetached(mLastOrientation, mView.getDumpableTag());
        mView.removeOnConfigurationChangedListener(mOnConfigurationChangedListener);

        // Call directly so mLastListening is not modified. We want that to have the last actual
        // value.
        mView.getTileLayout().setListening(false, mUiEventLogger);
        mView.setListening(false);

        mMediaHost.removeVisibilityChangeListener(mMediaHostVisibilityListener);

@@ -436,6 +443,7 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr
    }

    void setListening(boolean listening) {
        mLastListening = listening;
        if (mView.isListening() == listening) return;
        mView.setListening(listening);