diff options
author | Song Hu <songhu@google.com> | 2020-05-29 15:28:04 -0700 |
---|---|---|
committer | Song Hu <songhu@google.com> | 2020-05-29 16:53:51 -0700 |
commit | f9d930b8e4bfdd2d7d3cd7d7ddc8a6edfeeefffa (patch) | |
tree | 78206ee41aaa08d436b07ee1fa1faacc3f3f6c95 /services/people | |
parent | 4f5af837be36aaf5c84cf236d25388a54cf4b688 (diff) |
File 'open with' flow would trigger sharesheet with null intentFilter,
In this case, return empty list for direct share, default list for app share, skip
reporting sharing targets.
Bug: 157647326
Test: manually test File 'open with' flow
Change-Id: I3efb87a84048e5d1b2d58b1cc9669eb4568956dd
Diffstat (limited to 'services/people')
-rw-r--r-- | services/people/java/com/android/server/people/data/DataManager.java | 5 | ||||
-rw-r--r-- | services/people/java/com/android/server/people/prediction/ShareTargetPredictor.java | 12 |
2 files changed, 13 insertions, 4 deletions
diff --git a/services/people/java/com/android/server/people/data/DataManager.java b/services/people/java/com/android/server/people/data/DataManager.java index 63b716206313..4d1129567ca6 100644 --- a/services/people/java/com/android/server/people/data/DataManager.java +++ b/services/people/java/com/android/server/people/data/DataManager.java @@ -210,7 +210,7 @@ public class DataManager { /** Reports the sharing related {@link AppTargetEvent} from App Prediction Manager. */ public void reportShareTargetEvent(@NonNull AppTargetEvent event, - @Nullable IntentFilter intentFilter) { + @NonNull IntentFilter intentFilter) { AppTarget appTarget = event.getTarget(); if (appTarget == null || event.getAction() != AppTargetEvent.ACTION_LAUNCH) { return; @@ -220,8 +220,7 @@ public class DataManager { return; } PackageData packageData = userData.getOrCreatePackageData(appTarget.getPackageName()); - String mimeType = intentFilter != null ? intentFilter.getDataType(0) : null; - @Event.EventType int eventType = mimeTypeToShareEventType(mimeType); + @Event.EventType int eventType = mimeTypeToShareEventType(intentFilter.getDataType(0)); EventHistoryImpl eventHistory; if (ChooserActivity.LAUNCH_LOCATION_DIRECT_SHARE.equals(event.getLaunchLocation())) { // Direct share event diff --git a/services/people/java/com/android/server/people/prediction/ShareTargetPredictor.java b/services/people/java/com/android/server/people/prediction/ShareTargetPredictor.java index 43acd459f84b..2e60f2afcdea 100644 --- a/services/people/java/com/android/server/people/prediction/ShareTargetPredictor.java +++ b/services/people/java/com/android/server/people/prediction/ShareTargetPredictor.java @@ -66,7 +66,9 @@ class ShareTargetPredictor extends AppTargetPredictor { if (DEBUG) { Slog.d(TAG, "reportAppTargetEvent"); } - getDataManager().reportShareTargetEvent(event, mIntentFilter); + if (mIntentFilter != null) { + getDataManager().reportShareTargetEvent(event, mIntentFilter); + } } /** Provides prediction on direct share targets */ @@ -76,6 +78,10 @@ class ShareTargetPredictor extends AppTargetPredictor { if (DEBUG) { Slog.d(TAG, "predictTargets"); } + if (mIntentFilter == null) { + updatePredictions(List.of()); + return; + } List<ShareTarget> shareTargets = getDirectShareTargets(); SharesheetModelScorer.computeScore(shareTargets, getShareEventType(mIntentFilter), System.currentTimeMillis()); @@ -95,6 +101,10 @@ class ShareTargetPredictor extends AppTargetPredictor { if (DEBUG) { Slog.d(TAG, "sortTargets"); } + if (mIntentFilter == null) { + callback.accept(targets); + return; + } List<ShareTarget> shareTargets = getAppShareTargets(targets); SharesheetModelScorer.computeScoreForAppShare(shareTargets, getShareEventType(mIntentFilter), getPredictionContext().getPredictedTargetCount(), |