Merge "Fix QSPanel horizontal layout issue after unfolding" into tm-qpr-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
ff7317100a
@@ -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);
|
||||
}
|
||||
LargeScreenUtils.shouldUseSplitNotificationShade(getResources());
|
||||
mLastOrientation = newConfig.orientation;
|
||||
|
||||
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();
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user