diff options
| -rw-r--r-- | services/core/java/com/android/server/wm/TaskFragment.java | 3 | ||||
| -rw-r--r-- | services/tests/wmtests/src/com/android/server/wm/TaskFragmentTest.java | 22 |
2 files changed, 20 insertions, 5 deletions
diff --git a/services/core/java/com/android/server/wm/TaskFragment.java b/services/core/java/com/android/server/wm/TaskFragment.java index 58ea825f1f50..fd0a772d0478 100644 --- a/services/core/java/com/android/server/wm/TaskFragment.java +++ b/services/core/java/com/android/server/wm/TaskFragment.java @@ -2223,7 +2223,8 @@ class TaskFragment extends WindowContainer<WindowContainer> { // task, because they should not be affected by insets. inOutConfig.smallestScreenWidthDp = (int) (0.5f + Math.min(mTmpFullBounds.width(), mTmpFullBounds.height()) / density); - } else if (isEmbedded()) { + } else if (windowingMode == WINDOWING_MODE_MULTI_WINDOW + && isEmbeddedWithBoundsOverride()) { // For embedded TFs, the smallest width should be updated. Otherwise, inherit // from the parent task would result in applications loaded wrong resource. inOutConfig.smallestScreenWidthDp = diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskFragmentTest.java b/services/tests/wmtests/src/com/android/server/wm/TaskFragmentTest.java index 11ac929327b9..c8932550d877 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TaskFragmentTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/TaskFragmentTest.java @@ -38,6 +38,7 @@ import static com.android.server.wm.WindowContainer.POSITION_TOP; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.anyInt; @@ -98,12 +99,25 @@ public class TaskFragmentTest extends WindowTestsBase { } @Test - public void testOnConfigurationChanged_updateSurface() { - final Rect bounds = new Rect(100, 100, 1100, 1100); + public void testOnConfigurationChanged() { + final Configuration parentConfig = mTaskFragment.getParent().getConfiguration(); + final Rect parentBounds = parentConfig.windowConfiguration.getBounds(); + parentConfig.smallestScreenWidthDp += 10; + final int parentSw = parentConfig.smallestScreenWidthDp; + final Rect bounds = new Rect(parentBounds); + bounds.inset(100, 100); mTaskFragment.setBounds(bounds); + mTaskFragment.setWindowingMode(WINDOWING_MODE_MULTI_WINDOW); + // Calculate its own sw with smaller bounds in multi-window mode. + assertNotEquals(parentSw, mTaskFragment.getConfiguration().smallestScreenWidthDp); - verify(mTransaction).setPosition(mLeash, 100, 100); - verify(mTransaction).setWindowCrop(mLeash, 1000, 1000); + verify(mTransaction).setPosition(mLeash, bounds.left, bounds.top); + verify(mTransaction).setWindowCrop(mLeash, bounds.width(), bounds.height()); + + mTaskFragment.setBounds(parentBounds); + mTaskFragment.setWindowingMode(WINDOWING_MODE_FULLSCREEN); + // Inherit parent's sw in fullscreen mode. + assertEquals(parentSw, mTaskFragment.getConfiguration().smallestScreenWidthDp); } @Test |