From f3647603e5e7550190fbc0f496b7873626ce360c Mon Sep 17 00:00:00 2001 From: Andrii Kulian Date: Tue, 2 Nov 2021 19:40:55 -0700 Subject: [PATCH] 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+