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

Commit a135e23f authored by Jackal Guo's avatar Jackal Guo
Browse files

Re-order early return when targetPkg is null

It's possible that the target package is on removable stroage or
uninstalled with keep data. The caller should be able to get the
related info of the target with flag MATCH_UNINSTALLED_PACKAGES.
However, the caller wouldn't be able to get the valid info if we
directly filter out when targetPkg is null early.

Fix: 187650819
Test: atest AppEnumerationTests PackageVisibilityTest
Change-Id: I7c6b2dcdb77c543e0826e5dff0ddc9f66e489033
parent 90c5eb2e
Loading
Loading
Loading
Loading
+16 −14
Original line number Diff line number Diff line
@@ -1287,20 +1287,6 @@ public class AppsFilter implements Watchable, Snappable {
                }
            }

            // This package isn't technically installed and won't be written to settings, so we can
            // treat it as filtered until it's available again.
            final AndroidPackage targetPkg = targetPkgSetting.pkg;
            if (targetPkg == null) {
                if (DEBUG_LOGGING) {
                    Slog.wtf(TAG, "shouldFilterApplication: " + "targetPkg is null");
                }
                return true;
            }
            if (targetPkg.isStaticSharedLibrary()) {
                // not an app, this filtering takes place at a higher level
                return false;
            }
            final String targetName = targetPkg.getPackageName();
            if (DEBUG_TRACING) {
                Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "getAppId");
            }
@@ -1343,6 +1329,21 @@ public class AppsFilter implements Watchable, Snappable {
                    Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
                }
            }

            // This package isn't technically installed and won't be written to settings, so we can
            // treat it as filtered until it's available again.
            final AndroidPackage targetPkg = targetPkgSetting.pkg;
            if (targetPkg == null) {
                if (DEBUG_LOGGING) {
                    Slog.wtf(TAG, "shouldFilterApplication: " + "targetPkg is null");
                }
                return true;
            }
            if (targetPkg.isStaticSharedLibrary()) {
                // not an app, this filtering takes place at a higher level
                return false;
            }

            try {
                if (DEBUG_TRACING) {
                    Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "mForceQueryable");
@@ -1415,6 +1416,7 @@ public class AppsFilter implements Watchable, Snappable {
                if (DEBUG_TRACING) {
                    Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "mOverlayReferenceMapper");
                }
                final String targetName = targetPkg.getPackageName();
                if (callingSharedPkgSettings != null) {
                    int size = callingSharedPkgSettings.size();
                    for (int index = 0; index < size; index++) {