diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-03-18 20:48:56 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2022-03-18 20:48:56 +0000 |
commit | 7ae39ecd8fd4d04d6e399691316bfbc597f025f2 (patch) | |
tree | a88145503477a1e5f0f03338bf606b46329ace97 | |
parent | 9174af184dfea4b82db7cb7d228b66b6d4e7ea2a (diff) | |
parent | 9e23c3c9721952ca93ae89d1815cc07db96de9b7 (diff) | |
download | support-snap-temp-L60200000953607974.tar.gz |
Merge "Revert "Revert "Minimize references to Predicate and Consumer.""" into snap-temp-L60200000953607974snap-temp-L60200000953607974
-rw-r--r-- | window/window/src/main/java/androidx/window/embedding/EmbeddingAdapter.kt | 78 |
1 files changed, 50 insertions, 28 deletions
diff --git a/window/window/src/main/java/androidx/window/embedding/EmbeddingAdapter.kt b/window/window/src/main/java/androidx/window/embedding/EmbeddingAdapter.kt index abfd24de41b..ecd6c201e4a 100644 --- a/window/window/src/main/java/androidx/window/embedding/EmbeddingAdapter.kt +++ b/window/window/src/main/java/androidx/window/embedding/EmbeddingAdapter.kt @@ -22,10 +22,12 @@ import android.content.Intent import android.util.Pair import android.view.WindowMetrics import androidx.window.core.ExperimentalWindowApi -import java.lang.IllegalArgumentException -import java.util.function.Predicate +import androidx.window.extensions.embedding.EmbeddingRule as OEMEmbeddingRule +import androidx.window.extensions.embedding.ActivityRule as OEMActivityRule import androidx.window.extensions.embedding.ActivityRule.Builder as ActivityRuleBuilder +import androidx.window.extensions.embedding.SplitPairRule as OEMSplitPairRule import androidx.window.extensions.embedding.SplitPairRule.Builder as SplitPairRuleBuilder +import androidx.window.extensions.embedding.SplitPlaceholderRule as OEMSplitPlaceholderRule import androidx.window.extensions.embedding.SplitPlaceholderRule.Builder as SplitPlaceholderRuleBuilder /** @@ -60,16 +62,16 @@ internal class EmbeddingAdapter { } val secondaryFragment = ActivityStack( secondaryActivityStack.activities, - isSecondaryStackEmpty) + isSecondaryStackEmpty + ) return SplitInfo(primaryFragment, secondaryFragment, splitInfo.splitRatio) } @SuppressLint("ClassVerificationFailure", "NewApi") fun translateActivityPairPredicates( splitPairFilters: Set<SplitPairFilter> - ): Predicate<Pair<Activity, Activity>> { - return Predicate<Pair<Activity, Activity>> { - (first, second) -> + ): (Pair<Activity, Activity>) -> Boolean { + return { (first, second) -> splitPairFilters.any { filter -> filter.matchesActivityPair(first, second) } } } @@ -77,9 +79,8 @@ internal class EmbeddingAdapter { @SuppressLint("ClassVerificationFailure", "NewApi") fun translateActivityIntentPredicates( splitPairFilters: Set<SplitPairFilter> - ): Predicate<Pair<Activity, Intent>> { - return Predicate<Pair<Activity, Intent>> { - (first, second) -> + ): (Pair<Activity, Intent>) -> Boolean { + return { (first, second) -> splitPairFilters.any { filter -> filter.matchesActivityIntentPair(first, second) } } } @@ -87,9 +88,8 @@ internal class EmbeddingAdapter { @SuppressLint("ClassVerificationFailure", "NewApi") fun translateParentMetricsPredicate( splitRule: SplitRule - ): Predicate<WindowMetrics> { - return Predicate<WindowMetrics> { - windowMetrics -> + ): (WindowMetrics) -> Boolean { + return { windowMetrics -> splitRule.checkParentMetrics(windowMetrics) } } @@ -97,9 +97,8 @@ internal class EmbeddingAdapter { @SuppressLint("ClassVerificationFailure", "NewApi") fun translateActivityPredicates( activityFilters: Set<ActivityFilter> - ): Predicate<Activity> { - return Predicate<Activity> { - activity -> + ): (Activity) -> Boolean { + return { activity -> activityFilters.any { filter -> filter.matchesActivity(activity) } } } @@ -107,9 +106,8 @@ internal class EmbeddingAdapter { @SuppressLint("ClassVerificationFailure", "NewApi") fun translateIntentPredicates( activityFilters: Set<ActivityFilter> - ): Predicate<Intent> { - return Predicate<Intent> { - intent -> + ): (Intent) -> Boolean { + return { intent -> activityFilters.any { filter -> filter.matchesIntent(intent) } } } @@ -117,7 +115,7 @@ internal class EmbeddingAdapter { @SuppressLint("WrongConstant") // Converting from Jetpack to Extensions constants private fun translateSplitPairRule( rule: SplitPairRule - ): androidx.window.extensions.embedding.SplitPairRule { + ): OEMSplitPairRule { val builder = SplitPairRuleBuilder( translateActivityPairPredicates(rule.filters), translateActivityIntentPredicates(rule.filters), @@ -139,7 +137,7 @@ internal class EmbeddingAdapter { @SuppressLint("WrongConstant") // Converting from Jetpack to Extensions constants private fun translateSplitPlaceholderRule( rule: SplitPlaceholderRule - ): androidx.window.extensions.embedding.SplitPlaceholderRule { + ): OEMSplitPlaceholderRule { val builder = SplitPlaceholderRuleBuilder( rule.placeholderIntent, translateActivityPredicates(rule.filters), @@ -158,16 +156,40 @@ internal class EmbeddingAdapter { return builder.build() } - fun translate( - rules: Set<EmbeddingRule> - ): Set<androidx.window.extensions.embedding.EmbeddingRule> { - return rules.map { - rule -> + private fun translateActivityRule(rule: ActivityRule): OEMActivityRule { + return ActivityRuleBuilder( + translateActivityPredicates(rule.filters), + translateIntentPredicates(rule.filters) + ) + .setShouldAlwaysExpand(rule.alwaysExpand) + .build() + } + + fun translate(rules: Set<EmbeddingRule>): Set<OEMEmbeddingRule> { + return rules.map { rule -> when (rule) { is SplitPairRule -> - translateSplitPairRule(rule) + SplitPairRuleBuilder( + translateActivityPairPredicates(rule.filters), + translateActivityIntentPredicates(rule.filters), + translateParentMetricsPredicate(rule) + ) + .setSplitRatio(rule.splitRatio) + .setLayoutDirection(rule.layoutDirection) + .setShouldFinishPrimaryWithSecondary(rule.finishPrimaryWithSecondary) + .setShouldFinishSecondaryWithPrimary(rule.finishSecondaryWithPrimary) + .setShouldClearTop(rule.clearTop) + .build() is SplitPlaceholderRule -> - translateSplitPlaceholderRule(rule) + SplitPlaceholderRuleBuilder( + rule.placeholderIntent, + translateActivityPredicates(rule.filters), + translateIntentPredicates(rule.filters), + translateParentMetricsPredicate(rule) + ) + .setSplitRatio(rule.splitRatio) + .setLayoutDirection(rule.layoutDirection) + .build() is ActivityRule -> ActivityRuleBuilder( translateActivityPredicates(rule.filters), @@ -187,4 +209,4 @@ internal class EmbeddingAdapter { private operator fun <F, S> Pair<F, S>.component2(): S { return second } -}
\ No newline at end of file +} |