Merge "Simulate extra navigation bar for fixed rotation" into sc-v2-dev

This commit is contained in:
TreeHugger Robot
2021-10-14 07:03:38 +00:00
committed by Android (Google) Code Review

View File

@@ -1521,31 +1521,51 @@ public class DisplayPolicy {
* some temporal states, but doesn't change the window frames used to show on screen.
*/
void simulateLayoutDisplay(DisplayFrames displayFrames, SparseArray<Rect> barContentFrames) {
if (mNavigationBar != null) {
final WindowFrames simulatedWindowFrames = new WindowFrames();
if (INSETS_LAYOUT_GENERALIZATION) {
simulateLayoutDecorWindow(mNavigationBar, displayFrames, simulatedWindowFrames,
if (INSETS_LAYOUT_GENERALIZATION) {
final InsetsStateController insetsStateController =
mDisplayContent.getInsetsStateController();
for (int type = 0; type < InsetsState.SIZE; type++) {
final InsetsSourceProvider provider =
insetsStateController.peekSourceProvider(type);
if (provider == null || !provider.hasWindow()
|| provider.mWin.getControllableInsetProvider() != provider) {
continue;
}
final WindowFrames simulatedWindowFrames = new WindowFrames();
simulateLayoutDecorWindow(provider.mWin, displayFrames, simulatedWindowFrames,
barContentFrames,
contentFrame -> simulateLayoutForContentFrame(displayFrames,
mNavigationBar, contentFrame));
} else {
provider.mWin, contentFrame));
}
} else {
if (mNavigationBar != null) {
final WindowFrames simulatedWindowFrames = new WindowFrames();
simulateLayoutDecorWindow(mNavigationBar, displayFrames, simulatedWindowFrames,
barContentFrames, contentFrame -> layoutNavigationBar(displayFrames,
contentFrame));
}
}
if (mStatusBar != null) {
final WindowFrames simulatedWindowFrames = new WindowFrames();
if (INSETS_LAYOUT_GENERALIZATION) {
simulateLayoutDecorWindow(mStatusBar, displayFrames, simulatedWindowFrames,
barContentFrames,
contentFrame -> simulateLayoutForContentFrame(displayFrames,
mStatusBar, contentFrame));
} else {
if (mStatusBar != null) {
final WindowFrames simulatedWindowFrames = new WindowFrames();
simulateLayoutDecorWindow(mStatusBar, displayFrames, simulatedWindowFrames,
barContentFrames,
contentFrame -> layoutStatusBar(displayFrames, contentFrame));
}
if (mExtraNavBarAlt != null) {
// There's no pre-defined behavior for the extra navigation bar, we need to use the
// new flexible insets logic anyway.
final WindowFrames simulatedWindowFrames = new WindowFrames();
simulateLayoutDecorWindow(mExtraNavBarAlt, displayFrames, simulatedWindowFrames,
barContentFrames,
contentFrame -> simulateLayoutForContentFrame(displayFrames,
mExtraNavBarAlt, contentFrame));
}
if (mClimateBarAlt != null) {
final WindowFrames simulatedWindowFrames = new WindowFrames();
simulateLayoutDecorWindow(mClimateBarAlt, displayFrames, simulatedWindowFrames,
barContentFrames,
contentFrame -> simulateLayoutForContentFrame(displayFrames,
mClimateBarAlt, contentFrame));
}
}
}