Merge "Fix QSPanel horizontal layout issue after unfolding" into tm-qpr-dev am: ff7317100a
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/20063951 Change-Id: Ie3533f89ac1c4c06cf9288af17f814f07d509570 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -23,8 +23,8 @@ import android.annotation.NonNull;
|
|||||||
import android.annotation.Nullable;
|
import android.annotation.Nullable;
|
||||||
import android.content.ComponentName;
|
import android.content.ComponentName;
|
||||||
import android.content.res.Configuration;
|
import android.content.res.Configuration;
|
||||||
|
import android.content.res.Configuration.Orientation;
|
||||||
import android.metrics.LogMaker;
|
import android.metrics.LogMaker;
|
||||||
import android.util.Log;
|
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
|
||||||
import com.android.internal.annotations.VisibleForTesting;
|
import com.android.internal.annotations.VisibleForTesting;
|
||||||
@@ -75,6 +75,7 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr
|
|||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private Consumer<Boolean> mMediaVisibilityChangedListener;
|
private Consumer<Boolean> mMediaVisibilityChangedListener;
|
||||||
|
@Orientation
|
||||||
private int mLastOrientation;
|
private int mLastOrientation;
|
||||||
private String mCachedSpecs = "";
|
private String mCachedSpecs = "";
|
||||||
@Nullable
|
@Nullable
|
||||||
@@ -88,21 +89,16 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr
|
|||||||
new QSPanel.OnConfigurationChangedListener() {
|
new QSPanel.OnConfigurationChangedListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onConfigurationChange(Configuration newConfig) {
|
public void onConfigurationChange(Configuration newConfig) {
|
||||||
|
mQSLogger.logOnConfigurationChanged(
|
||||||
|
/* lastOrientation= */ mLastOrientation,
|
||||||
|
/* newOrientation= */ newConfig.orientation,
|
||||||
|
/* containerName= */ mView.getDumpableTag());
|
||||||
|
|
||||||
mShouldUseSplitNotificationShade =
|
mShouldUseSplitNotificationShade =
|
||||||
LargeScreenUtils.shouldUseSplitNotificationShade(getResources());
|
LargeScreenUtils.shouldUseSplitNotificationShade(getResources());
|
||||||
// Logging to aid the investigation of b/216244185.
|
mLastOrientation = newConfig.orientation;
|
||||||
Log.d(TAG,
|
|
||||||
"onConfigurationChange: "
|
switchTileLayoutIfNeeded();
|
||||||
+ "mShouldUseSplitNotificationShade="
|
|
||||||
+ mShouldUseSplitNotificationShade + ", "
|
|
||||||
+ "newConfig.windowConfiguration="
|
|
||||||
+ newConfig.windowConfiguration);
|
|
||||||
mQSLogger.logOnConfigurationChanged(mLastOrientation, newConfig.orientation,
|
|
||||||
mView.getDumpableTag());
|
|
||||||
if (newConfig.orientation != mLastOrientation) {
|
|
||||||
mLastOrientation = newConfig.orientation;
|
|
||||||
switchTileLayout(false);
|
|
||||||
}
|
|
||||||
onConfigurationChanged();
|
onConfigurationChanged();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -334,6 +330,10 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void switchTileLayoutIfNeeded() {
|
||||||
|
switchTileLayout(/* force= */ false);
|
||||||
|
}
|
||||||
|
|
||||||
boolean switchTileLayout(boolean force) {
|
boolean switchTileLayout(boolean force) {
|
||||||
/* Whether or not the panel currently contains a media player. */
|
/* Whether or not the panel currently contains a media player. */
|
||||||
boolean horizontal = shouldUseHorizontalLayout();
|
boolean horizontal = shouldUseHorizontalLayout();
|
||||||
|
|||||||
@@ -277,7 +277,7 @@ public class QSPanelControllerBaseTest extends SysuiTestCase {
|
|||||||
|
|
||||||
// Then the layout changes
|
// Then the layout changes
|
||||||
assertThat(mController.shouldUseHorizontalLayout()).isTrue();
|
assertThat(mController.shouldUseHorizontalLayout()).isTrue();
|
||||||
verify(mHorizontalLayoutListener).run(); // not invoked
|
verify(mHorizontalLayoutListener).run();
|
||||||
|
|
||||||
// When it is rotated back to portrait
|
// When it is rotated back to portrait
|
||||||
mConfiguration.orientation = Configuration.ORIENTATION_PORTRAIT;
|
mConfiguration.orientation = Configuration.ORIENTATION_PORTRAIT;
|
||||||
@@ -300,4 +300,24 @@ public class QSPanelControllerBaseTest extends SysuiTestCase {
|
|||||||
verify(mQSTile).refreshState();
|
verify(mQSTile).refreshState();
|
||||||
verify(mOtherTile, never()).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