Loading services/core/java/com/android/server/wm/AppWindowToken.java +2 −2 Original line number Diff line number Diff line Loading @@ -1735,13 +1735,13 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree } /** @return {@code true} if the compatibility bounds is taking effect. */ boolean inSizeCompatMode() { boolean hasSizeCompatBounds() { return mSizeCompatBounds != null; } @Override float getSizeCompatScale() { return inSizeCompatMode() ? mSizeCompatScale : super.getSizeCompatScale(); return hasSizeCompatBounds() ? mSizeCompatScale : super.getSizeCompatScale(); } @Override Loading services/core/java/com/android/server/wm/DisplayContent.java +9 −4 Original line number Diff line number Diff line Loading @@ -221,7 +221,7 @@ import java.util.function.Predicate; * particular Display. */ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowContainer> implements WindowManagerPolicy.DisplayContentInfo { implements WindowManagerPolicy.DisplayContentInfo, ConfigurationContainerListener { private static final String TAG = TAG_WITH_CLASS_NAME ? "DisplayContent" : TAG_WM; /** The default scaling mode that scales content automatically. */ Loading Loading @@ -1136,10 +1136,12 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo * values from being replaced by the initializing {@link #ActivityDisplay}. */ void initializeDisplayOverrideConfiguration() { if (mActivityDisplay != null) { mActivityDisplay.getRequestedOverrideConfiguration() .updateFrom(getRequestedOverrideConfiguration()); if (mActivityDisplay == null) { return; } mActivityDisplay.onRequestedOverrideConfigurationChanged( getResolvedOverrideConfiguration()); mActivityDisplay.registerConfigurationChangeListener(this); } void reconfigureDisplayLocked() { Loading Loading @@ -2373,6 +2375,9 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo void removeImmediately() { mRemovingDisplay = true; try { if (mActivityDisplay != null) { mActivityDisplay.unregisterConfigurationChangeListener(this); } if (mParentWindow != null) { mParentWindow.removeEmbeddedDisplayContent(this); } Loading services/core/java/com/android/server/wm/Task.java +6 −19 Original line number Diff line number Diff line Loading @@ -20,12 +20,8 @@ import static android.app.ActivityTaskManager.RESIZE_MODE_SYSTEM_SCREEN_ROTATION import static android.content.pm.ActivityInfo.RESIZE_MODE_FORCE_RESIZABLE_LANDSCAPE_ONLY; import static android.content.pm.ActivityInfo.RESIZE_MODE_FORCE_RESIZABLE_PORTRAIT_ONLY; import static android.content.pm.ActivityInfo.RESIZE_MODE_FORCE_RESIZABLE_PRESERVE_ORIENTATION; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_PORTRAIT; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSET; import static android.content.res.Configuration.EMPTY; import static android.content.res.Configuration.ORIENTATION_LANDSCAPE; import static android.content.res.Configuration.ORIENTATION_PORTRAIT; import static android.view.SurfaceControl.METADATA_TASK_ID; import static com.android.server.EventLogTags.WM_TASK_REMOVED; Loading Loading @@ -139,26 +135,17 @@ class Task extends WindowContainer<AppWindowToken> implements ConfigurationConta mResizeMode = resizeMode; mSupportsPictureInPicture = supportsPictureInPicture; mTaskRecord = taskRecord; mTaskDescription = taskDescription; // Tasks have no set orientation value (including SCREEN_ORIENTATION_UNSPECIFIED). setOrientation(SCREEN_ORIENTATION_UNSET); if (mTaskRecord != null) { // This can be null when we call createTaskInStack in WindowTestUtils. Remove this after // unification. mTaskRecord.registerConfigurationChangeListener(this); } } else { setBounds(getResolvedOverrideBounds()); mTaskDescription = taskDescription; // Tasks have no set orientation value (including SCREEN_ORIENTATION_UNSPECIFIED) not unless // set through the override configuration. int orientation = SCREEN_ORIENTATION_UNSET; switch (getResolvedOverrideConfiguration().orientation) { case ORIENTATION_PORTRAIT: orientation = SCREEN_ORIENTATION_PORTRAIT; break; case ORIENTATION_LANDSCAPE: orientation = SCREEN_ORIENTATION_LANDSCAPE; break; } setOrientation(orientation); } } @Override Loading services/core/java/com/android/server/wm/WindowState.java +2 −2 Original line number Diff line number Diff line Loading @@ -836,7 +836,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP */ boolean inSizeCompatMode() { return (mAttrs.privateFlags & PRIVATE_FLAG_COMPATIBLE_WINDOW) != 0 || (mAppToken != null && mAppToken.inSizeCompatMode() || (mAppToken != null && mAppToken.hasSizeCompatBounds() // Exclude starting window because it is not displayed by the application. && mAttrs.type != TYPE_APPLICATION_STARTING); } Loading Loading @@ -2320,7 +2320,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP } // The offset of compatibility bounds is applied to surface of {@link #AppWindowToken} // and frame, so it is unnecessary to translate twice in surface based coordinates. final int surfaceOffsetX = mAppToken.inSizeCompatMode() final int surfaceOffsetX = mAppToken.hasSizeCompatBounds() ? mAppToken.getBounds().left : 0; mTmpRect.offset(surfaceOffsetX - mWindowFrames.mFrame.left, -mWindowFrames.mFrame.top); region.set(mTmpRect); Loading services/tests/wmtests/src/com/android/server/wm/AppWindowTokenTests.java +3 −3 Original line number Diff line number Diff line Loading @@ -221,7 +221,7 @@ public class AppWindowTokenTests extends WindowTestsBase { containerBounds.set(0, 0, 600, 800); mToken.onConfigurationChanged(newParentConfig); assertTrue(mToken.inSizeCompatMode()); assertTrue(mToken.hasSizeCompatBounds()); assertEquals(containerAppBounds, mToken.getBounds()); assertEquals((float) containerAppBounds.width() / fixedBounds.width(), mToken.getSizeCompatScale(), 0.0001f /* delta */); Loading @@ -231,7 +231,7 @@ public class AppWindowTokenTests extends WindowTestsBase { containerBounds.set(containerAppBounds); mToken.onConfigurationChanged(newParentConfig); assertTrue(mToken.inSizeCompatMode()); assertTrue(mToken.hasSizeCompatBounds()); // Don't scale up, so the bounds keep the same as the fixed width. assertEquals(fixedBounds.width(), mToken.getBounds().width()); // Assert the position is horizontal center. Loading @@ -243,7 +243,7 @@ public class AppWindowTokenTests extends WindowTestsBase { containerBounds.set(0, 0, 1200, 2000); mToken.onConfigurationChanged(newParentConfig); // Assert don't use fixed bounds because the region is enough. assertFalse(mToken.inSizeCompatMode()); assertFalse(mToken.hasSizeCompatBounds()); } @Test Loading Loading
services/core/java/com/android/server/wm/AppWindowToken.java +2 −2 Original line number Diff line number Diff line Loading @@ -1735,13 +1735,13 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree } /** @return {@code true} if the compatibility bounds is taking effect. */ boolean inSizeCompatMode() { boolean hasSizeCompatBounds() { return mSizeCompatBounds != null; } @Override float getSizeCompatScale() { return inSizeCompatMode() ? mSizeCompatScale : super.getSizeCompatScale(); return hasSizeCompatBounds() ? mSizeCompatScale : super.getSizeCompatScale(); } @Override Loading
services/core/java/com/android/server/wm/DisplayContent.java +9 −4 Original line number Diff line number Diff line Loading @@ -221,7 +221,7 @@ import java.util.function.Predicate; * particular Display. */ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowContainer> implements WindowManagerPolicy.DisplayContentInfo { implements WindowManagerPolicy.DisplayContentInfo, ConfigurationContainerListener { private static final String TAG = TAG_WITH_CLASS_NAME ? "DisplayContent" : TAG_WM; /** The default scaling mode that scales content automatically. */ Loading Loading @@ -1136,10 +1136,12 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo * values from being replaced by the initializing {@link #ActivityDisplay}. */ void initializeDisplayOverrideConfiguration() { if (mActivityDisplay != null) { mActivityDisplay.getRequestedOverrideConfiguration() .updateFrom(getRequestedOverrideConfiguration()); if (mActivityDisplay == null) { return; } mActivityDisplay.onRequestedOverrideConfigurationChanged( getResolvedOverrideConfiguration()); mActivityDisplay.registerConfigurationChangeListener(this); } void reconfigureDisplayLocked() { Loading Loading @@ -2373,6 +2375,9 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo void removeImmediately() { mRemovingDisplay = true; try { if (mActivityDisplay != null) { mActivityDisplay.unregisterConfigurationChangeListener(this); } if (mParentWindow != null) { mParentWindow.removeEmbeddedDisplayContent(this); } Loading
services/core/java/com/android/server/wm/Task.java +6 −19 Original line number Diff line number Diff line Loading @@ -20,12 +20,8 @@ import static android.app.ActivityTaskManager.RESIZE_MODE_SYSTEM_SCREEN_ROTATION import static android.content.pm.ActivityInfo.RESIZE_MODE_FORCE_RESIZABLE_LANDSCAPE_ONLY; import static android.content.pm.ActivityInfo.RESIZE_MODE_FORCE_RESIZABLE_PORTRAIT_ONLY; import static android.content.pm.ActivityInfo.RESIZE_MODE_FORCE_RESIZABLE_PRESERVE_ORIENTATION; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_PORTRAIT; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSET; import static android.content.res.Configuration.EMPTY; import static android.content.res.Configuration.ORIENTATION_LANDSCAPE; import static android.content.res.Configuration.ORIENTATION_PORTRAIT; import static android.view.SurfaceControl.METADATA_TASK_ID; import static com.android.server.EventLogTags.WM_TASK_REMOVED; Loading Loading @@ -139,26 +135,17 @@ class Task extends WindowContainer<AppWindowToken> implements ConfigurationConta mResizeMode = resizeMode; mSupportsPictureInPicture = supportsPictureInPicture; mTaskRecord = taskRecord; mTaskDescription = taskDescription; // Tasks have no set orientation value (including SCREEN_ORIENTATION_UNSPECIFIED). setOrientation(SCREEN_ORIENTATION_UNSET); if (mTaskRecord != null) { // This can be null when we call createTaskInStack in WindowTestUtils. Remove this after // unification. mTaskRecord.registerConfigurationChangeListener(this); } } else { setBounds(getResolvedOverrideBounds()); mTaskDescription = taskDescription; // Tasks have no set orientation value (including SCREEN_ORIENTATION_UNSPECIFIED) not unless // set through the override configuration. int orientation = SCREEN_ORIENTATION_UNSET; switch (getResolvedOverrideConfiguration().orientation) { case ORIENTATION_PORTRAIT: orientation = SCREEN_ORIENTATION_PORTRAIT; break; case ORIENTATION_LANDSCAPE: orientation = SCREEN_ORIENTATION_LANDSCAPE; break; } setOrientation(orientation); } } @Override Loading
services/core/java/com/android/server/wm/WindowState.java +2 −2 Original line number Diff line number Diff line Loading @@ -836,7 +836,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP */ boolean inSizeCompatMode() { return (mAttrs.privateFlags & PRIVATE_FLAG_COMPATIBLE_WINDOW) != 0 || (mAppToken != null && mAppToken.inSizeCompatMode() || (mAppToken != null && mAppToken.hasSizeCompatBounds() // Exclude starting window because it is not displayed by the application. && mAttrs.type != TYPE_APPLICATION_STARTING); } Loading Loading @@ -2320,7 +2320,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP } // The offset of compatibility bounds is applied to surface of {@link #AppWindowToken} // and frame, so it is unnecessary to translate twice in surface based coordinates. final int surfaceOffsetX = mAppToken.inSizeCompatMode() final int surfaceOffsetX = mAppToken.hasSizeCompatBounds() ? mAppToken.getBounds().left : 0; mTmpRect.offset(surfaceOffsetX - mWindowFrames.mFrame.left, -mWindowFrames.mFrame.top); region.set(mTmpRect); Loading
services/tests/wmtests/src/com/android/server/wm/AppWindowTokenTests.java +3 −3 Original line number Diff line number Diff line Loading @@ -221,7 +221,7 @@ public class AppWindowTokenTests extends WindowTestsBase { containerBounds.set(0, 0, 600, 800); mToken.onConfigurationChanged(newParentConfig); assertTrue(mToken.inSizeCompatMode()); assertTrue(mToken.hasSizeCompatBounds()); assertEquals(containerAppBounds, mToken.getBounds()); assertEquals((float) containerAppBounds.width() / fixedBounds.width(), mToken.getSizeCompatScale(), 0.0001f /* delta */); Loading @@ -231,7 +231,7 @@ public class AppWindowTokenTests extends WindowTestsBase { containerBounds.set(containerAppBounds); mToken.onConfigurationChanged(newParentConfig); assertTrue(mToken.inSizeCompatMode()); assertTrue(mToken.hasSizeCompatBounds()); // Don't scale up, so the bounds keep the same as the fixed width. assertEquals(fixedBounds.width(), mToken.getBounds().width()); // Assert the position is horizontal center. Loading @@ -243,7 +243,7 @@ public class AppWindowTokenTests extends WindowTestsBase { containerBounds.set(0, 0, 1200, 2000); mToken.onConfigurationChanged(newParentConfig); // Assert don't use fixed bounds because the region is enough. assertFalse(mToken.inSizeCompatMode()); assertFalse(mToken.hasSizeCompatBounds()); } @Test Loading