Loading core/api/test-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -3229,6 +3229,7 @@ package android.window { method @NonNull public android.content.res.Configuration getConfiguration(); method @NonNull public android.os.IBinder getFragmentToken(); method @NonNull public android.graphics.Point getPositionInParent(); method public int getRunningActivityCount(); method @NonNull public android.window.WindowContainerToken getToken(); method public int getWindowingMode(); method public boolean hasRunningActivity(); Loading core/java/android/window/TaskFragmentInfo.java +13 −9 Original line number Diff line number Diff line Loading @@ -55,8 +55,8 @@ public final class TaskFragmentInfo implements Parcelable { /** Whether the TaskFragment contains any child Window Container. */ private final boolean mIsEmpty; /** Whether the TaskFragment contains any running Activity. */ private final boolean mHasRunningActivity; /** The number of the running activities in the TaskFragment. */ private final int mRunningActivityCount; /** Whether this TaskFragment is visible on the window hierarchy. */ private final boolean mIsVisible; Loading @@ -74,13 +74,13 @@ public final class TaskFragmentInfo implements Parcelable { /** @hide */ public TaskFragmentInfo( @NonNull IBinder fragmentToken, @NonNull WindowContainerToken token, @NonNull Configuration configuration, boolean isEmpty, boolean hasRunningActivity, @NonNull Configuration configuration, boolean isEmpty, int runningActivityCount, boolean isVisible, @NonNull List<IBinder> activities, @NonNull Point positionInParent) { mFragmentToken = requireNonNull(fragmentToken); mToken = requireNonNull(token); mConfiguration.setTo(configuration); mIsEmpty = isEmpty; mHasRunningActivity = hasRunningActivity; mRunningActivityCount = runningActivityCount; mIsVisible = isVisible; mActivities.addAll(activities); mPositionInParent = requireNonNull(positionInParent); Loading @@ -106,7 +106,11 @@ public final class TaskFragmentInfo implements Parcelable { } public boolean hasRunningActivity() { return mHasRunningActivity; return mRunningActivityCount > 0; } public int getRunningActivityCount() { return mRunningActivityCount; } public boolean isVisible() { Loading Loading @@ -141,7 +145,7 @@ public final class TaskFragmentInfo implements Parcelable { return mFragmentToken.equals(that.mFragmentToken) && mToken.equals(that.mToken) && mIsEmpty == that.mIsEmpty && mHasRunningActivity == that.mHasRunningActivity && mRunningActivityCount == that.mRunningActivityCount && mIsVisible == that.mIsVisible && getWindowingMode() == that.getWindowingMode() && mActivities.equals(that.mActivities) Loading @@ -153,7 +157,7 @@ public final class TaskFragmentInfo implements Parcelable { mToken = in.readTypedObject(WindowContainerToken.CREATOR); mConfiguration.readFromParcel(in); mIsEmpty = in.readBoolean(); mHasRunningActivity = in.readBoolean(); mRunningActivityCount = in.readInt(); mIsVisible = in.readBoolean(); in.readBinderList(mActivities); mPositionInParent = requireNonNull(in.readTypedObject(Point.CREATOR)); Loading @@ -166,7 +170,7 @@ public final class TaskFragmentInfo implements Parcelable { dest.writeTypedObject(mToken, flags); mConfiguration.writeToParcel(dest, flags); dest.writeBoolean(mIsEmpty); dest.writeBoolean(mHasRunningActivity); dest.writeInt(mRunningActivityCount); dest.writeBoolean(mIsVisible); dest.writeBinderList(mActivities); dest.writeTypedObject(mPositionInParent, flags); Loading @@ -192,7 +196,7 @@ public final class TaskFragmentInfo implements Parcelable { + " fragmentToken=" + mFragmentToken + " token=" + mToken + " isEmpty=" + mIsEmpty + " hasRunningActivity=" + mHasRunningActivity + " runningActivityCount=" + mRunningActivityCount + " isVisible=" + mIsVisible + " positionInParent=" + mPositionInParent + "}"; Loading libs/WindowManager/Jetpack/src/androidx/window/extensions/organizer/SplitContainer.java +9 −1 Original line number Diff line number Diff line Loading @@ -40,8 +40,16 @@ class SplitContainer { mSplitRule = splitRule; if (shouldFinishPrimaryWithSecondary(splitRule)) { if (mPrimaryContainer.getRunningActivityCount() == 1 && mPrimaryContainer.hasActivity(primaryActivity.getActivityToken())) { mSecondaryContainer.addContainerToFinishOnExit(mPrimaryContainer); } else { // Only adding the activity to be finished vs. the entire TaskFragment while // the secondary container exits because there are other unrelated activities in the // primary TaskFragment. mSecondaryContainer.addActivityToFinishOnExit(primaryActivity); } } if (shouldFinishSecondaryWithPrimary(splitRule)) { mPrimaryContainer.addContainerToFinishOnExit(mSecondaryContainer); } Loading libs/WindowManager/Jetpack/src/androidx/window/extensions/organizer/TaskFragmentContainer.java +8 −0 Original line number Diff line number Diff line Loading @@ -125,6 +125,14 @@ class TaskFragmentContainer { return false; } int getRunningActivityCount() { int count = mPendingAppearedActivities.size(); if (mInfo != null) { count += mInfo.getRunningActivityCount(); } return count; } @Nullable TaskFragmentInfo getInfo() { return mInfo; Loading services/core/java/com/android/server/wm/TaskFragment.java +7 −1 Original line number Diff line number Diff line Loading @@ -2080,12 +2080,18 @@ class TaskFragment extends WindowContainer<WindowContainer> { } final Point positionInParent = new Point(); getRelativePosition(positionInParent); final int[] runningActivityCount = new int[1]; forAllActivities(a -> { if (!a.finishing) { runningActivityCount[0]++; } }); return new TaskFragmentInfo( mFragmentToken, mRemoteToken.toWindowContainerToken(), getConfiguration(), getChildCount() == 0, hasRunningActivity(this), runningActivityCount[0], isVisible(), childActivities, positionInParent); Loading Loading
core/api/test-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -3229,6 +3229,7 @@ package android.window { method @NonNull public android.content.res.Configuration getConfiguration(); method @NonNull public android.os.IBinder getFragmentToken(); method @NonNull public android.graphics.Point getPositionInParent(); method public int getRunningActivityCount(); method @NonNull public android.window.WindowContainerToken getToken(); method public int getWindowingMode(); method public boolean hasRunningActivity(); Loading
core/java/android/window/TaskFragmentInfo.java +13 −9 Original line number Diff line number Diff line Loading @@ -55,8 +55,8 @@ public final class TaskFragmentInfo implements Parcelable { /** Whether the TaskFragment contains any child Window Container. */ private final boolean mIsEmpty; /** Whether the TaskFragment contains any running Activity. */ private final boolean mHasRunningActivity; /** The number of the running activities in the TaskFragment. */ private final int mRunningActivityCount; /** Whether this TaskFragment is visible on the window hierarchy. */ private final boolean mIsVisible; Loading @@ -74,13 +74,13 @@ public final class TaskFragmentInfo implements Parcelable { /** @hide */ public TaskFragmentInfo( @NonNull IBinder fragmentToken, @NonNull WindowContainerToken token, @NonNull Configuration configuration, boolean isEmpty, boolean hasRunningActivity, @NonNull Configuration configuration, boolean isEmpty, int runningActivityCount, boolean isVisible, @NonNull List<IBinder> activities, @NonNull Point positionInParent) { mFragmentToken = requireNonNull(fragmentToken); mToken = requireNonNull(token); mConfiguration.setTo(configuration); mIsEmpty = isEmpty; mHasRunningActivity = hasRunningActivity; mRunningActivityCount = runningActivityCount; mIsVisible = isVisible; mActivities.addAll(activities); mPositionInParent = requireNonNull(positionInParent); Loading @@ -106,7 +106,11 @@ public final class TaskFragmentInfo implements Parcelable { } public boolean hasRunningActivity() { return mHasRunningActivity; return mRunningActivityCount > 0; } public int getRunningActivityCount() { return mRunningActivityCount; } public boolean isVisible() { Loading Loading @@ -141,7 +145,7 @@ public final class TaskFragmentInfo implements Parcelable { return mFragmentToken.equals(that.mFragmentToken) && mToken.equals(that.mToken) && mIsEmpty == that.mIsEmpty && mHasRunningActivity == that.mHasRunningActivity && mRunningActivityCount == that.mRunningActivityCount && mIsVisible == that.mIsVisible && getWindowingMode() == that.getWindowingMode() && mActivities.equals(that.mActivities) Loading @@ -153,7 +157,7 @@ public final class TaskFragmentInfo implements Parcelable { mToken = in.readTypedObject(WindowContainerToken.CREATOR); mConfiguration.readFromParcel(in); mIsEmpty = in.readBoolean(); mHasRunningActivity = in.readBoolean(); mRunningActivityCount = in.readInt(); mIsVisible = in.readBoolean(); in.readBinderList(mActivities); mPositionInParent = requireNonNull(in.readTypedObject(Point.CREATOR)); Loading @@ -166,7 +170,7 @@ public final class TaskFragmentInfo implements Parcelable { dest.writeTypedObject(mToken, flags); mConfiguration.writeToParcel(dest, flags); dest.writeBoolean(mIsEmpty); dest.writeBoolean(mHasRunningActivity); dest.writeInt(mRunningActivityCount); dest.writeBoolean(mIsVisible); dest.writeBinderList(mActivities); dest.writeTypedObject(mPositionInParent, flags); Loading @@ -192,7 +196,7 @@ public final class TaskFragmentInfo implements Parcelable { + " fragmentToken=" + mFragmentToken + " token=" + mToken + " isEmpty=" + mIsEmpty + " hasRunningActivity=" + mHasRunningActivity + " runningActivityCount=" + mRunningActivityCount + " isVisible=" + mIsVisible + " positionInParent=" + mPositionInParent + "}"; Loading
libs/WindowManager/Jetpack/src/androidx/window/extensions/organizer/SplitContainer.java +9 −1 Original line number Diff line number Diff line Loading @@ -40,8 +40,16 @@ class SplitContainer { mSplitRule = splitRule; if (shouldFinishPrimaryWithSecondary(splitRule)) { if (mPrimaryContainer.getRunningActivityCount() == 1 && mPrimaryContainer.hasActivity(primaryActivity.getActivityToken())) { mSecondaryContainer.addContainerToFinishOnExit(mPrimaryContainer); } else { // Only adding the activity to be finished vs. the entire TaskFragment while // the secondary container exits because there are other unrelated activities in the // primary TaskFragment. mSecondaryContainer.addActivityToFinishOnExit(primaryActivity); } } if (shouldFinishSecondaryWithPrimary(splitRule)) { mPrimaryContainer.addContainerToFinishOnExit(mSecondaryContainer); } Loading
libs/WindowManager/Jetpack/src/androidx/window/extensions/organizer/TaskFragmentContainer.java +8 −0 Original line number Diff line number Diff line Loading @@ -125,6 +125,14 @@ class TaskFragmentContainer { return false; } int getRunningActivityCount() { int count = mPendingAppearedActivities.size(); if (mInfo != null) { count += mInfo.getRunningActivityCount(); } return count; } @Nullable TaskFragmentInfo getInfo() { return mInfo; Loading
services/core/java/com/android/server/wm/TaskFragment.java +7 −1 Original line number Diff line number Diff line Loading @@ -2080,12 +2080,18 @@ class TaskFragment extends WindowContainer<WindowContainer> { } final Point positionInParent = new Point(); getRelativePosition(positionInParent); final int[] runningActivityCount = new int[1]; forAllActivities(a -> { if (!a.finishing) { runningActivityCount[0]++; } }); return new TaskFragmentInfo( mFragmentToken, mRemoteToken.toWindowContainerToken(), getConfiguration(), getChildCount() == 0, hasRunningActivity(this), runningActivityCount[0], isVisible(), childActivities, positionInParent); Loading