Merge "Coerce component metadata Bundle to null if empty" into tm-dev am: bfb840a021
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18404452 Change-Id: I165a48a622eb5a9bdea396db986d2812067dd90f Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -546,7 +546,9 @@ public class PackageInfoWithoutStateUtils {
|
|||||||
ai.windowLayout = a.getWindowLayout();
|
ai.windowLayout = a.getWindowLayout();
|
||||||
ai.attributionTags = a.getAttributionTags();
|
ai.attributionTags = a.getAttributionTags();
|
||||||
if ((flags & PackageManager.GET_META_DATA) != 0) {
|
if ((flags & PackageManager.GET_META_DATA) != 0) {
|
||||||
ai.metaData = a.getMetaData();
|
var metaData = a.getMetaData();
|
||||||
|
// Backwards compatibility, coerce to null if empty
|
||||||
|
ai.metaData = metaData.isEmpty() ? null : metaData;
|
||||||
}
|
}
|
||||||
ai.applicationInfo = applicationInfo;
|
ai.applicationInfo = applicationInfo;
|
||||||
ai.setKnownActivityEmbeddingCerts(a.getKnownActivityEmbeddingCerts());
|
ai.setKnownActivityEmbeddingCerts(a.getKnownActivityEmbeddingCerts());
|
||||||
@@ -599,7 +601,9 @@ public class PackageInfoWithoutStateUtils {
|
|||||||
si.mForegroundServiceType = s.getForegroundServiceType();
|
si.mForegroundServiceType = s.getForegroundServiceType();
|
||||||
si.applicationInfo = applicationInfo;
|
si.applicationInfo = applicationInfo;
|
||||||
if ((flags & PackageManager.GET_META_DATA) != 0) {
|
if ((flags & PackageManager.GET_META_DATA) != 0) {
|
||||||
si.metaData = s.getMetaData();
|
var metaData = s.getMetaData();
|
||||||
|
// Backwards compatibility, coerce to null if empty
|
||||||
|
si.metaData = metaData.isEmpty() ? null : metaData;
|
||||||
}
|
}
|
||||||
return si;
|
return si;
|
||||||
}
|
}
|
||||||
@@ -660,7 +664,9 @@ public class PackageInfoWithoutStateUtils {
|
|||||||
pi.uriPermissionPatterns = null;
|
pi.uriPermissionPatterns = null;
|
||||||
}
|
}
|
||||||
if ((flags & PackageManager.GET_META_DATA) != 0) {
|
if ((flags & PackageManager.GET_META_DATA) != 0) {
|
||||||
pi.metaData = p.getMetaData();
|
var metaData = p.getMetaData();
|
||||||
|
// Backwards compatibility, coerce to null if empty
|
||||||
|
pi.metaData = metaData.isEmpty() ? null : metaData;
|
||||||
}
|
}
|
||||||
pi.applicationInfo = applicationInfo;
|
pi.applicationInfo = applicationInfo;
|
||||||
return pi;
|
return pi;
|
||||||
@@ -706,7 +712,9 @@ public class PackageInfoWithoutStateUtils {
|
|||||||
if ((flags & PackageManager.GET_META_DATA) == 0) {
|
if ((flags & PackageManager.GET_META_DATA) == 0) {
|
||||||
return ii;
|
return ii;
|
||||||
}
|
}
|
||||||
ii.metaData = i.getMetaData();
|
var metaData = i.getMetaData();
|
||||||
|
// Backwards compatibility, coerce to null if empty
|
||||||
|
ii.metaData = metaData.isEmpty() ? null : metaData;
|
||||||
return ii;
|
return ii;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -729,7 +737,9 @@ public class PackageInfoWithoutStateUtils {
|
|||||||
if ((flags & PackageManager.GET_META_DATA) == 0) {
|
if ((flags & PackageManager.GET_META_DATA) == 0) {
|
||||||
return pi;
|
return pi;
|
||||||
}
|
}
|
||||||
pi.metaData = p.getMetaData();
|
var metaData = p.getMetaData();
|
||||||
|
// Backwards compatibility, coerce to null if empty
|
||||||
|
pi.metaData = metaData.isEmpty() ? null : metaData;
|
||||||
return pi;
|
return pi;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -753,7 +763,9 @@ public class PackageInfoWithoutStateUtils {
|
|||||||
if ((flags & PackageManager.GET_META_DATA) == 0) {
|
if ((flags & PackageManager.GET_META_DATA) == 0) {
|
||||||
return pgi;
|
return pgi;
|
||||||
}
|
}
|
||||||
pgi.metaData = pg.getMetaData();
|
var metaData = pg.getMetaData();
|
||||||
|
// Backwards compatibility, coerce to null if empty
|
||||||
|
pgi.metaData = metaData.isEmpty() ? null : metaData;
|
||||||
return pgi;
|
return pgi;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import static org.junit.Assert.assertArrayEquals;
|
|||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.junit.Assert.assertFalse;
|
import static org.junit.Assert.assertFalse;
|
||||||
import static org.junit.Assert.assertNotNull;
|
import static org.junit.Assert.assertNotNull;
|
||||||
|
import static org.junit.Assert.assertNull;
|
||||||
import static org.junit.Assert.assertSame;
|
import static org.junit.Assert.assertSame;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.Assert.assertTrue;
|
||||||
import static org.junit.Assert.fail;
|
import static org.junit.Assert.fail;
|
||||||
@@ -65,6 +66,7 @@ import com.android.server.pm.parsing.pkg.AndroidPackageUtils;
|
|||||||
import com.android.server.pm.parsing.pkg.PackageImpl;
|
import com.android.server.pm.parsing.pkg.PackageImpl;
|
||||||
import com.android.server.pm.parsing.pkg.ParsedPackage;
|
import com.android.server.pm.parsing.pkg.ParsedPackage;
|
||||||
import com.android.server.pm.permission.CompatibilityPermissionInfo;
|
import com.android.server.pm.permission.CompatibilityPermissionInfo;
|
||||||
|
import com.android.server.pm.pkg.PackageUserState;
|
||||||
import com.android.server.pm.pkg.PackageUserStateInternal;
|
import com.android.server.pm.pkg.PackageUserStateInternal;
|
||||||
import com.android.server.pm.pkg.component.ParsedActivity;
|
import com.android.server.pm.pkg.component.ParsedActivity;
|
||||||
import com.android.server.pm.pkg.component.ParsedActivityImpl;
|
import com.android.server.pm.pkg.component.ParsedActivityImpl;
|
||||||
@@ -85,6 +87,7 @@ import com.android.server.pm.pkg.component.ParsedService;
|
|||||||
import com.android.server.pm.pkg.component.ParsedServiceImpl;
|
import com.android.server.pm.pkg.component.ParsedServiceImpl;
|
||||||
import com.android.server.pm.pkg.component.ParsedUsesPermission;
|
import com.android.server.pm.pkg.component.ParsedUsesPermission;
|
||||||
import com.android.server.pm.pkg.component.ParsedUsesPermissionImpl;
|
import com.android.server.pm.pkg.component.ParsedUsesPermissionImpl;
|
||||||
|
import com.android.server.pm.pkg.parsing.PackageInfoWithoutStateUtils;
|
||||||
import com.android.server.pm.pkg.parsing.ParsingPackage;
|
import com.android.server.pm.pkg.parsing.ParsingPackage;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
@@ -596,6 +599,38 @@ public class PackageParserTest {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testNoComponentMetadataIsCoercedToNullForInfoObject() throws Exception {
|
||||||
|
final File testFile = extractFile(TEST_APP4_APK);
|
||||||
|
try {
|
||||||
|
final ParsedPackage pkg = new TestPackageParser2().parsePackage(testFile, 0, false);
|
||||||
|
ApplicationInfo appInfo = PackageInfoWithoutStateUtils.generateApplicationInfo(pkg, 0,
|
||||||
|
PackageUserState.DEFAULT, 0);
|
||||||
|
for (ParsedActivity activity : pkg.getActivities()) {
|
||||||
|
assertNotNull(activity.getMetaData());
|
||||||
|
assertNull(PackageInfoWithoutStateUtils.generateActivityInfoUnchecked(activity, 0,
|
||||||
|
appInfo).metaData);
|
||||||
|
}
|
||||||
|
for (ParsedProvider provider : pkg.getProviders()) {
|
||||||
|
assertNotNull(provider.getMetaData());
|
||||||
|
assertNull(PackageInfoWithoutStateUtils.generateProviderInfoUnchecked(provider, 0,
|
||||||
|
appInfo).metaData);
|
||||||
|
}
|
||||||
|
for (ParsedActivity receiver : pkg.getReceivers()) {
|
||||||
|
assertNotNull(receiver.getMetaData());
|
||||||
|
assertNull(PackageInfoWithoutStateUtils.generateActivityInfoUnchecked(receiver, 0,
|
||||||
|
appInfo).metaData);
|
||||||
|
}
|
||||||
|
for (ParsedService service : pkg.getServices()) {
|
||||||
|
assertNotNull(service.getMetaData());
|
||||||
|
assertNull(PackageInfoWithoutStateUtils.generateServiceInfoUnchecked(service, 0,
|
||||||
|
appInfo).metaData);
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
testFile.delete();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A trivial subclass of package parser that only caches the package name, and throws away
|
* A trivial subclass of package parser that only caches the package name, and throws away
|
||||||
* all other information.
|
* all other information.
|
||||||
|
|||||||
Reference in New Issue
Block a user