diff options
| author | 2020-07-08 20:51:34 +0000 | |
|---|---|---|
| committer | 2020-07-08 20:51:34 +0000 | |
| commit | 0d4c67abb655cad6cfc42e3b51a6174e7428c4e6 (patch) | |
| tree | 967e239feaaaf1b1176fb091570e61cff2084b9b | |
| parent | 7e6119318f3d0025b7fe016bfb0b220f7ee42b0f (diff) | |
| parent | e505016e9b59a8a489260776557e4ae721529319 (diff) | |
Merge "Fixes component-based visibility recompute" into rvc-dev am: e505016e9b
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12099329
Change-Id: I96b504537eef946aa547a22cc63b8f54e0d1260c
| -rw-r--r-- | services/core/java/com/android/server/pm/AppsFilter.java | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/pm/AppsFilter.java b/services/core/java/com/android/server/pm/AppsFilter.java index 3a203d52edbe..c3c2e5e65103 100644 --- a/services/core/java/com/android/server/pm/AppsFilter.java +++ b/services/core/java/com/android/server/pm/AppsFilter.java @@ -708,12 +708,15 @@ public class AppsFilter { return ret; } + /** + * This method recomputes all component / intent-based visibility and is intended to match the + * relevant logic of {@link #addPackageInternal(PackageSetting, ArrayMap)} + */ private void recomputeComponentVisibility(ArrayMap<String, PackageSetting> existingSettings) { mQueriesViaComponent.clear(); for (int i = existingSettings.size() - 1; i >= 0; i--) { PackageSetting setting = existingSettings.valueAt(i); - if (setting.pkg == null - || mForceQueryable.contains(setting.appId)) { + if (setting.pkg == null || requestsQueryAllPackages(setting.pkg)) { continue; } for (int j = existingSettings.size() - 1; j >= 0; j--) { @@ -721,7 +724,7 @@ public class AppsFilter { continue; } final PackageSetting otherSetting = existingSettings.valueAt(j); - if (otherSetting.pkg == null) { + if (otherSetting.pkg == null || mForceQueryable.contains(otherSetting.appId)) { continue; } if (canQueryViaComponents(setting.pkg, otherSetting.pkg, mProtectedBroadcasts)) { |