From b777d3581c6f17619264f4d6ee5a535d51450ab9 Mon Sep 17 00:00:00 2001 From: Andrii Kulian Date: Mon, 1 Nov 2021 18:32:34 -0700 Subject: [PATCH 1/2] Add support for sticky placeholders Normally placeholders are finished when there is not enough space to show them by the side of the primary activity. However, in some cases it makes sense to continue showing the placeholder stacked on top when the window is small after it first appeared in a split with a larger window size. This CL introduces an option to make placeholders sticky and behave similar to regular split rules in stacked case for consistency. Bug: 202810486 Test: New option in the demo app Change-Id: I60e8973679d95f52aaa231581a3063d9f30d4be3 --- .../extensions/embedding/SplitContainer.java | 7 +++ .../extensions/embedding/SplitController.java | 47 ++++++++++++++++++ .../embedding/TaskFragmentContainer.java | 6 +++ .../Jetpack/window-extensions-release.aar | Bin 18462 -> 18590 bytes 4 files changed, 60 insertions(+) diff --git a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitContainer.java b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitContainer.java index 1e9fda6599d5a..06918d1e2aa4a 100644 --- a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitContainer.java +++ b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitContainer.java @@ -84,6 +84,13 @@ class SplitContainer { return shouldFinishSecondaryWithPrimary || isPlaceholderContainer; } + static boolean isStickyPlaceholderRule(@NonNull SplitRule splitRule) { + if (!(splitRule instanceof SplitPlaceholderRule)) { + return false; + } + return ((SplitPlaceholderRule) splitRule).isSticky(); + } + @Override public String toString() { return "SplitContainer{" diff --git a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java index 9014102d3f552..45041bc3cc7f0 100644 --- a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java +++ b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java @@ -16,6 +16,8 @@ package androidx.window.extensions.embedding; +import static androidx.window.extensions.embedding.SplitContainer.isStickyPlaceholderRule; + import android.annotation.NonNull; import android.annotation.Nullable; import android.app.Activity; @@ -460,6 +462,11 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen return false; } + if (isStickyPlaceholderRule(splitContainer.getSplitRule())) { + // The placeholder should remain after it was first shown. + return false; + } + if (mPresenter.shouldShowSideBySide(splitContainer)) { return false; } @@ -643,6 +650,46 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen return false; } + /** + * Checks whether the associated container should be destroyed together with a finishing + * container. There is a case when primary containers for placeholders should be retained + * despite the rule configuration to finish primary with secondary - if they are marked as + * 'sticky' and the placeholder was finished when fully overlapping the primary container. + * @return {@code true} if the associated container should be retained (and not be finished). + */ + boolean shouldRetainAssociatedContainer(@NonNull TaskFragmentContainer finishingContainer, + @NonNull TaskFragmentContainer associatedContainer) { + SplitContainer splitContainer = getActiveSplitForContainers(associatedContainer, + finishingContainer); + if (splitContainer == null) { + // Containers are not in the same split, no need to retain. + return false; + } + + if (!isStickyPlaceholderRule(splitContainer.getSplitRule())) { + // Currently only the containers associated with sticky placeholders can be retained. + return false; + } + + // When sticky placeholder is stacked on top of the main container it should not cause the + // destruction of the primary one. + return !mPresenter.shouldShowSideBySide(splitContainer); + } + + /** + * @see #shouldRetainAssociatedContainer(TaskFragmentContainer, TaskFragmentContainer) + */ + boolean shouldRetainAssociatedActivity(@NonNull TaskFragmentContainer finishingContainer, + @NonNull Activity associatedActivity) { + TaskFragmentContainer associatedContainer = getContainerWithActivity( + associatedActivity.getActivityToken()); + if (associatedContainer == null) { + return false; + } + + return shouldRetainAssociatedContainer(finishingContainer, associatedContainer); + } + private final class LifecycleCallbacks implements ActivityLifecycleCallbacks { @Override diff --git a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/TaskFragmentContainer.java b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/TaskFragmentContainer.java index 6805fde685b09..a1a53bc937811 100644 --- a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/TaskFragmentContainer.java +++ b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/TaskFragmentContainer.java @@ -228,6 +228,9 @@ class TaskFragmentContainer { // Finish dependent containers for (TaskFragmentContainer container : mContainersToFinishOnExit) { + if (controller.shouldRetainAssociatedContainer(this, container)) { + continue; + } container.finish(true /* shouldFinishDependent */, presenter, wct, controller); } @@ -235,6 +238,9 @@ class TaskFragmentContainer { // Finish associated activities for (Activity activity : mActivitiesToFinishOnExit) { + if (controller.shouldRetainAssociatedActivity(this, activity)) { + continue; + } activity.finish(); } mActivitiesToFinishOnExit.clear(); diff --git a/libs/WindowManager/Jetpack/window-extensions-release.aar b/libs/WindowManager/Jetpack/window-extensions-release.aar index 830d13dd6dc52f30d28940d1b98bf16cc82f0daf..b7ccfe541d359a109251451b603dad230fb47af1 100644 GIT binary patch delta 17031 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 delta 16918 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 Date: Tue, 2 Nov 2021 19:40:55 -0700 Subject: [PATCH 2/2] Add custom finishing behaviors for split pair Add support for custom finishing behaviors for containers in split pairs. 'finishPrimaryWithSecondary' and 'finishSecondaryWithPrimary' now have several options: - never - always - adjacent (finish only when containers are shown side by side, but not when stacked). 'finishPrimaryWithSecondary' option was also added to placeholder rules. Bug: 204829538 Test: Manual, using demo app and Settings. Change-Id: I543d15e62acc57f9ad6578221248fbb0a8c719db --- .../extensions/embedding/SplitContainer.java | 35 +++++++++++++++++- .../extensions/embedding/SplitController.java | 26 +++++++++---- .../Jetpack/window-extensions-release.aar | Bin 18590 -> 19183 bytes 3 files changed, 51 insertions(+), 10 deletions(-) diff --git a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitContainer.java b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitContainer.java index 06918d1e2aa4a..44af1a9fd7800 100644 --- a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitContainer.java +++ b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitContainer.java @@ -73,17 +73,48 @@ class SplitContainer { static boolean shouldFinishPrimaryWithSecondary(@NonNull SplitRule splitRule) { final boolean isPlaceholderContainer = splitRule instanceof SplitPlaceholderRule; final boolean shouldFinishPrimaryWithSecondary = (splitRule instanceof SplitPairRule) - && ((SplitPairRule) splitRule).shouldFinishPrimaryWithSecondary(); + && ((SplitPairRule) splitRule).getFinishPrimaryWithSecondary() + != SplitRule.FINISH_NEVER; return shouldFinishPrimaryWithSecondary || isPlaceholderContainer; } static boolean shouldFinishSecondaryWithPrimary(@NonNull SplitRule splitRule) { final boolean isPlaceholderContainer = splitRule instanceof SplitPlaceholderRule; final boolean shouldFinishSecondaryWithPrimary = (splitRule instanceof SplitPairRule) - && ((SplitPairRule) splitRule).shouldFinishSecondaryWithPrimary(); + && ((SplitPairRule) splitRule).getFinishSecondaryWithPrimary() + != SplitRule.FINISH_NEVER; return shouldFinishSecondaryWithPrimary || isPlaceholderContainer; } + static boolean shouldFinishAssociatedContainerWhenStacked(int finishBehavior) { + return finishBehavior == SplitRule.FINISH_ALWAYS; + } + + static boolean shouldFinishAssociatedContainerWhenAdjacent(int finishBehavior) { + return finishBehavior == SplitRule.FINISH_ALWAYS + || finishBehavior == SplitRule.FINISH_ADJACENT; + } + + static int getFinishPrimaryWithSecondaryBehavior(@NonNull SplitRule splitRule) { + if (splitRule instanceof SplitPlaceholderRule) { + return ((SplitPlaceholderRule) splitRule).getFinishPrimaryWithSecondary(); + } + if (splitRule instanceof SplitPairRule) { + return ((SplitPairRule) splitRule).getFinishPrimaryWithSecondary(); + } + return SplitRule.FINISH_NEVER; + } + + static int getFinishSecondaryWithPrimaryBehavior(@NonNull SplitRule splitRule) { + if (splitRule instanceof SplitPlaceholderRule) { + return SplitRule.FINISH_ALWAYS; + } + if (splitRule instanceof SplitPairRule) { + return ((SplitPairRule) splitRule).getFinishSecondaryWithPrimary(); + } + return SplitRule.FINISH_NEVER; + } + static boolean isStickyPlaceholderRule(@NonNull SplitRule splitRule) { if (!(splitRule instanceof SplitPlaceholderRule)) { return false; diff --git a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java index 45041bc3cc7f0..68c19041940c4 100644 --- a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java +++ b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java @@ -16,7 +16,11 @@ package androidx.window.extensions.embedding; +import static androidx.window.extensions.embedding.SplitContainer.getFinishPrimaryWithSecondaryBehavior; +import static androidx.window.extensions.embedding.SplitContainer.getFinishSecondaryWithPrimaryBehavior; import static androidx.window.extensions.embedding.SplitContainer.isStickyPlaceholderRule; +import static androidx.window.extensions.embedding.SplitContainer.shouldFinishAssociatedContainerWhenAdjacent; +import static androidx.window.extensions.embedding.SplitContainer.shouldFinishAssociatedContainerWhenStacked; import android.annotation.NonNull; import android.annotation.Nullable; @@ -665,15 +669,21 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen // Containers are not in the same split, no need to retain. return false; } - - if (!isStickyPlaceholderRule(splitContainer.getSplitRule())) { - // Currently only the containers associated with sticky placeholders can be retained. - return false; + // Find the finish behavior for the associated container + int finishBehavior; + SplitRule splitRule = splitContainer.getSplitRule(); + if (finishingContainer == splitContainer.getPrimaryContainer()) { + finishBehavior = getFinishSecondaryWithPrimaryBehavior(splitRule); + } else { + finishBehavior = getFinishPrimaryWithSecondaryBehavior(splitRule); + } + // Decide whether the associated container should be retained based on the current + // presentation mode. + if (mPresenter.shouldShowSideBySide(splitContainer)) { + return !shouldFinishAssociatedContainerWhenAdjacent(finishBehavior); + } else { + return !shouldFinishAssociatedContainerWhenStacked(finishBehavior); } - - // When sticky placeholder is stacked on top of the main container it should not cause the - // destruction of the primary one. - return !mPresenter.shouldShowSideBySide(splitContainer); } /** diff --git a/libs/WindowManager/Jetpack/window-extensions-release.aar b/libs/WindowManager/Jetpack/window-extensions-release.aar index b7ccfe541d359a109251451b603dad230fb47af1..d6678bf9b3205b06490dc0dbac056fad5ba81b69 100644 GIT binary patch delta 17709 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 delta 17135 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 W-Fos8FD<68u9Gi#NwUeffn)$=z$LW+