aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-03-18 20:48:56 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2022-03-18 20:48:56 +0000
commit7ae39ecd8fd4d04d6e399691316bfbc597f025f2 (patch)
treea88145503477a1e5f0f03338bf606b46329ace97
parent9174af184dfea4b82db7cb7d228b66b6d4e7ea2a (diff)
parent9e23c3c9721952ca93ae89d1815cc07db96de9b7 (diff)
downloadsupport-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.kt78
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
+}