Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 72c63553 authored by Automerger Merge Worker's avatar Automerger Merge Worker
Browse files

Merge "Merge "Fixes all remaining potential NPEs related to pkg" into rvc-dev...

Merge "Merge "Fixes all remaining potential NPEs related to pkg" into rvc-dev am: 9cd979a6 am: d5a0b762 am: 3ca94f6a" into rvc-qpr-dev-plus-aosp am: a4f04762

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/11971854

Change-Id: I70049918746f4095ce7dbe182ec5d5d1065f6210
parents 48f6c1cb a4f04762
Loading
Loading
Loading
Loading
+16 −13
Original line number Diff line number Diff line
@@ -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());
@@ -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);
            }
        }
@@ -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);
            }
@@ -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;
                }
            }