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

Commit 56ae8846 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Fix QSPanel horizontal layout issue after unfolding" into tm-qpr-dev...

Merge "Fix QSPanel horizontal layout issue after unfolding" into tm-qpr-dev am: ff731710 am: f43e88c1

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/20063951



Change-Id: I7daf6d2bfa16d4c35fc6d3ea1b0357e5170f448d
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 16dabb9a f43e88c1
Loading
Loading
Loading
Loading
+15 −15
Original line number Diff line number Diff line
@@ -23,8 +23,8 @@ import android.annotation.NonNull;
import android.annotation.Nullable;
import android.content.ComponentName;
import android.content.res.Configuration;
import android.content.res.Configuration.Orientation;
import android.metrics.LogMaker;
import android.util.Log;
import android.view.View;

import com.android.internal.annotations.VisibleForTesting;
@@ -75,6 +75,7 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr

    @Nullable
    private Consumer<Boolean> mMediaVisibilityChangedListener;
    @Orientation
    private int mLastOrientation;
    private String mCachedSpecs = "";
    @Nullable
@@ -88,21 +89,16 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr
            new QSPanel.OnConfigurationChangedListener() {
                @Override
                public void onConfigurationChange(Configuration newConfig) {
                    mQSLogger.logOnConfigurationChanged(
                        /* lastOrientation= */ mLastOrientation,
                        /* newOrientation= */ newConfig.orientation,
                        /* containerName= */ mView.getDumpableTag());

                    mShouldUseSplitNotificationShade =
                        LargeScreenUtils.shouldUseSplitNotificationShade(getResources());
                    // Logging to aid the investigation of b/216244185.
                    Log.d(TAG,
                            "onConfigurationChange: "
                                    + "mShouldUseSplitNotificationShade="
                                    + mShouldUseSplitNotificationShade + ", "
                                    + "newConfig.windowConfiguration="
                                    + newConfig.windowConfiguration);
                    mQSLogger.logOnConfigurationChanged(mLastOrientation, newConfig.orientation,
                            mView.getDumpableTag());
                    if (newConfig.orientation != mLastOrientation) {
                    mLastOrientation = newConfig.orientation;
                        switchTileLayout(false);
                    }

                    switchTileLayoutIfNeeded();
                    onConfigurationChanged();
                }
            };
@@ -334,6 +330,10 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr
        }
    }

    private void switchTileLayoutIfNeeded() {
        switchTileLayout(/* force= */ false);
    }

    boolean switchTileLayout(boolean force) {
        /* Whether or not the panel currently contains a media player. */
        boolean horizontal = shouldUseHorizontalLayout();
+21 −1
Original line number Diff line number Diff line
@@ -277,7 +277,7 @@ public class QSPanelControllerBaseTest extends SysuiTestCase {

        // Then the layout changes
        assertThat(mController.shouldUseHorizontalLayout()).isTrue();
        verify(mHorizontalLayoutListener).run(); // not invoked
        verify(mHorizontalLayoutListener).run();

        // When it is rotated back to portrait
        mConfiguration.orientation = Configuration.ORIENTATION_PORTRAIT;
@@ -300,4 +300,24 @@ public class QSPanelControllerBaseTest extends SysuiTestCase {
        verify(mQSTile).refreshState();
        verify(mOtherTile, never()).refreshState();
    }

    @Test
    public void configurationChange_onlySplitShadeConfigChanges_horizontalLayoutStatusUpdated() {
        // Preconditions for horizontal layout
        when(mMediaHost.getVisible()).thenReturn(true);
        when(mResources.getBoolean(R.bool.config_use_split_notification_shade)).thenReturn(false);
        mConfiguration.orientation = Configuration.ORIENTATION_LANDSCAPE;
        mController.setUsingHorizontalLayoutChangeListener(mHorizontalLayoutListener);
        mController.mOnConfigurationChangedListener.onConfigurationChange(mConfiguration);
        assertThat(mController.shouldUseHorizontalLayout()).isTrue();
        reset(mHorizontalLayoutListener);

        // Only split shade status changes
        when(mResources.getBoolean(R.bool.config_use_split_notification_shade)).thenReturn(true);
        mController.mOnConfigurationChangedListener.onConfigurationChange(mConfiguration);

        // Horizontal layout is updated accordingly.
        assertThat(mController.shouldUseHorizontalLayout()).isFalse();
        verify(mHorizontalLayoutListener).run();
    }
}