Loading services/core/java/com/android/server/wm/ActivityRecord.java +10 −5 Original line number Diff line number Diff line Loading @@ -670,9 +670,9 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A * from the style of activity. Because we don't want {@link WindowContainer#getOrientation()} * to be affected by the temporal state of {@link ActivityClientController#convertToTranslucent} * when running ANIM_SCENE_TRANSITION. * @see WindowContainer#fillsParent() * @see WindowContainer#providesOrientation() */ private final boolean mFillsParent; private final boolean mStyleFillsParent; // The input dispatching timeout for this application token in milliseconds. long mInputDispatchingTimeoutMillis = DEFAULT_DISPATCHING_TIMEOUT_MILLIS; Loading Loading @@ -1971,10 +1971,10 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A // This style is propagated to the main window attributes with // FLAG_SHOW_WALLPAPER from PhoneWindow#generateLayout. || ent.array.getBoolean(R.styleable.Window_windowShowWallpaper, false); mFillsParent = mOccludesParent; mStyleFillsParent = mOccludesParent; noDisplay = ent.array.getBoolean(R.styleable.Window_windowNoDisplay, false); } else { mFillsParent = mOccludesParent = true; mStyleFillsParent = mOccludesParent = true; noDisplay = false; } Loading Loading @@ -2879,9 +2879,14 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A return (TaskDisplayArea) super.getDisplayArea(); } @Override boolean providesOrientation() { return mStyleFillsParent; } @Override boolean fillsParent() { return mFillsParent; return occludesParent(true /* includingFinishing */); } /** Returns true if this activity is not finishing, is opaque and fills the entire space of Loading services/core/java/com/android/server/wm/PinnedTaskController.java +1 −1 Original line number Diff line number Diff line Loading @@ -172,7 +172,7 @@ class PinnedTaskController { */ void deferOrientationChangeForEnteringPipFromFullScreenIfNeeded() { final ActivityRecord topFullscreen = mDisplayContent.getActivity( a -> a.fillsParent() && !a.getTask().inMultiWindowMode()); a -> a.providesOrientation() && !a.getTask().inMultiWindowMode()); if (topFullscreen == null || topFullscreen.hasFixedRotationTransform()) { return; } Loading services/core/java/com/android/server/wm/WindowContainer.java +7 −4 Original line number Diff line number Diff line Loading @@ -1495,8 +1495,7 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer< */ int getOrientation(int candidate) { mLastOrientationSource = null; if (!fillsParent()) { // Ignore containers that don't completely fill their parents. if (!providesOrientation()) { return SCREEN_ORIENTATION_UNSET; } Loading Loading @@ -1530,8 +1529,8 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer< continue; } if (wc.fillsParent() || orientation != SCREEN_ORIENTATION_UNSPECIFIED) { // Use the orientation if the container fills its parent or requested an explicit if (wc.providesOrientation() || orientation != SCREEN_ORIENTATION_UNSPECIFIED) { // Use the orientation if the container can provide or requested an explicit // orientation that isn't SCREEN_ORIENTATION_UNSPECIFIED. ProtoLog.v(WM_DEBUG_ORIENTATION, "%s is requesting orientation %d (%s)", wc.toString(), orientation, Loading Loading @@ -1560,6 +1559,10 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer< return source; } boolean providesOrientation() { return fillsParent(); } /** * Returns true if this container is opaque and fills all the space made available by its parent * container. Loading services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java +2 −2 Original line number Diff line number Diff line Loading @@ -756,8 +756,8 @@ public class ActivityRecordTests extends WindowTestsBase { final ActivityRecord activity = createActivityWithTask(); ActivityRecord topActivity = new ActivityBuilder(mAtm).setTask(activity.getTask()).build(); topActivity.setOccludesParent(false); // The requested occluding state doesn't affect whether it fills parent. assertTrue(topActivity.fillsParent()); // The requested occluding state doesn't affect whether it can decide orientation. assertTrue(topActivity.providesOrientation()); activity.setState(STOPPED, "Testing"); activity.setVisibility(true); activity.makeActiveIfNeeded(null /* activeActivity */); Loading Loading
services/core/java/com/android/server/wm/ActivityRecord.java +10 −5 Original line number Diff line number Diff line Loading @@ -670,9 +670,9 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A * from the style of activity. Because we don't want {@link WindowContainer#getOrientation()} * to be affected by the temporal state of {@link ActivityClientController#convertToTranslucent} * when running ANIM_SCENE_TRANSITION. * @see WindowContainer#fillsParent() * @see WindowContainer#providesOrientation() */ private final boolean mFillsParent; private final boolean mStyleFillsParent; // The input dispatching timeout for this application token in milliseconds. long mInputDispatchingTimeoutMillis = DEFAULT_DISPATCHING_TIMEOUT_MILLIS; Loading Loading @@ -1971,10 +1971,10 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A // This style is propagated to the main window attributes with // FLAG_SHOW_WALLPAPER from PhoneWindow#generateLayout. || ent.array.getBoolean(R.styleable.Window_windowShowWallpaper, false); mFillsParent = mOccludesParent; mStyleFillsParent = mOccludesParent; noDisplay = ent.array.getBoolean(R.styleable.Window_windowNoDisplay, false); } else { mFillsParent = mOccludesParent = true; mStyleFillsParent = mOccludesParent = true; noDisplay = false; } Loading Loading @@ -2879,9 +2879,14 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A return (TaskDisplayArea) super.getDisplayArea(); } @Override boolean providesOrientation() { return mStyleFillsParent; } @Override boolean fillsParent() { return mFillsParent; return occludesParent(true /* includingFinishing */); } /** Returns true if this activity is not finishing, is opaque and fills the entire space of Loading
services/core/java/com/android/server/wm/PinnedTaskController.java +1 −1 Original line number Diff line number Diff line Loading @@ -172,7 +172,7 @@ class PinnedTaskController { */ void deferOrientationChangeForEnteringPipFromFullScreenIfNeeded() { final ActivityRecord topFullscreen = mDisplayContent.getActivity( a -> a.fillsParent() && !a.getTask().inMultiWindowMode()); a -> a.providesOrientation() && !a.getTask().inMultiWindowMode()); if (topFullscreen == null || topFullscreen.hasFixedRotationTransform()) { return; } Loading
services/core/java/com/android/server/wm/WindowContainer.java +7 −4 Original line number Diff line number Diff line Loading @@ -1495,8 +1495,7 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer< */ int getOrientation(int candidate) { mLastOrientationSource = null; if (!fillsParent()) { // Ignore containers that don't completely fill their parents. if (!providesOrientation()) { return SCREEN_ORIENTATION_UNSET; } Loading Loading @@ -1530,8 +1529,8 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer< continue; } if (wc.fillsParent() || orientation != SCREEN_ORIENTATION_UNSPECIFIED) { // Use the orientation if the container fills its parent or requested an explicit if (wc.providesOrientation() || orientation != SCREEN_ORIENTATION_UNSPECIFIED) { // Use the orientation if the container can provide or requested an explicit // orientation that isn't SCREEN_ORIENTATION_UNSPECIFIED. ProtoLog.v(WM_DEBUG_ORIENTATION, "%s is requesting orientation %d (%s)", wc.toString(), orientation, Loading Loading @@ -1560,6 +1559,10 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer< return source; } boolean providesOrientation() { return fillsParent(); } /** * Returns true if this container is opaque and fills all the space made available by its parent * container. Loading
services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java +2 −2 Original line number Diff line number Diff line Loading @@ -756,8 +756,8 @@ public class ActivityRecordTests extends WindowTestsBase { final ActivityRecord activity = createActivityWithTask(); ActivityRecord topActivity = new ActivityBuilder(mAtm).setTask(activity.getTask()).build(); topActivity.setOccludesParent(false); // The requested occluding state doesn't affect whether it fills parent. assertTrue(topActivity.fillsParent()); // The requested occluding state doesn't affect whether it can decide orientation. assertTrue(topActivity.providesOrientation()); activity.setState(STOPPED, "Testing"); activity.setVisibility(true); activity.makeActiveIfNeeded(null /* activeActivity */); Loading