metaData should be null without GET_META_DATA flag

Additional meta-data associated with the component should only be
filled in if caller sets the GET_META_DATA flag when requesting
the info.

Bug: 171545647
Test: atest PackageManagerTest
Change-Id: I3c4f000043a7db667192ca4379390df5548f8ab0
This commit is contained in:
Jackal Guo
2020-11-09 17:38:37 +08:00
parent 72ee0c217f
commit 0313a00eb5
2 changed files with 17 additions and 9 deletions

View File

@@ -419,7 +419,7 @@ public class PackageInfoWithoutStateUtils {
return null;
}
return generateActivityInfoUnchecked(a, applicationInfo);
return generateActivityInfoUnchecked(a, flags, applicationInfo);
}
/**
@@ -431,6 +431,7 @@ public class PackageInfoWithoutStateUtils {
*/
@NonNull
public static ActivityInfo generateActivityInfoUnchecked(@NonNull ParsedActivity a,
@PackageManager.ComponentInfoFlags int flags,
@NonNull ApplicationInfo applicationInfo) {
// Make shallow copies so we can store the metadata safely
ActivityInfo ai = new ActivityInfo();
@@ -463,7 +464,9 @@ public class PackageInfoWithoutStateUtils {
ai.rotationAnimation = a.getRotationAnimation();
ai.colorMode = a.getColorMode();
ai.windowLayout = a.getWindowLayout();
ai.metaData = a.getMetaData();
if ((flags & PackageManager.GET_META_DATA) != 0) {
ai.metaData = a.getMetaData();
}
ai.applicationInfo = applicationInfo;
return ai;
}
@@ -489,7 +492,7 @@ public class PackageInfoWithoutStateUtils {
return null;
}
return generateServiceInfoUnchecked(s, applicationInfo);
return generateServiceInfoUnchecked(s, flags, applicationInfo);
}
/**
@@ -501,17 +504,20 @@ public class PackageInfoWithoutStateUtils {
*/
@NonNull
public static ServiceInfo generateServiceInfoUnchecked(@NonNull ParsedService s,
@PackageManager.ComponentInfoFlags int flags,
@NonNull ApplicationInfo applicationInfo) {
// Make shallow copies so we can store the metadata safely
ServiceInfo si = new ServiceInfo();
assignSharedFieldsForComponentInfo(si, s);
si.exported = s.isExported();
si.flags = s.getFlags();
si.metaData = s.getMetaData();
si.permission = s.getPermission();
si.processName = s.getProcessName();
si.mForegroundServiceType = s.getForegroundServiceType();
si.applicationInfo = applicationInfo;
if ((flags & PackageManager.GET_META_DATA) != 0) {
si.metaData = s.getMetaData();
}
return si;
}
@@ -566,10 +572,12 @@ public class PackageInfoWithoutStateUtils {
pi.initOrder = p.getInitOrder();
pi.uriPermissionPatterns = p.getUriPermissionPatterns();
pi.pathPermissions = p.getPathPermissions();
pi.metaData = p.getMetaData();
if ((flags & PackageManager.GET_URI_PERMISSION_PATTERNS) == 0) {
pi.uriPermissionPatterns = null;
}
if ((flags & PackageManager.GET_META_DATA) != 0) {
pi.metaData = p.getMetaData();
}
pi.applicationInfo = applicationInfo;
return pi;
}

View File

@@ -275,8 +275,8 @@ public class PackageInfoUtils {
return null;
}
ActivityInfo info =
PackageInfoWithoutStateUtils.generateActivityInfoUnchecked(a, applicationInfo);
final ActivityInfo info = PackageInfoWithoutStateUtils.generateActivityInfoUnchecked(
a, flags, applicationInfo);
assignSharedFieldsForComponentInfo(info, a, pkgSetting, userId);
return info;
}
@@ -310,8 +310,8 @@ public class PackageInfoUtils {
return null;
}
ServiceInfo info =
PackageInfoWithoutStateUtils.generateServiceInfoUnchecked(s, applicationInfo);
final ServiceInfo info = PackageInfoWithoutStateUtils.generateServiceInfoUnchecked(
s, flags, applicationInfo);
assignSharedFieldsForComponentInfo(info, s, pkgSetting, userId);
return info;
}