From bba0030a8529fd904056cbb7cfbbe3afbc1c8a95 Mon Sep 17 00:00:00 2001 From: Adam Powell Date: Wed, 3 Feb 2016 16:01:09 -0800 Subject: [PATCH] Restrict ChooserTargets provided by a single service Only allow one row's worth of targets from any one ChooserTargetService and lower the weight for app recency in resolver sorting. Along with a previous change to only consider the past 1 week of app activity, this is to help improve the quality of direct share targets shown. Bug 26562857 Change-Id: I0f9a8ca8ccfb655261421e29fef7909cadd318f1 --- core/java/com/android/internal/app/ChooserActivity.java | 3 ++- core/java/com/android/internal/app/ResolverComparator.java | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/core/java/com/android/internal/app/ChooserActivity.java b/core/java/com/android/internal/app/ChooserActivity.java index cf13a13cafb70..b0fb93b89052f 100644 --- a/core/java/com/android/internal/app/ChooserActivity.java +++ b/core/java/com/android/internal/app/ChooserActivity.java @@ -761,6 +761,7 @@ public class ChooserActivity extends ResolverActivity { public static final int TARGET_STANDARD = 2; private static final int MAX_SERVICE_TARGETS = 8; + private static final int MAX_TARGETS_PER_SERVICE = 4; private final List mServiceTargets = new ArrayList<>(); private final List mCallerTargets = new ArrayList<>(); @@ -925,7 +926,7 @@ public class ChooserActivity extends ResolverActivity { final float parentScore = getScore(origTarget); Collections.sort(targets, mBaseTargetComparator); float lastScore = 0; - for (int i = 0, N = targets.size(); i < N; i++) { + for (int i = 0, N = Math.min(targets.size(), MAX_TARGETS_PER_SERVICE); i < N; i++) { final ChooserTarget target = targets.get(i); float targetScore = target.getScore(); targetScore *= parentScore; diff --git a/core/java/com/android/internal/app/ResolverComparator.java b/core/java/com/android/internal/app/ResolverComparator.java index 0ae21c61112ff..03a3a3821f6a9 100644 --- a/core/java/com/android/internal/app/ResolverComparator.java +++ b/core/java/com/android/internal/app/ResolverComparator.java @@ -52,7 +52,7 @@ class ResolverComparator implements Comparator { private static final long RECENCY_TIME_PERIOD = 1000 * 60 * 60 * 12; - private static final float RECENCY_MULTIPLIER = 3.f; + private static final float RECENCY_MULTIPLIER = 2.f; private final Collator mCollator; private final boolean mHttp;