Loading services/core/java/com/android/server/pm/AppsFilter.java +16 −13 Original line number Diff line number Diff line Loading @@ -280,11 +280,15 @@ public class AppsFilter { @Override public void onCompatChange(String packageName) { updateEnabledState(mPmInternal.getPackage(packageName)); AndroidPackage pkg = mPmInternal.getPackage(packageName); if (pkg == null) { return; } updateEnabledState(pkg); mAppsFilter.updateShouldFilterCacheForPackage(packageName); } private void updateEnabledState(AndroidPackage pkg) { private void updateEnabledState(@NonNull AndroidPackage pkg) { // TODO(b/135203078): Do not use toAppInfo final boolean enabled = mInjector.getCompatibility().isChangeEnabledInternal( PackageManager.FILTER_APPLICATION_QUERY, pkg.toAppInfoWithoutState()); Loading @@ -297,12 +301,12 @@ public class AppsFilter { @Override public void updatePackageState(PackageSetting setting, boolean removed) { final boolean enableLogging = final boolean enableLogging = setting.pkg != null && !removed && (setting.pkg.isTestOnly() || setting.pkg.isDebuggable()); enableLogging(setting.appId, enableLogging); if (removed) { mDisabledPackages.remove(setting.pkg.getPackageName()); } else { mDisabledPackages.remove(setting.name); } else if (setting.pkg != null) { updateEnabledState(setting.pkg); } } Loading Loading @@ -583,8 +587,9 @@ public class AppsFilter { } } // if either package instruments the other, mark both as visible to one another if (pkgInstruments(newPkgSetting, existingSetting) || pkgInstruments(existingSetting, newPkgSetting)) { if (newPkgSetting.pkg != null && existingSetting.pkg != null && (pkgInstruments(newPkgSetting.pkg, existingSetting.pkg) || pkgInstruments(existingSetting.pkg, newPkgSetting.pkg))) { mQueriesViaPackage.add(newPkgSetting.appId, existingSetting.appId); mQueriesViaPackage.add(existingSetting.appId, newPkgSetting.appId); } Loading Loading @@ -1106,16 +1111,14 @@ public class AppsFilter { } /** Returns {@code true} if the source package instruments the target package. */ private static boolean pkgInstruments(PackageSetting source, PackageSetting target) { private static boolean pkgInstruments( @NonNull AndroidPackage source, @NonNull AndroidPackage target) { try { Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "pkgInstruments"); final String packageName = target.pkg.getPackageName(); final List<ParsedInstrumentation> inst = source.pkg.getInstrumentations(); final String packageName = target.getPackageName(); final List<ParsedInstrumentation> inst = source.getInstrumentations(); for (int i = ArrayUtils.size(inst) - 1; i >= 0; i--) { if (Objects.equals(inst.get(i).getTargetPackage(), packageName)) { if (DEBUG_LOGGING) { log(source, target, "instrumentation"); } return true; } } Loading Loading
services/core/java/com/android/server/pm/AppsFilter.java +16 −13 Original line number Diff line number Diff line Loading @@ -280,11 +280,15 @@ public class AppsFilter { @Override public void onCompatChange(String packageName) { updateEnabledState(mPmInternal.getPackage(packageName)); AndroidPackage pkg = mPmInternal.getPackage(packageName); if (pkg == null) { return; } updateEnabledState(pkg); mAppsFilter.updateShouldFilterCacheForPackage(packageName); } private void updateEnabledState(AndroidPackage pkg) { private void updateEnabledState(@NonNull AndroidPackage pkg) { // TODO(b/135203078): Do not use toAppInfo final boolean enabled = mInjector.getCompatibility().isChangeEnabledInternal( PackageManager.FILTER_APPLICATION_QUERY, pkg.toAppInfoWithoutState()); Loading @@ -297,12 +301,12 @@ public class AppsFilter { @Override public void updatePackageState(PackageSetting setting, boolean removed) { final boolean enableLogging = final boolean enableLogging = setting.pkg != null && !removed && (setting.pkg.isTestOnly() || setting.pkg.isDebuggable()); enableLogging(setting.appId, enableLogging); if (removed) { mDisabledPackages.remove(setting.pkg.getPackageName()); } else { mDisabledPackages.remove(setting.name); } else if (setting.pkg != null) { updateEnabledState(setting.pkg); } } Loading Loading @@ -583,8 +587,9 @@ public class AppsFilter { } } // if either package instruments the other, mark both as visible to one another if (pkgInstruments(newPkgSetting, existingSetting) || pkgInstruments(existingSetting, newPkgSetting)) { if (newPkgSetting.pkg != null && existingSetting.pkg != null && (pkgInstruments(newPkgSetting.pkg, existingSetting.pkg) || pkgInstruments(existingSetting.pkg, newPkgSetting.pkg))) { mQueriesViaPackage.add(newPkgSetting.appId, existingSetting.appId); mQueriesViaPackage.add(existingSetting.appId, newPkgSetting.appId); } Loading Loading @@ -1106,16 +1111,14 @@ public class AppsFilter { } /** Returns {@code true} if the source package instruments the target package. */ private static boolean pkgInstruments(PackageSetting source, PackageSetting target) { private static boolean pkgInstruments( @NonNull AndroidPackage source, @NonNull AndroidPackage target) { try { Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "pkgInstruments"); final String packageName = target.pkg.getPackageName(); final List<ParsedInstrumentation> inst = source.pkg.getInstrumentations(); final String packageName = target.getPackageName(); final List<ParsedInstrumentation> inst = source.getInstrumentations(); for (int i = ArrayUtils.size(inst) - 1; i >= 0; i--) { if (Objects.equals(inst.get(i).getTargetPackage(), packageName)) { if (DEBUG_LOGGING) { log(source, target, "instrumentation"); } return true; } } Loading