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
This commit is contained in:
Jackal Guo
2021-06-07 16:40:31 +08:00
parent 90c5eb2efc
commit a135e23fe9

View File

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