summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/wm/TaskFragment.java3
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/TaskFragmentTest.java22
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