diff options
59 files changed, 588 insertions, 501 deletions
diff --git a/core/tests/coretests/Android.bp b/core/tests/coretests/Android.bp index 8e4e684bc1c0..33fead6c98c6 100644 --- a/core/tests/coretests/Android.bp +++ b/core/tests/coretests/Android.bp @@ -83,21 +83,13 @@ java_genrule { ":FrameworksCoreTests_install_bad_dex", ":FrameworksCoreTests_install_complete_package_info", ":FrameworksCoreTests_install_decl_perm", - ":FrameworksCoreTests_install_intent_filters", ":FrameworksCoreTests_install_jni_lib_open_from_apk", ":FrameworksCoreTests_install_loc_auto", ":FrameworksCoreTests_install_loc_internal", ":FrameworksCoreTests_install_loc_sdcard", ":FrameworksCoreTests_install_loc_unspecified", - ":FrameworksCoreTests_install_split_base", - ":FrameworksCoreTests_install_split_feature_a", ":FrameworksCoreTests_install_use_perm_good", ":FrameworksCoreTests_install_uses_feature", - ":FrameworksCoreTests_install_uses_sdk_0", - ":FrameworksCoreTests_install_uses_sdk_q0", - ":FrameworksCoreTests_install_uses_sdk_r", - ":FrameworksCoreTests_install_uses_sdk_r0", - ":FrameworksCoreTests_install_uses_sdk_r5", ":FrameworksCoreTests_install_verifier_bad", ":FrameworksCoreTests_install_verifier_good", ":FrameworksCoreTests_keyset_permdef_sa_unone", diff --git a/core/tests/coretests/apks/install-split-base/Android.bp b/core/tests/coretests/apks/install-split-base/Android.bp deleted file mode 100644 index ddf75b224359..000000000000 --- a/core/tests/coretests/apks/install-split-base/Android.bp +++ /dev/null @@ -1,6 +0,0 @@ -android_test_helper_app { - name: "FrameworksCoreTests_install_split_base", - defaults: ["FrameworksCoreTests_apks_defaults"], - - srcs: ["**/*.java"], -} diff --git a/core/tests/coretests/apks/install_intent_filters/Android.bp b/core/tests/coretests/apks/install_intent_filters/Android.bp deleted file mode 100644 index 6cc5ebac9e6a..000000000000 --- a/core/tests/coretests/apks/install_intent_filters/Android.bp +++ /dev/null @@ -1,7 +0,0 @@ -android_test_helper_app { - name: "FrameworksCoreTests_install_intent_filters", - defaults: ["FrameworksCoreTests_apks_defaults"], - - srcs: ["**/*.java"], -} - diff --git a/core/tests/coretests/apks/install_uses_sdk/Android.bp b/core/tests/coretests/apks/install_uses_sdk/Android.bp deleted file mode 100644 index 92b09ed3818d..000000000000 --- a/core/tests/coretests/apks/install_uses_sdk/Android.bp +++ /dev/null @@ -1,39 +0,0 @@ -android_test_helper_app { - name: "FrameworksCoreTests_install_uses_sdk_r0", - defaults: ["FrameworksCoreTests_apks_defaults"], - manifest: "AndroidManifest-r0.xml", - - srcs: ["**/*.java"], -} - -android_test_helper_app { - name: "FrameworksCoreTests_install_uses_sdk_r5", - defaults: ["FrameworksCoreTests_apks_defaults"], - manifest: "AndroidManifest-r5.xml", - - srcs: ["**/*.java"], -} - -android_test_helper_app { - name: "FrameworksCoreTests_install_uses_sdk_q0", - defaults: ["FrameworksCoreTests_apks_defaults"], - manifest: "AndroidManifest-q0.xml", - - srcs: ["**/*.java"], -} - -android_test_helper_app { - name: "FrameworksCoreTests_install_uses_sdk_r", - defaults: ["FrameworksCoreTests_apks_defaults"], - manifest: "AndroidManifest-r.xml", - - srcs: ["**/*.java"], -} - -android_test_helper_app { - name: "FrameworksCoreTests_install_uses_sdk_0", - defaults: ["FrameworksCoreTests_apks_defaults"], - manifest: "AndroidManifest-0.xml", - - srcs: ["**/*.java"], -} diff --git a/services/core/java/com/android/server/pm/parsing/library/AndroidHidlUpdater.java b/services/core/java/com/android/server/pm/parsing/library/AndroidHidlUpdater.java index 2c2bc8a3c1d9..3f7fa92062de 100644 --- a/services/core/java/com/android/server/pm/parsing/library/AndroidHidlUpdater.java +++ b/services/core/java/com/android/server/pm/parsing/library/AndroidHidlUpdater.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2019 The Android Open Source Project + * Copyright (C) 2020 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/services/core/java/com/android/server/pm/parsing/library/AndroidTestBaseUpdater.java b/services/core/java/com/android/server/pm/parsing/library/AndroidTestBaseUpdater.java index 60a715a562a9..4958ae1d58ab 100644 --- a/services/core/java/com/android/server/pm/parsing/library/AndroidTestBaseUpdater.java +++ b/services/core/java/com/android/server/pm/parsing/library/AndroidTestBaseUpdater.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2019 The Android Open Source Project + * Copyright (C) 2020 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/services/core/java/com/android/server/pm/parsing/library/OrgApacheHttpLegacyUpdater.java b/services/core/java/com/android/server/pm/parsing/library/OrgApacheHttpLegacyUpdater.java index 2c0b7d6b1279..d153d9e98890 100644 --- a/services/core/java/com/android/server/pm/parsing/library/OrgApacheHttpLegacyUpdater.java +++ b/services/core/java/com/android/server/pm/parsing/library/OrgApacheHttpLegacyUpdater.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2019 The Android Open Source Project + * Copyright (C) 2020 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/services/core/java/com/android/server/pm/parsing/library/PackageBackwardCompatibility.java b/services/core/java/com/android/server/pm/parsing/library/PackageBackwardCompatibility.java index 9bf6ce690446..64f8c3ad2792 100644 --- a/services/core/java/com/android/server/pm/parsing/library/PackageBackwardCompatibility.java +++ b/services/core/java/com/android/server/pm/parsing/library/PackageBackwardCompatibility.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2019 The Android Open Source Project + * Copyright (C) 2020 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,6 +21,7 @@ import static com.android.server.pm.parsing.library.SharedLibraryNames.ANDROID_T import static com.android.server.pm.parsing.library.SharedLibraryNames.ANDROID_TEST_RUNNER; import static com.android.server.pm.parsing.library.SharedLibraryNames.ORG_APACHE_HTTP_LEGACY; +import android.content.pm.PackageParser; import android.util.Log; import com.android.internal.annotations.VisibleForTesting; @@ -28,7 +29,6 @@ import com.android.server.pm.parsing.pkg.ParsedPackage; import java.util.ArrayList; import java.util.List; -import java.util.function.Supplier; /** * Modifies {@link ParsedPackage} in order to maintain backwards compatibility. @@ -55,13 +55,7 @@ public class PackageBackwardCompatibility extends PackageSharedLibraryUpdater { // android.test.mock. packageUpdaters.add(new AndroidTestRunnerSplitUpdater()); - // Attempt to load and add the optional updater that will only be available when - // REMOVE_ATB_FROM_BCP=true. If that could not be found then add the default updater that - // will remove any references to org.apache.http.library from the package so that it does - // not try and load the library when it is on the bootclasspath. - boolean bootClassPathContainsATB = !addOptionalUpdater(packageUpdaters, - "android.content.pm.parsing.library.AndroidTestBaseUpdater", - RemoveUnnecessaryAndroidTestBaseLibrary::new); + boolean bootClassPathContainsATB = !addUpdaterForAndroidTestBase(packageUpdaters); PackageSharedLibraryUpdater[] updaterArray = packageUpdaters .toArray(new PackageSharedLibraryUpdater[0]); @@ -70,41 +64,31 @@ public class PackageBackwardCompatibility extends PackageSharedLibraryUpdater { } /** - * Add an optional {@link PackageSharedLibraryUpdater} instance to the list, if it could not be - * found then add a default instance instead. + * Attempt to load and add the optional updater that will only be available when + * REMOVE_ATB_FROM_BCP=true. If that could not be found then add the default updater that + * will remove any references to org.apache.http.library from the package so that + * it does not try and load the library when it is on the bootclasspath. * - * @param packageUpdaters the list to update. - * @param className the name of the optional class. - * @param defaultUpdater the supplier of the default instance. - * @return true if the optional updater was added false otherwise. + * TODO:(b/135203078): Find a better way to do this. */ - private static boolean addOptionalUpdater(List<PackageSharedLibraryUpdater> packageUpdaters, - String className, Supplier<PackageSharedLibraryUpdater> defaultUpdater) { - Class<? extends PackageSharedLibraryUpdater> clazz; + private static boolean addUpdaterForAndroidTestBase( + List<PackageSharedLibraryUpdater> packageUpdaters) { + boolean hasClass = false; + String className = "android.content.pm.AndroidTestBaseUpdater"; try { - clazz = (PackageBackwardCompatibility.class.getClassLoader() - .loadClass(className) - .asSubclass(PackageSharedLibraryUpdater.class)); + Class clazz = (PackageParser.class.getClassLoader().loadClass(className)); + hasClass = clazz != null; Log.i(TAG, "Loaded " + className); } catch (ClassNotFoundException e) { Log.i(TAG, "Could not find " + className + ", ignoring"); - clazz = null; } - boolean usedOptional = false; - PackageSharedLibraryUpdater updater; - if (clazz == null) { - updater = defaultUpdater.get(); + if (hasClass) { + packageUpdaters.add(new AndroidTestBaseUpdater()); } else { - try { - updater = clazz.getConstructor().newInstance(); - usedOptional = true; - } catch (ReflectiveOperationException e) { - throw new IllegalStateException("Could not create instance of " + className, e); - } + packageUpdaters.add(new RemoveUnnecessaryAndroidTestBaseLibrary()); } - packageUpdaters.add(updater); - return usedOptional; + return hasClass; } @VisibleForTesting diff --git a/services/core/java/com/android/server/pm/parsing/library/PackageSharedLibraryUpdater.java b/services/core/java/com/android/server/pm/parsing/library/PackageSharedLibraryUpdater.java index 4e9319fe65ba..d84ee367b9f0 100644 --- a/services/core/java/com/android/server/pm/parsing/library/PackageSharedLibraryUpdater.java +++ b/services/core/java/com/android/server/pm/parsing/library/PackageSharedLibraryUpdater.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2019 The Android Open Source Project + * Copyright (C) 2020 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/services/core/java/com/android/server/pm/parsing/library/SharedLibraryNames.java b/services/core/java/com/android/server/pm/parsing/library/SharedLibraryNames.java index 6bcd216de798..f62f01452725 100644 --- a/services/core/java/com/android/server/pm/parsing/library/SharedLibraryNames.java +++ b/services/core/java/com/android/server/pm/parsing/library/SharedLibraryNames.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2019 The Android Open Source Project + * Copyright (C) 2020 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java index da79a395ba84..f3aff36ec5cb 100644 --- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java +++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java @@ -1282,7 +1282,7 @@ public class PermissionManagerService extends IPermissionManager.Stub { } if (bp.isSoftRestricted() && !SoftRestrictedPermissionPolicy.forPermission(mContext, - pkg.toAppInfoWithoutState(), UserHandle.of(userId), permName) + pkg.toAppInfoWithoutState(), pkg, UserHandle.of(userId), permName) .mayGrantPermission()) { Log.e(TAG, "Cannot grant soft restricted permission " + permName + " for package " + packageName); diff --git a/services/core/java/com/android/server/policy/PermissionPolicyService.java b/services/core/java/com/android/server/policy/PermissionPolicyService.java index f950cc371d7a..139c844256fa 100644 --- a/services/core/java/com/android/server/policy/PermissionPolicyService.java +++ b/services/core/java/com/android/server/policy/PermissionPolicyService.java @@ -163,7 +163,7 @@ public final class PermissionPolicyService extends SystemService { if (perm.isSoftRestricted()) { SoftRestrictedPermissionPolicy policy = SoftRestrictedPermissionPolicy.forPermission(null, null, null, - perm.name); + null, perm.name); int extraAppOp = policy.getExtraAppOpCode(); if (extraAppOp != OP_NONE) { appOpsService.startWatchingMode(extraAppOp, null, mAppOpsCallback); @@ -506,17 +506,18 @@ public final class PermissionPolicyService extends SystemService { /** * Note: Called with the package lock held. Do <u>not</u> call into app-op manager. */ - private void addAppOps(@NonNull PackageInfo packageInfo, @NonNull String permissionName) { + private void addAppOps(@NonNull PackageInfo packageInfo, @NonNull AndroidPackage pkg, + @NonNull String permissionName) { PermissionInfo permissionInfo = mRuntimePermissionInfos.get(permissionName); if (permissionInfo == null) { return; } - addPermissionAppOp(packageInfo, permissionInfo); - addExtraAppOp(packageInfo, permissionInfo); + addPermissionAppOp(packageInfo, pkg, permissionInfo); + addExtraAppOp(packageInfo, pkg, permissionInfo); } private void addPermissionAppOp(@NonNull PackageInfo packageInfo, - @NonNull PermissionInfo permissionInfo) { + @NonNull AndroidPackage pkg, @NonNull PermissionInfo permissionInfo) { if (!permissionInfo.isRuntime()) { return; } @@ -539,13 +540,13 @@ public final class PermissionPolicyService extends SystemService { } int appOpMode; - boolean shouldGrantAppOp = shouldGrantAppOp(packageInfo, permissionInfo); + boolean shouldGrantAppOp = shouldGrantAppOp(packageInfo, pkg, permissionInfo); if (shouldGrantAppOp) { if (permissionInfo.backgroundPermission != null) { PermissionInfo backgroundPermissionInfo = mRuntimePermissionInfos.get( permissionInfo.backgroundPermission); boolean shouldGrantBackgroundAppOp = backgroundPermissionInfo != null - && shouldGrantAppOp(packageInfo, backgroundPermissionInfo); + && shouldGrantAppOp(packageInfo, pkg, backgroundPermissionInfo); appOpMode = shouldGrantBackgroundAppOp ? MODE_ALLOWED : MODE_FOREGROUND; } else { appOpMode = MODE_ALLOWED; @@ -570,7 +571,7 @@ public final class PermissionPolicyService extends SystemService { } private boolean shouldGrantAppOp(@NonNull PackageInfo packageInfo, - @NonNull PermissionInfo permissionInfo) { + @NonNull AndroidPackage pkg, @NonNull PermissionInfo permissionInfo) { String permissionName = permissionInfo.name; String packageName = packageInfo.packageName; boolean isGranted = mPackageManager.checkPermission(permissionName, packageName) @@ -595,14 +596,15 @@ public final class PermissionPolicyService extends SystemService { } else if (permissionInfo.isSoftRestricted()) { SoftRestrictedPermissionPolicy policy = SoftRestrictedPermissionPolicy.forPermission(mContext, - packageInfo.applicationInfo, mContext.getUser(), permissionName); + packageInfo.applicationInfo, pkg, mContext.getUser(), + permissionName); return policy.mayGrantPermission(); } else { return true; } } - private void addExtraAppOp(@NonNull PackageInfo packageInfo, + private void addExtraAppOp(@NonNull PackageInfo packageInfo, @NonNull AndroidPackage pkg, @NonNull PermissionInfo permissionInfo) { if (!permissionInfo.isSoftRestricted()) { return; @@ -611,7 +613,7 @@ public final class PermissionPolicyService extends SystemService { String permissionName = permissionInfo.name; SoftRestrictedPermissionPolicy policy = SoftRestrictedPermissionPolicy.forPermission(mContext, - packageInfo.applicationInfo, mContext.getUser(), permissionName); + packageInfo.applicationInfo, pkg, mContext.getUser(), permissionName); int extraOpCode = policy.getExtraAppOpCode(); if (extraOpCode == OP_NONE) { return; @@ -639,19 +641,23 @@ public final class PermissionPolicyService extends SystemService { * @param pkgName The package to add for later processing. */ void addPackage(@NonNull String pkgName) { - final PackageInfo pkg; + PackageManagerInternal pmInternal = + LocalServices.getService(PackageManagerInternal.class); + final PackageInfo pkgInfo; + final AndroidPackage pkg; try { - pkg = mPackageManager.getPackageInfo(pkgName, GET_PERMISSIONS); + pkgInfo = mPackageManager.getPackageInfo(pkgName, GET_PERMISSIONS); + pkg = pmInternal.getPackage(pkgName); } catch (NameNotFoundException e) { return; } - if (pkg.requestedPermissions == null) { + if (pkgInfo == null || pkg == null || pkgInfo.requestedPermissions == null) { return; } - for (String permission : pkg.requestedPermissions) { - addAppOps(pkg, permission); + for (String permission : pkgInfo.requestedPermissions) { + addAppOps(pkgInfo, pkg, permission); } } diff --git a/services/core/java/com/android/server/policy/SoftRestrictedPermissionPolicy.java b/services/core/java/com/android/server/policy/SoftRestrictedPermissionPolicy.java index 740472e6b211..90babcd2a100 100644 --- a/services/core/java/com/android/server/policy/SoftRestrictedPermissionPolicy.java +++ b/services/core/java/com/android/server/policy/SoftRestrictedPermissionPolicy.java @@ -35,7 +35,6 @@ import android.compat.annotation.EnabledAfter; import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; -import android.content.pm.PackageManagerInternal; import android.os.Binder; import android.os.IBinder; import android.os.RemoteException; @@ -46,6 +45,7 @@ import android.util.Log; import com.android.internal.compat.IPlatformCompat; import com.android.server.LocalServices; +import com.android.server.pm.parsing.pkg.AndroidPackage; /** * The behavior of soft restricted permissions is different for each permission. This class collects @@ -100,8 +100,8 @@ public abstract class SoftRestrictedPermissionPolicy { * @return The policy for this permission */ public static @NonNull SoftRestrictedPermissionPolicy forPermission(@NonNull Context context, - @Nullable ApplicationInfo appInfo, @Nullable UserHandle user, - @NonNull String permission) { + @Nullable ApplicationInfo appInfo, @Nullable AndroidPackage pkg, + @Nullable UserHandle user, @NonNull String permission) { switch (permission) { // Storage uses a special app op to decide the mount state and supports soft restriction // where the restricted state allows the permission but only for accessing the medial @@ -116,8 +116,6 @@ public abstract class SoftRestrictedPermissionPolicy { if (appInfo != null) { PackageManager pm = context.getPackageManager(); - PackageManagerInternal pmInternal = - LocalServices.getService(PackageManagerInternal.class); StorageManagerInternal smInternal = LocalServices.getService(StorageManagerInternal.class); int flags = pm.getPermissionFlags(permission, appInfo.packageName, user); @@ -131,8 +129,7 @@ public abstract class SoftRestrictedPermissionPolicy { isScopedStorageEnabled = isChangeEnabledForUid(context, appInfo, user, ENABLE_SCOPED_STORAGE) || isScopedStorageRequired; - shouldPreserveLegacyExternalStorage = pmInternal.getPackage( - appInfo.packageName).hasPreserveLegacyExternalStorage() + shouldPreserveLegacyExternalStorage = pkg.hasPreserveLegacyExternalStorage() && smInternal.hasLegacyExternalStorage(appInfo.uid); shouldApplyRestriction = (flags & FLAG_PERMISSION_APPLY_RESTRICTION) != 0 || (isScopedStorageRequired && !shouldPreserveLegacyExternalStorage); diff --git a/services/robotests/src/com/android/server/pm/CrossProfileAppsServiceImplRoboTest.java b/services/robotests/src/com/android/server/pm/CrossProfileAppsServiceImplRoboTest.java index 6190802d033d..fa0febd7f20f 100644 --- a/services/robotests/src/com/android/server/pm/CrossProfileAppsServiceImplRoboTest.java +++ b/services/robotests/src/com/android/server/pm/CrossProfileAppsServiceImplRoboTest.java @@ -46,8 +46,6 @@ import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManagerInternal; import android.content.pm.ResolveInfo; -import android.content.pm.parsing.AndroidPackage; -import android.content.pm.parsing.PackageImpl; import android.os.Process; import android.os.UserHandle; import android.os.UserManager; @@ -58,6 +56,9 @@ import androidx.test.core.app.ApplicationProvider; import com.android.internal.util.FunctionalUtils.ThrowingRunnable; import com.android.internal.util.FunctionalUtils.ThrowingSupplier; import com.android.server.LocalServices; +import com.android.server.pm.parsing.pkg.AndroidPackage; +import com.android.server.pm.parsing.pkg.PackageImpl; +import com.android.server.pm.parsing.pkg.ParsedPackage; import com.android.server.testing.shadows.ShadowApplicationPackageManager; import com.android.server.testing.shadows.ShadowUserManager; import com.android.server.wm.ActivityTaskManagerInternal; @@ -135,7 +136,8 @@ public class CrossProfileAppsServiceImplRoboTest { eq(userId))) .thenReturn(packageInfo); when(mPackageManagerInternal.getPackage(uid)) - .thenReturn(PackageImpl.forParsing(CROSS_PROFILE_APP_PACKAGE_NAME)); + .thenReturn(((ParsedPackage) PackageImpl.forTesting(CROSS_PROFILE_APP_PACKAGE_NAME) + .hideAsParsed()).hideAsFinal()); } private PackageInfo buildTestPackageInfo() { @@ -497,7 +499,9 @@ public class CrossProfileAppsServiceImplRoboTest { private void declareCrossProfileAttributeOnCrossProfileApp(boolean value) { mockCrossProfileAndroidPackage( - PackageImpl.forParsing(CROSS_PROFILE_APP_PACKAGE_NAME).setCrossProfile(value)); + ((ParsedPackage) PackageImpl.forTesting(CROSS_PROFILE_APP_PACKAGE_NAME) + .setCrossProfile(value) + .hideAsParsed()).hideAsFinal()); } private class TestInjector implements CrossProfileAppsServiceImpl.Injector { diff --git a/services/tests/mockingservicestests/src/com/android/server/appop/AppOpsServiceTest.java b/services/tests/mockingservicestests/src/com/android/server/appop/AppOpsServiceTest.java index 2d5fa237f6b7..959dc0525e8f 100644 --- a/services/tests/mockingservicestests/src/com/android/server/appop/AppOpsServiceTest.java +++ b/services/tests/mockingservicestests/src/com/android/server/appop/AppOpsServiceTest.java @@ -50,7 +50,6 @@ import android.app.AppOpsManager.PackageOps; import android.content.ContentResolver; import android.content.Context; import android.content.pm.PackageManagerInternal; -import android.content.pm.parsing.AndroidPackage; import android.os.Handler; import android.os.HandlerThread; import android.os.Process; @@ -63,6 +62,7 @@ import androidx.test.runner.AndroidJUnit4; import com.android.dx.mockito.inline.extended.StaticMockitoSession; import com.android.server.LocalServices; +import com.android.server.pm.parsing.pkg.AndroidPackage; import org.junit.After; import org.junit.Before; diff --git a/services/tests/servicestests/Android.bp b/services/tests/servicestests/Android.bp index bf2b9bec33c9..d148c21b7d6e 100644 --- a/services/tests/servicestests/Android.bp +++ b/services/tests/servicestests/Android.bp @@ -93,6 +93,7 @@ android_test { }, data: [":JobTestApp"], + resource_zips: [":FrameworksServicesTests_apks_as_resources"], } java_library { @@ -115,3 +116,28 @@ filegroup { "src/com/android/server/pm/SuspendPackagesTest.java", ], } + +// Rules to copy all the test apks to the intermediate raw resource directory +java_genrule { + name: "FrameworksServicesTests_apks_as_resources", + srcs: [ + ":FrameworksCoreTests_install_complete_package_info", + ":FrameworksServicesTests_install_intent_filters", + ":FrameworksServicesTests_install_split_base", + ":FrameworksServicesTests_install_split_feature_a", + ":FrameworksServicesTests_install_uses_sdk_0", + ":FrameworksServicesTests_install_uses_sdk_q0", + ":FrameworksServicesTests_install_uses_sdk_r", + ":FrameworksServicesTests_install_uses_sdk_r0", + ":FrameworksServicesTests_install_uses_sdk_r5", + ], + out: ["FrameworkServicesTests_apks_as_resources.res.zip"], + tools: ["soong_zip"], + + cmd: "mkdir -p $(genDir)/res/raw && " + + "for i in $(in); do " + + " x=$${i##*FrameworksCoreTests_}; cp $$i $(genDir)/res/raw/$${x%.apk};" + + " x=$${i##*FrameworksServicesTests_}; cp $$i $(genDir)/res/raw/$${x%.apk};" + + "done && " + + "$(location soong_zip) -o $(out) -C $(genDir)/res -D $(genDir)/res", +} diff --git a/services/tests/servicestests/apks/Android.bp b/services/tests/servicestests/apks/Android.bp new file mode 100644 index 000000000000..3e11604005a0 --- /dev/null +++ b/services/tests/servicestests/apks/Android.bp @@ -0,0 +1,7 @@ +java_defaults { + name: "FrameworksServicesTests_apks_defaults", + sdk_version: "current", + + // Every package should have a native library + jni_libs: ["libframeworks_coretests_jni"], +} diff --git a/services/tests/servicestests/apks/install-split-base/Android.bp b/services/tests/servicestests/apks/install-split-base/Android.bp new file mode 100644 index 000000000000..1b62aa2a8e96 --- /dev/null +++ b/services/tests/servicestests/apks/install-split-base/Android.bp @@ -0,0 +1,6 @@ +android_test_helper_app { + name: "FrameworksServicesTests_install_split_base", + defaults: ["FrameworksServicesTests_apks_defaults"], + + srcs: ["**/*.java"], +} diff --git a/core/tests/coretests/apks/install-split-base/AndroidManifest.xml b/services/tests/servicestests/apks/install-split-base/AndroidManifest.xml index c2bfeddf32e3..2979395a8141 100644 --- a/core/tests/coretests/apks/install-split-base/AndroidManifest.xml +++ b/services/tests/servicestests/apks/install-split-base/AndroidManifest.xml @@ -15,7 +15,7 @@ --> <manifest xmlns:android="http://schemas.android.com/apk/res/android" - package="com.android.frameworks.coretests.install_split" + package="com.android.frameworks.servicestests.install_split" android:isolatedSplits="true"> <application android:label="ClassloaderSplitApp"> diff --git a/core/tests/coretests/apks/install-split-base/src/com/google/android/dexapis/splitapp/BaseActivity.java b/services/tests/servicestests/apks/install-split-base/src/com/google/android/dexapis/splitapp/BaseActivity.java index cb5760ceef8e..cb5760ceef8e 100644 --- a/core/tests/coretests/apks/install-split-base/src/com/google/android/dexapis/splitapp/BaseActivity.java +++ b/services/tests/servicestests/apks/install-split-base/src/com/google/android/dexapis/splitapp/BaseActivity.java diff --git a/core/tests/coretests/apks/install-split-feature-a/Android.bp b/services/tests/servicestests/apks/install-split-feature-a/Android.bp index 9ec9893cc408..45d891720166 100644 --- a/core/tests/coretests/apks/install-split-feature-a/Android.bp +++ b/services/tests/servicestests/apks/install-split-feature-a/Android.bp @@ -1,6 +1,6 @@ android_test_helper_app { - name: "FrameworksCoreTests_install_split_feature_a", - defaults: ["FrameworksCoreTests_apks_defaults"], + name: "FrameworksServicesTests_install_split_feature_a", + defaults: ["FrameworksServicesTests_apks_defaults"], srcs: ["**/*.java"], diff --git a/core/tests/coretests/apks/install-split-feature-a/AndroidManifest.xml b/services/tests/servicestests/apks/install-split-feature-a/AndroidManifest.xml index 3221c75ebe0c..a3dd55f712a2 100644 --- a/core/tests/coretests/apks/install-split-feature-a/AndroidManifest.xml +++ b/services/tests/servicestests/apks/install-split-feature-a/AndroidManifest.xml @@ -15,7 +15,7 @@ --> <manifest xmlns:android="http://schemas.android.com/apk/res/android" - package="com.android.frameworks.coretests.install_split" + package="com.android.frameworks.servicestests.install_split" featureSplit="feature_a"> <application> diff --git a/core/tests/coretests/apks/install-split-feature-a/src/com/google/android/dexapis/splitapp/feature_a/FeatureAActivity.java b/services/tests/servicestests/apks/install-split-feature-a/src/com/google/android/dexapis/splitapp/feature_a/FeatureAActivity.java index 0af5f893164c..0af5f893164c 100644 --- a/core/tests/coretests/apks/install-split-feature-a/src/com/google/android/dexapis/splitapp/feature_a/FeatureAActivity.java +++ b/services/tests/servicestests/apks/install-split-feature-a/src/com/google/android/dexapis/splitapp/feature_a/FeatureAActivity.java diff --git a/services/tests/servicestests/apks/install_intent_filters/Android.bp b/services/tests/servicestests/apks/install_intent_filters/Android.bp new file mode 100644 index 000000000000..59c8524e01c2 --- /dev/null +++ b/services/tests/servicestests/apks/install_intent_filters/Android.bp @@ -0,0 +1,7 @@ +android_test_helper_app { + name: "FrameworksServicesTests_install_intent_filters", + defaults: ["FrameworksServicesTests_apks_defaults"], + + srcs: ["**/*.java"], +} + diff --git a/core/tests/coretests/apks/install_intent_filters/AndroidManifest.xml b/services/tests/servicestests/apks/install_intent_filters/AndroidManifest.xml index d7ee76eb381d..fc7134d24dda 100644 --- a/core/tests/coretests/apks/install_intent_filters/AndroidManifest.xml +++ b/services/tests/servicestests/apks/install_intent_filters/AndroidManifest.xml @@ -16,7 +16,7 @@ --> <manifest xmlns:android="http://schemas.android.com/apk/res/android" - package="com.android.frameworks.coretests.install_intent_filters"> + package="com.android.frameworks.servicestests.install_intent_filters"> <!-- This manifest declares an activity for testing intent filters. @@ -24,7 +24,7 @@ --> <uses-feature - android:name="com.android.frameworks.coretests.nonexistent" /> + android:name="com.android.frameworks.servicestests.nonexistent" /> <uses-configuration android:reqFiveWayNav="false" /> @@ -41,7 +41,7 @@ <application android:hasCode="true"> <activity - android:name="com.android.frameworks.coretests.TestActivity"> + android:name="com.android.frameworks.servicestests.TestActivity"> <intent-filter> <action android:name="action1"/> <data android:mimeGroup="mime_group_1"/> diff --git a/core/tests/coretests/apks/install_intent_filters/src/com/android/frameworks/coretests/TestActivity.java b/services/tests/servicestests/apks/install_intent_filters/src/com/android/frameworks/servicestests/TestActivity.java index 08a19aacc21e..08a19aacc21e 100644 --- a/core/tests/coretests/apks/install_intent_filters/src/com/android/frameworks/coretests/TestActivity.java +++ b/services/tests/servicestests/apks/install_intent_filters/src/com/android/frameworks/servicestests/TestActivity.java diff --git a/services/tests/servicestests/apks/install_uses_sdk/Android.bp b/services/tests/servicestests/apks/install_uses_sdk/Android.bp new file mode 100644 index 000000000000..c24aa2bd8bba --- /dev/null +++ b/services/tests/servicestests/apks/install_uses_sdk/Android.bp @@ -0,0 +1,39 @@ +android_test_helper_app { + name: "FrameworksServicesTests_install_uses_sdk_r0", + defaults: ["FrameworksServicesTests_apks_defaults"], + manifest: "AndroidManifest-r0.xml", + + srcs: ["**/*.java"], +} + +android_test_helper_app { + name: "FrameworksServicesTests_install_uses_sdk_r5", + defaults: ["FrameworksServicesTests_apks_defaults"], + manifest: "AndroidManifest-r5.xml", + + srcs: ["**/*.java"], +} + +android_test_helper_app { + name: "FrameworksServicesTests_install_uses_sdk_q0", + defaults: ["FrameworksServicesTests_apks_defaults"], + manifest: "AndroidManifest-q0.xml", + + srcs: ["**/*.java"], +} + +android_test_helper_app { + name: "FrameworksServicesTests_install_uses_sdk_r", + defaults: ["FrameworksServicesTests_apks_defaults"], + manifest: "AndroidManifest-r.xml", + + srcs: ["**/*.java"], +} + +android_test_helper_app { + name: "FrameworksServicesTests_install_uses_sdk_0", + defaults: ["FrameworksServicesTests_apks_defaults"], + manifest: "AndroidManifest-0.xml", + + srcs: ["**/*.java"], +} diff --git a/core/tests/coretests/apks/install_uses_sdk/AndroidManifest-0.xml b/services/tests/servicestests/apks/install_uses_sdk/AndroidManifest-0.xml index 634228b1ace3..215384b2831c 100644 --- a/core/tests/coretests/apks/install_uses_sdk/AndroidManifest-0.xml +++ b/services/tests/servicestests/apks/install_uses_sdk/AndroidManifest-0.xml @@ -14,7 +14,7 @@ limitations under the License. --> <manifest xmlns:android="http://schemas.android.com/apk/res/android" - package="com.android.frameworks.coretests.install_uses_sdk"> + package="com.android.frameworks.servicestests.install_uses_sdk"> <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="29"> <!-- This is invalid, because there is no sdk version specified --> diff --git a/core/tests/coretests/apks/install_uses_sdk/AndroidManifest-q0.xml b/services/tests/servicestests/apks/install_uses_sdk/AndroidManifest-q0.xml index 8994966832aa..c0e58674a226 100644 --- a/core/tests/coretests/apks/install_uses_sdk/AndroidManifest-q0.xml +++ b/services/tests/servicestests/apks/install_uses_sdk/AndroidManifest-q0.xml @@ -14,7 +14,7 @@ limitations under the License. --> <manifest xmlns:android="http://schemas.android.com/apk/res/android" - package="com.android.frameworks.coretests.install_uses_sdk"> + package="com.android.frameworks.servicestests.install_uses_sdk"> <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="29"> <!-- This fails because 29 doesn't have an extension sdk --> diff --git a/core/tests/coretests/apks/install_uses_sdk/AndroidManifest-r.xml b/services/tests/servicestests/apks/install_uses_sdk/AndroidManifest-r.xml index 0d0d8b9e9029..5d22577d118a 100644 --- a/core/tests/coretests/apks/install_uses_sdk/AndroidManifest-r.xml +++ b/services/tests/servicestests/apks/install_uses_sdk/AndroidManifest-r.xml @@ -14,7 +14,7 @@ limitations under the License. --> <manifest xmlns:android="http://schemas.android.com/apk/res/android" - package="com.android.frameworks.coretests.install_uses_sdk"> + package="com.android.frameworks.servicestests.install_uses_sdk"> <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="29"> <!-- This is invalid, because there is no minimum extension version specified --> diff --git a/core/tests/coretests/apks/install_uses_sdk/AndroidManifest-r0.xml b/services/tests/servicestests/apks/install_uses_sdk/AndroidManifest-r0.xml index a987afa2438e..c1244f246355 100644 --- a/core/tests/coretests/apks/install_uses_sdk/AndroidManifest-r0.xml +++ b/services/tests/servicestests/apks/install_uses_sdk/AndroidManifest-r0.xml @@ -14,7 +14,7 @@ limitations under the License. --> <manifest xmlns:android="http://schemas.android.com/apk/res/android" - package="com.android.frameworks.coretests.install_uses_sdk"> + package="com.android.frameworks.servicestests.install_uses_sdk"> <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="29"> <extension-sdk android:sdkVersion="10000" android:minExtensionVersion="0" /> diff --git a/core/tests/coretests/apks/install_uses_sdk/AndroidManifest-r5.xml b/services/tests/servicestests/apks/install_uses_sdk/AndroidManifest-r5.xml index 9860096386bc..3410938b3c2d 100644 --- a/core/tests/coretests/apks/install_uses_sdk/AndroidManifest-r5.xml +++ b/services/tests/servicestests/apks/install_uses_sdk/AndroidManifest-r5.xml @@ -14,7 +14,7 @@ limitations under the License. --> <manifest xmlns:android="http://schemas.android.com/apk/res/android" - package="com.android.frameworks.coretests.install_uses_sdk"> + package="com.android.frameworks.servicestests.install_uses_sdk"> <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="29"> <!-- This will fail to install, because minExtensionVersion is not met --> diff --git a/core/tests/coretests/apks/install_uses_sdk/res/values/strings.xml b/services/tests/servicestests/apks/install_uses_sdk/res/values/strings.xml index 3b8b3b1af9b5..3b8b3b1af9b5 100644 --- a/core/tests/coretests/apks/install_uses_sdk/res/values/strings.xml +++ b/services/tests/servicestests/apks/install_uses_sdk/res/values/strings.xml diff --git a/core/tests/coretests/res/raw/com_android_tzdata.apex b/services/tests/servicestests/res/raw/com_android_tzdata.apex Binary files differindex ca89bf66c8ff..ca89bf66c8ff 100644 --- a/core/tests/coretests/res/raw/com_android_tzdata.apex +++ b/services/tests/servicestests/res/raw/com_android_tzdata.apex diff --git a/services/tests/servicestests/src/com/android/server/om/OverlayReferenceMapperTests.kt b/services/tests/servicestests/src/com/android/server/om/OverlayReferenceMapperTests.kt index ef1294819f34..f97e7d3c9e88 100644 --- a/services/tests/servicestests/src/com/android/server/om/OverlayReferenceMapperTests.kt +++ b/services/tests/servicestests/src/com/android/server/om/OverlayReferenceMapperTests.kt @@ -16,8 +16,8 @@ package com.android.server.om -import android.content.pm.parsing.AndroidPackage import android.net.Uri +import com.android.server.pm.parsing.pkg.AndroidPackage import com.google.common.truth.Truth.assertThat import org.junit.Before import org.junit.Test diff --git a/services/tests/servicestests/src/com/android/server/people/data/DataManagerTest.java b/services/tests/servicestests/src/com/android/server/people/data/DataManagerTest.java index 3ecd3193058a..fa223fbe0340 100644 --- a/services/tests/servicestests/src/com/android/server/people/data/DataManagerTest.java +++ b/services/tests/servicestests/src/com/android/server/people/data/DataManagerTest.java @@ -57,7 +57,6 @@ import android.content.pm.ShortcutInfo; import android.content.pm.ShortcutManager; import android.content.pm.ShortcutServiceInternal; import android.content.pm.UserInfo; -import android.content.pm.parsing.AndroidPackage; import android.database.ContentObserver; import android.net.Uri; import android.os.CancellationSignal; @@ -74,6 +73,7 @@ import android.util.Range; import com.android.internal.app.ChooserActivity; import com.android.internal.content.PackageMonitor; import com.android.server.LocalServices; +import com.android.server.pm.parsing.pkg.AndroidPackage; import org.junit.After; import org.junit.Before; diff --git a/services/tests/servicestests/src/com/android/server/pm/AppsFilterTest.java b/services/tests/servicestests/src/com/android/server/pm/AppsFilterTest.java index 9670658d4e45..236b9d6be477 100644 --- a/services/tests/servicestests/src/com/android/server/pm/AppsFilterTest.java +++ b/services/tests/servicestests/src/com/android/server/pm/AppsFilterTest.java @@ -29,11 +29,9 @@ import android.content.IntentFilter; import android.content.pm.ApplicationInfo; import android.content.pm.PackageParser; import android.content.pm.Signature; -import android.content.pm.parsing.AndroidPackage; import android.content.pm.parsing.ComponentParseUtils; import android.content.pm.parsing.ComponentParseUtils.ParsedActivity; import android.content.pm.parsing.ComponentParseUtils.ParsedActivityIntentInfo; -import android.content.pm.parsing.PackageImpl; import android.content.pm.parsing.ParsingPackage; import android.os.Build; import android.os.Process; @@ -44,6 +42,9 @@ import android.util.ArraySet; import androidx.annotation.NonNull; import com.android.server.om.OverlayReferenceMapper; +import com.android.server.pm.parsing.pkg.AndroidPackage; +import com.android.server.pm.parsing.pkg.PackageImpl; +import com.android.server.pm.parsing.pkg.ParsedPackage; import org.junit.Before; import org.junit.Test; @@ -74,7 +75,7 @@ public class AppsFilterTest { private ArrayMap<String, PackageSetting> mExisting = new ArrayMap<>(); private static ParsingPackage pkg(String packageName) { - return PackageImpl.forParsing(packageName) + return PackageImpl.forTesting(packageName) .setTargetSdkVersion(Build.VERSION_CODES.R); } @@ -437,7 +438,7 @@ public class AppsFilterTest { ParsingPackage target = pkg("com.some.package.target") .addOverlayable("overlayableName", actorName); ParsingPackage overlay = pkg("com.some.package.overlay") - .setIsOverlay(true) + .setOverlay(true) .setOverlayTarget(target.getPackageName()) .setOverlayTargetName("overlayableName"); ParsingPackage actor = pkg("com.some.package.actor"); @@ -499,7 +500,7 @@ public class AppsFilterTest { ParsingPackage target = pkg("com.some.package.target") .addOverlayable("overlayableName", actorName); ParsingPackage overlay = pkg("com.some.package.overlay") - .setIsOverlay(true) + .setOverlay(true) .setOverlayTarget(target.getPackageName()) .setOverlayTargetName("overlayableName"); ParsingPackage actorOne = pkg("com.some.package.actor.one"); @@ -618,7 +619,7 @@ public class AppsFilterTest { private PackageSetting simulateAddPackage(AppsFilter filter, ParsingPackage newPkgBuilder, int appId, @Nullable WithSettingBuilder action) { - AndroidPackage newPkg = newPkgBuilder.hideAsParsed().hideAsFinal(); + AndroidPackage newPkg = ((ParsedPackage) newPkgBuilder.hideAsParsed()).hideAsFinal(); final PackageSettingBuilder settingBuilder = new PackageSettingBuilder() .setPackage(newPkg) diff --git a/services/tests/servicestests/src/com/android/server/pm/PackageParserTest.java b/services/tests/servicestests/src/com/android/server/pm/PackageParserTest.java index 56ac7c55443e..cb50929127a1 100644 --- a/services/tests/servicestests/src/com/android/server/pm/PackageParserTest.java +++ b/services/tests/servicestests/src/com/android/server/pm/PackageParserTest.java @@ -21,6 +21,7 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertSame; import static org.junit.Assert.assertTrue; +import android.annotation.NonNull; import android.content.pm.ActivityInfo; import android.content.pm.ApplicationInfo; import android.content.pm.ConfigurationInfo; @@ -31,9 +32,7 @@ import android.content.pm.PackageParser; import android.content.pm.PackageUserState; import android.content.pm.ProviderInfo; import android.content.pm.ServiceInfo; -import android.content.pm.SharedLibraryInfo; import android.content.pm.Signature; -import android.content.pm.parsing.AndroidPackage; import android.content.pm.parsing.ComponentParseUtils; import android.content.pm.parsing.ComponentParseUtils.ParsedActivity; import android.content.pm.parsing.ComponentParseUtils.ParsedComponent; @@ -43,20 +42,25 @@ import android.content.pm.parsing.ComponentParseUtils.ParsedPermission; import android.content.pm.parsing.ComponentParseUtils.ParsedPermissionGroup; import android.content.pm.parsing.ComponentParseUtils.ParsedProvider; import android.content.pm.parsing.ComponentParseUtils.ParsedService; -import android.content.pm.parsing.PackageImpl; -import android.content.pm.parsing.PackageInfoUtils; -import android.content.pm.parsing.ParsedPackage; import android.content.pm.parsing.ParsingPackage; import android.os.Bundle; import android.os.Parcel; import android.platform.test.annotations.Presubmit; import android.util.ArraySet; +import android.util.DisplayMetrics; +import androidx.annotation.Nullable; import androidx.test.filters.MediumTest; import androidx.test.filters.SmallTest; import androidx.test.runner.AndroidJUnit4; import com.android.internal.util.ArrayUtils; +import com.android.server.pm.parsing.PackageCacher; +import com.android.server.pm.parsing.PackageInfoUtils; +import com.android.server.pm.parsing.PackageParser2; +import com.android.server.pm.parsing.pkg.AndroidPackage; +import com.android.server.pm.parsing.pkg.PackageImpl; +import com.android.server.pm.parsing.pkg.ParsedPackage; import org.junit.Before; import org.junit.Rule; @@ -70,12 +74,12 @@ import java.lang.reflect.Array; import java.lang.reflect.Field; import java.nio.charset.StandardCharsets; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; +@Presubmit @RunWith(AndroidJUnit4.class) @MediumTest public class PackageParserTest { @@ -96,13 +100,13 @@ public class PackageParserTest { @Test public void testParse_noCache() throws Exception { - PackageParser pp = new CachePackageNameParser(); - ParsedPackage pkg = pp.parseParsedPackage(FRAMEWORK, 0 /* parseFlags */, + CachePackageNameParser pp = new CachePackageNameParser(null, false, null, null, null); + ParsedPackage pkg = pp.parsePackage(FRAMEWORK, 0 /* parseFlags */, false /* useCaches */); assertNotNull(pkg); pp.setCacheDir(mTmpDir); - pkg = pp.parseParsedPackage(FRAMEWORK, 0 /* parseFlags */, + pkg = pp.parsePackage(FRAMEWORK, 0 /* parseFlags */, false /* useCaches */); assertNotNull(pkg); @@ -113,39 +117,37 @@ public class PackageParserTest { @Test public void testParse_withCache() throws Exception { - PackageParser pp = new CachePackageNameParser(); + CachePackageNameParser pp = new CachePackageNameParser(null, false, null, null, null); pp.setCacheDir(mTmpDir); // The first parse will write this package to the cache. - pp.parseParsedPackage(FRAMEWORK, 0 /* parseFlags */, true /* useCaches */); + pp.parsePackage(FRAMEWORK, 0 /* parseFlags */, true /* useCaches */); // Now attempt to parse the package again, should return the // cached result. - ParsedPackage pkg = pp.parseParsedPackage(FRAMEWORK, 0 /* parseFlags */, + ParsedPackage pkg = pp.parsePackage(FRAMEWORK, 0 /* parseFlags */, true /* useCaches */); assertEquals("cache_android", pkg.getPackageName()); // Try again, with useCaches == false, shouldn't return the parsed // result. - pkg = pp.parseParsedPackage(FRAMEWORK, 0 /* parseFlags */, false /* useCaches */); + pkg = pp.parsePackage(FRAMEWORK, 0 /* parseFlags */, false /* useCaches */); assertEquals("android", pkg.getPackageName()); // We haven't set a cache directory here : the parse should still succeed, // just not using the cached results. - pp = new CachePackageNameParser(); - pkg = pp.parseParsedPackage(FRAMEWORK, 0 /* parseFlags */, true /* useCaches */); + pp = new CachePackageNameParser(null, false, null, null, null); + pkg = pp.parsePackage(FRAMEWORK, 0 /* parseFlags */, true /* useCaches */); assertEquals("android", pkg.getPackageName()); - pkg = pp.parseParsedPackage(FRAMEWORK, 0 /* parseFlags */, false /* useCaches */); + pkg = pp.parsePackage(FRAMEWORK, 0 /* parseFlags */, false /* useCaches */); assertEquals("android", pkg.getPackageName()); } @Test public void test_serializePackage() throws Exception { - PackageParser pp = new PackageParser(); - pp.setCacheDir(mTmpDir); - - ParsedPackage pkg = pp.parseParsedPackage(FRAMEWORK, 0 /* parseFlags */, + PackageParser2 pp = new PackageParser2(null, false, null, mTmpDir, null); + ParsedPackage pkg = pp.parsePackage(FRAMEWORK, 0 /* parseFlags */, true /* useCaches */); Parcel p = Parcel.obtain(); @@ -161,7 +163,7 @@ public class PackageParserTest { @SmallTest @Presubmit public void test_roundTripKnownFields() throws Exception { - ParsingPackage pkg = PackageImpl.forParsing("foo"); + ParsingPackage pkg = PackageImpl.forTesting("foo"); setKnownFields(pkg); Parcel p = Parcel.obtain(); @@ -174,7 +176,7 @@ public class PackageParserTest { @Test public void test_stringInterning() throws Exception { - ParsingPackage pkg = PackageImpl.forParsing("foo"); + ParsingPackage pkg = PackageImpl.forTesting("foo"); setKnownFields(pkg); Parcel p = Parcel.obtain(); @@ -212,19 +214,44 @@ public class PackageParserTest { * A trivial subclass of package parser that only caches the package name, and throws away * all other information. */ - public static class CachePackageNameParser extends PackageParser { - @Override - public byte[] toCacheEntry(ParsedPackage pkg) { - return ("cache_" + pkg.getPackageName()).getBytes(StandardCharsets.UTF_8); + public static class CachePackageNameParser extends PackageParser2 { + + CachePackageNameParser(String[] separateProcesses, boolean onlyCoreApps, + DisplayMetrics displayMetrics, @Nullable File cacheDir, + PackageParser2.Callback callback) { + super(separateProcesses, onlyCoreApps, displayMetrics, cacheDir, callback); + if (cacheDir != null) { + setCacheDir(cacheDir); + } } - @Override - public ParsedPackage fromCacheEntry(byte[] cacheEntry) { - return PackageImpl.forParsing(new String(cacheEntry, StandardCharsets.UTF_8)) - .hideAsParsed(); + void setCacheDir(@NonNull File cacheDir) { + this.mCacher = new PackageCacher(cacheDir) { + @Override + public byte[] toCacheEntry(ParsedPackage pkg) { + return ("cache_" + pkg.getPackageName()).getBytes(StandardCharsets.UTF_8); + } + + @Override + public ParsedPackage fromCacheEntry(byte[] cacheEntry) { + return ((ParsedPackage) PackageImpl.forTesting( + new String(cacheEntry, StandardCharsets.UTF_8)) + .hideAsParsed()); + } + }; } } + private static PackageSetting mockPkgSetting(AndroidPackage pkg) { + return new PackageSetting(pkg.getPackageName(), pkg.getRealPackage(), + new File(pkg.getCodePath()), new File(pkg.getCodePath()), null, + pkg.getPrimaryCpuAbi(), pkg.getSecondaryCpuAbi(), + pkg.getCpuAbiOverride(), pkg.getVersionCode(), + PackageInfoUtils.appInfoFlags(pkg, null), + PackageInfoUtils.appInfoPrivateFlags(pkg, null), + pkg.getSharedUserLabel(), null, null, null); + } + // NOTE: The equality assertions below are based on code autogenerated by IntelliJ. public static void assertPackagesEqual(AndroidPackage a, AndroidPackage b) { @@ -232,7 +259,6 @@ public class PackageParserTest { assertEquals(a.isBaseHardwareAccelerated(), b.isBaseHardwareAccelerated()); assertEquals(a.getVersionCode(), b.getVersionCode()); assertEquals(a.getSharedUserLabel(), b.getSharedUserLabel()); - assertEquals(a.getPreferredOrder(), b.getPreferredOrder()); assertEquals(a.getInstallLocation(), b.getInstallLocation()); assertEquals(a.isCoreApp(), b.isCoreApp()); assertEquals(a.isRequiredForAllUsers(), b.isRequiredForAllUsers()); @@ -298,15 +324,13 @@ public class PackageParserTest { assertEquals(a.getLibraryNames(), b.getLibraryNames()); assertEquals(a.getUsesLibraries(), b.getUsesLibraries()); assertEquals(a.getUsesOptionalLibraries(), b.getUsesOptionalLibraries()); - assertArrayEquals(a.getUsesLibraryFiles(), b.getUsesLibraryFiles()); assertEquals(a.getOriginalPackages(), b.getOriginalPackages()); assertEquals(a.getRealPackage(), b.getRealPackage()); assertEquals(a.getAdoptPermissions(), b.getAdoptPermissions()); - assertBundleApproximateEquals(a.getAppMetaData(), b.getAppMetaData()); + assertBundleApproximateEquals(a.getMetaData(), b.getMetaData()); assertEquals(a.getVersionName(), b.getVersionName()); assertEquals(a.getSharedUserId(), b.getSharedUserId()); assertArrayEquals(a.getSigningDetails().signatures, b.getSigningDetails().signatures); - assertArrayEquals(a.getLastPackageUsageTimeInMills(), b.getLastPackageUsageTimeInMills()); assertEquals(a.getRestrictedAccountType(), b.getRestrictedAccountType()); assertEquals(a.getRequiredAccountType(), b.getRequiredAccountType()); assertEquals(a.getOverlayTarget(), b.getOverlayTarget()); @@ -496,10 +520,9 @@ public class PackageParserTest { ParsedPermission permission = new ParsedPermission(); permission.parsedPermissionGroup = new ParsedPermissionGroup(); - pkg.setBaseRevisionCode(100) + ((ParsedPackage) pkg.setBaseRevisionCode(100) .setBaseHardwareAccelerated(true) .setSharedUserLabel(100) - .setPreferredOrder(100) .setInstallLocation(100) .setRequiredForAllUsers(true) .asSplit( @@ -510,7 +533,6 @@ public class PackageParserTest { ) .setUse32BitAbi(true) .setVolumeUuid("foo3") - .setCodePath("foo4") .addPermission(permission) .addPermissionGroup(new ParsedPermissionGroup()) .addActivity(new ParsedActivity()) @@ -532,7 +554,7 @@ public class PackageParserTest { .addOriginalPackage("foo14") .setRealPackage("foo15") .addAdoptPermission("foo16") - .setAppMetaData(bundle) + .setMetaData(bundle) .setVersionName("foo17") .setSharedUserId("foo18") .setSigningDetails( @@ -559,19 +581,15 @@ public class PackageParserTest { .setOverlayTargetName("foo26") .setVisibleToInstantApps(true) .setSplitHasCode(0, true) - .hideAsParsed() + .hideAsParsed()) .setBaseCodePath("foo5") + .setCodePath("foo4") .setVersionCode(100) .setCpuAbiOverride("foo22") .setRestrictUpdateHash(new byte[16]) .setVersionCodeMajor(100) .setCoreApp(true) - .hideAsFinal() - .mutate() - .setUsesLibraryInfos(Arrays.asList( - new SharedLibraryInfo(null, null, null, null, 0L, 0, null, null, null) - )) - .setUsesLibraryFiles(new String[]{"foo13"}); + .hideAsFinal(); } private static void assertAllFieldsExist(ParsedPackage pkg) throws Exception { diff --git a/services/tests/servicestests/src/com/android/server/pm/PackageSettingBuilder.java b/services/tests/servicestests/src/com/android/server/pm/PackageSettingBuilder.java index 841cea2703ec..d12ea89469b7 100644 --- a/services/tests/servicestests/src/com/android/server/pm/PackageSettingBuilder.java +++ b/services/tests/servicestests/src/com/android/server/pm/PackageSettingBuilder.java @@ -18,10 +18,11 @@ package com.android.server.pm; import android.content.pm.PackageParser; import android.content.pm.PackageUserState; -import android.content.pm.parsing.AndroidPackage; import android.util.ArraySet; import android.util.SparseArray; +import com.android.server.pm.parsing.pkg.AndroidPackage; + import java.io.File; import java.util.Map; diff --git a/services/tests/servicestests/src/com/android/server/pm/ParallelPackageParserTest.java b/services/tests/servicestests/src/com/android/server/pm/ParallelPackageParserTest.java index 20f3f3e7f331..9d3ac1720930 100644 --- a/services/tests/servicestests/src/com/android/server/pm/ParallelPackageParserTest.java +++ b/services/tests/servicestests/src/com/android/server/pm/ParallelPackageParserTest.java @@ -17,6 +17,7 @@ package com.android.server.pm; import android.content.pm.PackageParser; +import android.platform.test.annotations.Presubmit; import android.util.Log; import androidx.test.runner.AndroidJUnit4; @@ -38,6 +39,7 @@ import java.util.concurrent.ExecutorService; /** * Tests for {@link ParallelPackageParser} */ +@Presubmit @RunWith(AndroidJUnit4.class) public class ParallelPackageParserTest { private static final String TAG = ParallelPackageParserTest.class.getSimpleName(); diff --git a/services/tests/servicestests/src/com/android/server/pm/SELinuxMMACTest.java b/services/tests/servicestests/src/com/android/server/pm/SELinuxMMACTest.java index 30108c67d920..efc1c057d8f4 100644 --- a/services/tests/servicestests/src/com/android/server/pm/SELinuxMMACTest.java +++ b/services/tests/servicestests/src/com/android/server/pm/SELinuxMMACTest.java @@ -22,12 +22,13 @@ import static org.mockito.ArgumentMatchers.argThat; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.when; -import android.content.pm.parsing.AndroidPackage; -import android.content.pm.parsing.PackageImpl; import android.os.Build; import android.platform.test.annotations.Presubmit; import com.android.server.compat.PlatformCompat; +import com.android.server.pm.parsing.pkg.AndroidPackage; +import com.android.server.pm.parsing.pkg.PackageImpl; +import com.android.server.pm.parsing.pkg.ParsedPackage; import org.junit.Test; import org.junit.runner.RunWith; @@ -79,9 +80,9 @@ public class SELinuxMMACTest { } private AndroidPackage makePackage(int targetSdkVersion) { - return PackageImpl.forParsing(PACKAGE_NAME) + return ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(targetSdkVersion) - .hideAsParsed() + .hideAsParsed()) .hideAsFinal(); } } diff --git a/services/tests/servicestests/src/com/android/server/pm/ScanRequestBuilder.java b/services/tests/servicestests/src/com/android/server/pm/ScanRequestBuilder.java index 11f154be688b..29ce2d0da599 100644 --- a/services/tests/servicestests/src/com/android/server/pm/ScanRequestBuilder.java +++ b/services/tests/servicestests/src/com/android/server/pm/ScanRequestBuilder.java @@ -16,10 +16,11 @@ package com.android.server.pm; -import android.content.pm.parsing.AndroidPackage; -import android.content.pm.parsing.ParsedPackage; import android.os.UserHandle; +import com.android.server.pm.parsing.pkg.AndroidPackage; +import com.android.server.pm.parsing.pkg.ParsedPackage; + class ScanRequestBuilder { private final ParsedPackage mPkg; private AndroidPackage mOldPkg; diff --git a/services/tests/servicestests/src/com/android/server/pm/ScanTests.java b/services/tests/servicestests/src/com/android/server/pm/ScanTests.java index 583cf5827367..e48c3f575fb0 100644 --- a/services/tests/servicestests/src/com/android/server/pm/ScanTests.java +++ b/services/tests/servicestests/src/com/android/server/pm/ScanTests.java @@ -42,9 +42,6 @@ import android.Manifest; import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.content.pm.SharedLibraryInfo; -import android.content.pm.parsing.PackageImpl; -import android.content.pm.parsing.PackageInfoUtils; -import android.content.pm.parsing.ParsedPackage; import android.content.pm.parsing.ParsingPackage; import android.content.res.TypedArray; import android.os.Environment; @@ -54,6 +51,10 @@ import android.platform.test.annotations.Presubmit; import android.util.Pair; import com.android.server.compat.PlatformCompat; +import com.android.server.pm.parsing.PackageInfoUtils; +import com.android.server.pm.parsing.pkg.AndroidPackage; +import com.android.server.pm.parsing.pkg.PackageImpl; +import com.android.server.pm.parsing.pkg.ParsedPackage; import org.hamcrest.BaseMatcher; import org.hamcrest.Description; @@ -101,18 +102,18 @@ public class ScanTests { @Before public void setupDefaultAbiBehavior() throws Exception { when(mMockPackageAbiHelper.derivePackageAbi( - any(ParsedPackage.class), nullable(String.class), anyBoolean())) + any(AndroidPackage.class), nullable(String.class), anyBoolean())) .thenReturn(new Pair<>( new PackageAbiHelper.Abis("derivedPrimary", "derivedSecondary"), new PackageAbiHelper.NativeLibraryPaths( "derivedRootDir", true, "derivedNativeDir", "derivedNativeDir2"))); when(mMockPackageAbiHelper.getNativeLibraryPaths( - any(ParsedPackage.class), any(File.class))) + any(AndroidPackage.class), any(File.class))) .thenReturn(new PackageAbiHelper.NativeLibraryPaths( "getRootDir", true, "getNativeDir", "getNativeDir2" )); when(mMockPackageAbiHelper.getBundledAppAbis( - any(ParsedPackage.class))) + any(AndroidPackage.class))) .thenReturn(new PackageAbiHelper.Abis("bundledPrimary", "bundledSecondary")); } @@ -223,10 +224,10 @@ public class ScanTests { @Test public void installStaticSharedLibrary() throws Exception { - final ParsedPackage pkg = createBasicPackage("static.lib.pkg") + final ParsedPackage pkg = ((ParsedPackage) createBasicPackage("static.lib.pkg") .setStaticSharedLibName("static.lib") .setStaticSharedLibVersion(123L) - .hideAsParsed() + .hideAsParsed()) .setPackageName("static.lib.pkg.123") .setVersionCodeMajor(1) .setVersionCode(234) @@ -255,10 +256,11 @@ public class ScanTests { @Test public void installDynamicLibraries() throws Exception { - final ParsedPackage pkg = createBasicPackage("dynamic.lib.pkg") + final ParsedPackage pkg = ((ParsedPackage) createBasicPackage( + "dynamic.lib.pkg") .addLibraryName("liba") .addLibraryName("libb") - .hideAsParsed() + .hideAsParsed()) .setVersionCodeMajor(1) .setVersionCode(234) .setBaseCodePath("/some/path.apk") @@ -304,9 +306,9 @@ public class ScanTests { .setVolumeUuid("someUuid") .build(); - final ParsedPackage basicPackage = createBasicPackage(DUMMY_PACKAGE_NAME) - .hideAsParsed() - .setApplicationVolumeUuid(UUID_TWO.toString()); + final ParsedPackage basicPackage = ((ParsedPackage) createBasicPackage(DUMMY_PACKAGE_NAME) + .setVolumeUuid(UUID_TWO.toString()) + .hideAsParsed()); final PackageManagerService.ScanResult scanResult = executeScan( @@ -321,8 +323,8 @@ public class ScanTests { createBasicPackageSettingBuilder(DUMMY_PACKAGE_NAME).build(); final ParsedPackage basicPackage = - createBasicPackage(DUMMY_PACKAGE_NAME) - .hideAsParsed() + ((ParsedPackage) createBasicPackage(DUMMY_PACKAGE_NAME) + .hideAsParsed()) .setCpuAbiOverride("testOverride"); @@ -341,7 +343,7 @@ public class ScanTests { createBasicPackageSettingBuilder("original.package").build(); final ParsedPackage basicPackage = - createBasicPackage(DUMMY_PACKAGE_NAME) + (ParsedPackage) createBasicPackage(DUMMY_PACKAGE_NAME) .hideAsParsed(); @@ -432,8 +434,8 @@ public class ScanTests { @Test public void scanSystemApp_isOrphanedTrue() throws Exception { - final ParsedPackage pkg = createBasicPackage(DUMMY_PACKAGE_NAME) - .hideAsParsed() + final ParsedPackage pkg = ((ParsedPackage) createBasicPackage(DUMMY_PACKAGE_NAME) + .hideAsParsed()) .setSystem(true); final PackageManagerService.ScanRequest scanRequest = @@ -474,10 +476,6 @@ public class ScanTests { System.currentTimeMillis()); } - private static String createResourcePath(String packageName) { - return "/data/app/" + packageName + "-randompath/base.apk"; - } - private static String createCodePath(String packageName) { return "/data/app/" + packageName + "-randompath"; } @@ -486,11 +484,11 @@ public class ScanTests { return new PackageSettingBuilder() .setName(packageName) .setCodePath(createCodePath(packageName)) - .setResourcePath(createResourcePath(packageName)); + .setResourcePath(createCodePath(packageName)); } private static ScanRequestBuilder createBasicScanRequestBuilder(ParsingPackage pkg) { - return new ScanRequestBuilder(pkg.hideAsParsed()) + return new ScanRequestBuilder((ParsedPackage) pkg.hideAsParsed()) .setUser(UserHandle.of(0)); } @@ -501,16 +499,15 @@ public class ScanTests { private static ParsingPackage createBasicPackage(String packageName) { // TODO(b/135203078): Make this use PackageImpl.forParsing and separate the steps - return new PackageImpl(packageName, null, mock(TypedArray.class), false) - .setCodePath("/data/tmp/randompath") - .setApplicationInfoCodePath(createCodePath(packageName)) - .setApplicationInfoResourcePath(createResourcePath(packageName)) - .setApplicationVolumeUuid(UUID_ONE.toString()) - .setBaseCodePath("/data/tmp/randompath/base.apk") + return (ParsingPackage) ((ParsedPackage) new PackageImpl(packageName, + "/data/tmp/randompath/base.apk", createCodePath(packageName), + mock(TypedArray.class), false) + .setVolumeUuid(UUID_ONE.toString()) .addUsesStaticLibrary("some.static.library") .addUsesStaticLibraryVersion(234L) .addUsesStaticLibrary("some.other.static.library") .addUsesStaticLibraryVersion(456L) + .hideAsParsed()) .setNativeLibraryRootDir("/data/tmp/randompath/base.apk:/lib") .setVersionCodeMajor(1) .setVersionCode(2345); @@ -537,7 +534,7 @@ public class ScanTests { assertThat(pkgSetting.usesStaticLibrariesVersions, is(new long[]{234L, 456L})); assertThat(pkgSetting.pkg, is(scanResult.request.parsedPackage)); assertThat(pkgSetting.codePath, is(new File(createCodePath(packageName)))); - assertThat(pkgSetting.resourcePath, is(new File(createResourcePath(packageName)))); + assertThat(pkgSetting.resourcePath, is(new File(createCodePath(packageName)))); assertThat(pkgSetting.versionCode, is(PackageInfo.composeLongVersionCode(1, 2345))); } diff --git a/services/tests/servicestests/src/com/android/server/pm/UserSystemPackageInstallerTest.java b/services/tests/servicestests/src/com/android/server/pm/UserSystemPackageInstallerTest.java index 3db832b24236..ce210990ac28 100644 --- a/services/tests/servicestests/src/com/android/server/pm/UserSystemPackageInstallerTest.java +++ b/services/tests/servicestests/src/com/android/server/pm/UserSystemPackageInstallerTest.java @@ -39,8 +39,6 @@ import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.UserInfo; -import android.content.pm.parsing.AndroidPackage; -import android.content.pm.parsing.PackageImpl; import android.os.Looper; import android.os.SystemProperties; import android.os.UserManager; @@ -56,6 +54,9 @@ import androidx.test.runner.AndroidJUnit4; import com.android.server.LocalServices; import com.android.server.SystemConfig; +import com.android.server.pm.parsing.pkg.AndroidPackage; +import com.android.server.pm.parsing.pkg.PackageImpl; +import com.android.server.pm.parsing.pkg.ParsedPackage; import org.junit.After; import org.junit.Before; @@ -252,14 +253,14 @@ public class UserSystemPackageInstallerTest { final Set<String> userWhitelist = new ArraySet<>(); userWhitelist.add(packageName1); - final AndroidPackage pkg1 = PackageImpl.forParsing(packageName1) - .hideAsParsed().hideAsFinal(); - final AndroidPackage pkg2 = PackageImpl.forParsing(packageName2) - .hideAsParsed().hideAsFinal(); - final AndroidPackage pkg3 = PackageImpl.forParsing(packageName3) - .hideAsParsed().hideAsFinal(); - final AndroidPackage pkg4 = PackageImpl.forParsing(packageName4) - .hideAsParsed().hideAsFinal(); + final AndroidPackage pkg1 = ((ParsedPackage) PackageImpl.forTesting(packageName1) + .hideAsParsed()).hideAsFinal(); + final AndroidPackage pkg2 = ((ParsedPackage) PackageImpl.forTesting(packageName2) + .hideAsParsed()).hideAsFinal(); + final AndroidPackage pkg3 = ((ParsedPackage) PackageImpl.forTesting(packageName3) + .hideAsParsed()).hideAsFinal(); + final AndroidPackage pkg4 = ((ParsedPackage) PackageImpl.forTesting(packageName4) + .hideAsParsed()).hideAsFinal(); // No implicit whitelist, so only install pkg1. boolean implicit = false; diff --git a/core/tests/coretests/src/android/content/pm/dex/DexMetadataHelperTest.java b/services/tests/servicestests/src/com/android/server/pm/dex/DexMetadataHelperTest.java index 1e0bfb08693f..f87f68d4942f 100644 --- a/core/tests/coretests/src/android/content/pm/dex/DexMetadataHelperTest.java +++ b/services/tests/servicestests/src/com/android/server/pm/dex/DexMetadataHelperTest.java @@ -1,5 +1,5 @@ -/** - * Copyright (C) 2018 The Android Open Source Project +/* + * Copyright (C) 2020 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,7 +14,7 @@ * limitations under the License. */ -package android.content.pm.dex; +package com.android.server.pm.dex; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; @@ -27,14 +27,17 @@ import android.content.pm.PackageParser; import android.content.pm.PackageParser.ApkLite; import android.content.pm.PackageParser.PackageLite; import android.content.pm.PackageParser.PackageParserException; -import android.content.pm.parsing.ParsedPackage; +import android.content.pm.dex.DexMetadataHelper; import android.os.FileUtils; import androidx.test.InstrumentationRegistry; import androidx.test.filters.SmallTest; import androidx.test.runner.AndroidJUnit4; -import com.android.frameworks.coretests.R; +import com.android.frameworks.servicestests.R; +import com.android.server.pm.parsing.PackageParser2; +import com.android.server.pm.parsing.pkg.AndroidPackageUtils; +import com.android.server.pm.parsing.pkg.ParsedPackage; import org.junit.Assert; import org.junit.Before; @@ -90,13 +93,17 @@ public class DexMetadataHelperTest { return outFile; } + private PackageParser2 makeParser() { + return new PackageParser2(null, false, null, null, null); + } + @Test public void testParsePackageWithDmFileValid() throws IOException, PackageParserException { copyApkToToTmpDir("install_split_base.apk", R.raw.install_split_base); createDexMetadataFile("install_split_base.apk"); - ParsedPackage pkg = new PackageParser().parseParsedPackage(mTmpDir, 0 /* flags */, false); + ParsedPackage pkg = makeParser().parsePackage(mTmpDir, 0 /* flags */, false); - Map<String, String> packageDexMetadata = DexMetadataHelper.getPackageDexMetadata(pkg); + Map<String, String> packageDexMetadata = AndroidPackageUtils.getPackageDexMetadata(pkg); assertEquals(1, packageDexMetadata.size()); String baseDexMetadata = packageDexMetadata.get(pkg.getBaseCodePath()); assertNotNull(baseDexMetadata); @@ -110,9 +117,9 @@ public class DexMetadataHelperTest { copyApkToToTmpDir("install_split_feature_a.apk", R.raw.install_split_feature_a); createDexMetadataFile("install_split_base.apk"); createDexMetadataFile("install_split_feature_a.apk"); - ParsedPackage pkg = new PackageParser().parseParsedPackage(mTmpDir, 0 /* flags */, false); + ParsedPackage pkg = makeParser().parsePackage(mTmpDir, 0 /* flags */, false); - Map<String, String> packageDexMetadata = DexMetadataHelper.getPackageDexMetadata(pkg); + Map<String, String> packageDexMetadata = AndroidPackageUtils.getPackageDexMetadata(pkg); assertEquals(2, packageDexMetadata.size()); String baseDexMetadata = packageDexMetadata.get(pkg.getBaseCodePath()); assertNotNull(baseDexMetadata); @@ -129,9 +136,9 @@ public class DexMetadataHelperTest { copyApkToToTmpDir("install_split_base.apk", R.raw.install_split_base); copyApkToToTmpDir("install_split_feature_a.apk", R.raw.install_split_feature_a); createDexMetadataFile("install_split_feature_a.apk"); - ParsedPackage pkg = new PackageParser().parseParsedPackage(mTmpDir, 0 /* flags */, false); + ParsedPackage pkg = makeParser().parsePackage(mTmpDir, 0 /* flags */, false); - Map<String, String> packageDexMetadata = DexMetadataHelper.getPackageDexMetadata(pkg); + Map<String, String> packageDexMetadata = AndroidPackageUtils.getPackageDexMetadata(pkg); assertEquals(1, packageDexMetadata.size()); String splitDexMetadata = packageDexMetadata.get(pkg.getSplitCodePaths()[0]); @@ -145,9 +152,8 @@ public class DexMetadataHelperTest { File invalidDmFile = new File(mTmpDir, "install_split_base.dm"); Files.createFile(invalidDmFile.toPath()); try { - ParsedPackage pkg = new PackageParser() - .parseParsedPackage(mTmpDir, 0 /* flags */, false); - DexMetadataHelper.validatePackageDexMetadata(pkg); + ParsedPackage pkg = makeParser().parsePackage(mTmpDir, 0 /* flags */, false); + AndroidPackageUtils.validatePackageDexMetadata(pkg); } catch (PackageParserException e) { assertEquals(e.error, PackageManager.INSTALL_FAILED_BAD_DEX_METADATA); } @@ -163,9 +169,8 @@ public class DexMetadataHelperTest { Files.createFile(invalidDmFile.toPath()); try { - ParsedPackage pkg = new PackageParser() - .parseParsedPackage(mTmpDir, 0 /* flags */, false); - DexMetadataHelper.validatePackageDexMetadata(pkg); + ParsedPackage pkg = makeParser().parsePackage(mTmpDir, 0 /* flags */, false); + AndroidPackageUtils.validatePackageDexMetadata(pkg); } catch (PackageParserException e) { assertEquals(e.error, PackageManager.INSTALL_FAILED_BAD_DEX_METADATA); } diff --git a/services/tests/servicestests/src/com/android/server/pm/dex/DexoptUtilsTest.java b/services/tests/servicestests/src/com/android/server/pm/dex/DexoptUtilsTest.java index 66a4946ecc20..3846be09a6c1 100644 --- a/services/tests/servicestests/src/com/android/server/pm/dex/DexoptUtilsTest.java +++ b/services/tests/servicestests/src/com/android/server/pm/dex/DexoptUtilsTest.java @@ -23,15 +23,16 @@ import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import android.content.pm.SharedLibraryInfo; -import android.content.pm.parsing.AndroidPackage; -import android.content.pm.parsing.PackageImpl; -import android.content.pm.parsing.ParsedPackage; import android.content.pm.parsing.ParsingPackage; import android.util.SparseArray; import androidx.test.filters.SmallTest; import androidx.test.runner.AndroidJUnit4; +import com.android.server.pm.parsing.pkg.AndroidPackage; +import com.android.server.pm.parsing.pkg.PackageImpl; +import com.android.server.pm.parsing.pkg.ParsedPackage; + import dalvik.system.DelegateLastClassLoader; import dalvik.system.DexClassLoader; import dalvik.system.PathClassLoader; @@ -61,7 +62,8 @@ public class DexoptUtilsTest { private TestData createMockApplicationInfo(String baseClassLoader, boolean addSplits, boolean addSplitDependencies, boolean isolatedSplitLoading) { String codeDir = "/data/app/mock.android.com"; - ParsingPackage parsingPackage = PackageImpl.forParsing("mock.android.com") + ParsingPackage parsingPackage = PackageImpl.forTesting("mock.android.com", + codeDir + "/base.dex") .setClassLoaderName(baseClassLoader); parsingPackage.setIsolatedSplitLoading(isolatedSplitLoading); @@ -122,8 +124,7 @@ public class DexoptUtilsTest { .setSplitClassLoaderName(7, null); } - ParsedPackage parsedPackage = parsingPackage.hideAsParsed() - .setBaseCodePath(codeDir + "/base.dex"); + ParsedPackage parsedPackage = (ParsedPackage) parsingPackage.hideAsParsed(); TestData data = new TestData(); data.pkg = parsedPackage.hideAsFinal(); diff --git a/services/tests/servicestests/src/com/android/server/pm/parsing/AndroidPackageInfoFlagBehaviorTest.kt b/services/tests/servicestests/src/com/android/server/pm/parsing/AndroidPackageInfoFlagBehaviorTest.kt index 27d02e194540..0a32e4a53284 100644 --- a/services/tests/servicestests/src/com/android/server/pm/parsing/AndroidPackageInfoFlagBehaviorTest.kt +++ b/services/tests/servicestests/src/com/android/server/pm/parsing/AndroidPackageInfoFlagBehaviorTest.kt @@ -20,9 +20,10 @@ import android.content.pm.ApplicationInfo import android.content.pm.PackageInfo import android.content.pm.PackageManager import android.content.pm.PackageParser -import android.content.pm.parsing.AndroidPackage +import android.platform.test.annotations.Presubmit import com.android.server.pm.parsing.AndroidPackageInfoFlagBehaviorTest.Companion.Param.Companion.appInfo import com.android.server.pm.parsing.AndroidPackageInfoFlagBehaviorTest.Companion.Param.Companion.pkgInfo +import com.android.server.pm.parsing.pkg.AndroidPackage import com.google.common.truth.Truth.assertThat import com.google.common.truth.Truth.assertWithMessage import org.junit.Test @@ -36,6 +37,7 @@ import org.junit.runners.Parameterized * This test has to be updated manually whenever the info generation behavior changes, since * there's no single place where flag -> field is defined besides this test. */ +@Presubmit @RunWith(Parameterized::class) class AndroidPackageInfoFlagBehaviorTest : AndroidPackageParsingTestBase() { diff --git a/services/tests/servicestests/src/com/android/server/pm/parsing/AndroidPackageParsingEquivalenceTest.kt b/services/tests/servicestests/src/com/android/server/pm/parsing/AndroidPackageParsingEquivalenceTest.kt index 925af7fba82a..191c038c3052 100644 --- a/services/tests/servicestests/src/com/android/server/pm/parsing/AndroidPackageParsingEquivalenceTest.kt +++ b/services/tests/servicestests/src/com/android/server/pm/parsing/AndroidPackageParsingEquivalenceTest.kt @@ -17,6 +17,7 @@ package com.android.server.pm.parsing import android.content.pm.PackageManager +import android.platform.test.annotations.Presubmit import com.google.common.truth.Truth.assertWithMessage import org.junit.Test @@ -24,6 +25,7 @@ import org.junit.Test * Collects APKs from the device and verifies that the new parsing behavior outputs * the same exposed Info object as the old parsing logic. */ +@Presubmit class AndroidPackageParsingEquivalenceTest : AndroidPackageParsingTestBase() { @Test diff --git a/services/tests/servicestests/src/com/android/server/pm/parsing/AndroidPackageParsingTestBase.kt b/services/tests/servicestests/src/com/android/server/pm/parsing/AndroidPackageParsingTestBase.kt index afd6e1851cde..5b9fbd8697ac 100644 --- a/services/tests/servicestests/src/com/android/server/pm/parsing/AndroidPackageParsingTestBase.kt +++ b/services/tests/servicestests/src/com/android/server/pm/parsing/AndroidPackageParsingTestBase.kt @@ -27,14 +27,12 @@ import android.content.pm.PackageParser import android.content.pm.PackageUserState import android.content.pm.PermissionInfo import android.content.pm.ProviderInfo -import android.content.pm.parsing.AndroidPackage -import android.content.pm.parsing.PackageImpl -import android.content.pm.parsing.PackageInfoUtils import android.os.Debug import android.os.Environment import android.util.SparseArray import androidx.test.platform.app.InstrumentationRegistry import com.android.server.pm.PackageManagerService +import com.android.server.pm.parsing.pkg.AndroidPackage import org.junit.BeforeClass import org.mockito.Mockito import java.io.File @@ -43,10 +41,7 @@ open class AndroidPackageParsingTestBase { companion object { - /** - * By default, don't parse all APKs on device, only the framework one. - * Toggle this manually if working on package parsing. - */ + // TODO(chiuwinson): Enable in separate change to fail all presubmit builds and fix errors private const val VERIFY_ALL_APKS = false /** For auditing memory usage differences */ @@ -59,6 +54,11 @@ open class AndroidPackageParsingTestBase { setCallback { true } } + protected val packageParser2 = PackageParser2(null, false, context.resources.displayMetrics, + null, object : PackageParser2.Callback() { + override fun hasFeature(feature: String?) = true + }) + /** * It would be difficult to mock all possibilities, so just use the APKs on device. * Unfortunately, this means the device must be bootable to verify potentially @@ -98,7 +98,7 @@ open class AndroidPackageParsingTestBase { } this.newPackages = apks.map { - packageParser.parseParsedPackage(it, PackageParser.PARSE_IS_SYSTEM_DIR, false) + packageParser2.parsePackage(it, PackageParser.PARSE_IS_SYSTEM_DIR, false) } if (DUMP_HPROF_TO_EXTERNAL) { diff --git a/core/tests/coretests/src/android/content/pm/PackageParserTest.java b/services/tests/servicestests/src/com/android/server/pm/parsing/PackageParserLegacyCoreTest.java index 46e992ee9362..ec4776da4914 100644 --- a/core/tests/coretests/src/android/content/pm/PackageParserTest.java +++ b/services/tests/servicestests/src/com/android/server/pm/parsing/PackageParserLegacyCoreTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2016 The Android Open Source Project + * Copyright (C) 2020 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,7 +14,7 @@ * limitations under the License. */ -package android.content.pm; +package com.android.server.pm.parsing; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; @@ -24,21 +24,26 @@ import static org.junit.Assert.fail; import android.apex.ApexInfo; import android.content.Context; -import android.content.pm.parsing.AndroidPackage; +import android.content.pm.ApplicationInfo; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; +import android.content.pm.PackageParser; +import android.content.pm.PermissionInfo; import android.content.pm.parsing.ComponentParseUtils.ParsedComponent; import android.content.pm.parsing.ComponentParseUtils.ParsedPermission; -import android.content.pm.parsing.ParsedPackage; import android.os.Build; import android.os.Bundle; import android.os.FileUtils; -import android.util.Log; +import android.platform.test.annotations.Presubmit; import androidx.test.InstrumentationRegistry; import androidx.test.filters.SmallTest; import androidx.test.runner.AndroidJUnit4; -import com.android.frameworks.coretests.R; +import com.android.frameworks.servicestests.R; import com.android.internal.util.ArrayUtils; +import com.android.server.pm.parsing.pkg.AndroidPackage; +import com.android.server.pm.parsing.pkg.ParsedPackage; import org.junit.Test; import org.junit.runner.RunWith; @@ -47,9 +52,19 @@ import java.io.File; import java.io.InputStream; import java.util.function.Function; +/** + * {@link ParsedPackage} was moved to the server, so this test moved along with it. + * + * This should be eventually refactored to a comprehensive parsing test, combined with its + * server variant in the parent package. + * + * TODO(b/135203078): Remove this test and replicate the cases in the actual com.android.server + * variant. + */ +@Presubmit @SmallTest @RunWith(AndroidJUnit4.class) -public class PackageParserTest { +public class PackageParserLegacyCoreTest { private static final String RELEASED = null; private static final String OLDER_PRE_RELEASE = "A"; private static final String PRE_RELEASE = "B"; @@ -87,6 +102,10 @@ public class PackageParserTest { } } + private PackageParser2 makeParser() { + return new PackageParser2(null, false, null, null, null); + } + @Test public void testComputeMinSdkVersion_preReleasePlatform() { // Do allow older release minSdkVersion on pre-release platform. @@ -339,7 +358,7 @@ public class PackageParserTest { try { outFile = copyRawResourceToFile(apkFileName, apkResourceId); return converter.apply( - new PackageParser().parseParsedPackage(outFile, 0 /* flags */, false)); + makeParser().parsePackage(outFile, 0 /* flags */, false)); } finally { if (outFile != null) { outFile.delete(); @@ -406,7 +425,7 @@ public class PackageParserTest { @Test public void testPackageWithComponents_cached() throws Exception { checkPackageWithComponents(p -> - PackageParser.fromCacheEntryStatic(PackageParser.toCacheEntryStatic(p))); + PackageCacher.fromCacheEntryStatic(PackageCacher.toCacheEntryStatic(p))); } private void checkPackageWithComponents( @@ -426,7 +445,7 @@ public class PackageParserTest { assertOneComponentOfEachType("com.android.frameworks.coretests.Test%s", p); - assertMetadata(p.getAppMetaData(), + assertMetadata(p.getMetaData(), "key1", "value1", "key2", "this_is_app"); assertMetadata(p.getActivities().get(0).getMetaData(), @@ -466,7 +485,7 @@ public class PackageParserTest { @Test public void testPackageWithIntentFilters_cached() throws Exception { checkPackageWithIntentFilters(p -> - PackageParser.fromCacheEntryStatic(PackageParser.toCacheEntryStatic(p))); + PackageCacher.fromCacheEntryStatic(PackageCacher.toCacheEntryStatic(p))); } private void checkPackageWithIntentFilters( @@ -474,13 +493,12 @@ public class PackageParserTest { ParsedPackage p = parsePackage( "install_intent_filters.apk", R.raw.install_intent_filters, converter); - String packageName = "com.android.frameworks.coretests.install_intent_filters"; + String packageName = "com.android.frameworks.servicestests.install_intent_filters"; assertEquals(packageName, p.getPackageName()); findAndRemoveAppDetailsActivity(p); - Log.e("ParserTest", "" + p.getActivities()); assertEquals("Expected exactly one activity", 1, p.getActivities().size()); assertEquals("Expected exactly one intent filter", 1, p.getActivities().get(0).intents.size()); diff --git a/core/tests/coretests/src/android/content/pm/parsing/library/AndroidHidlUpdaterTest.java b/services/tests/servicestests/src/com/android/server/pm/parsing/library/AndroidHidlUpdaterTest.java index 21479c096752..6b600421666e 100644 --- a/core/tests/coretests/src/android/content/pm/parsing/library/AndroidHidlUpdaterTest.java +++ b/services/tests/servicestests/src/com/android/server/pm/parsing/library/AndroidHidlUpdaterTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2019 The Android Open Source Project + * Copyright (C) 2020 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,25 +14,28 @@ * limitations under the License. */ -package android.content.pm.parsing.library; +package com.android.server.pm.parsing.library; -import static android.content.pm.parsing.library.SharedLibraryNames.ANDROID_HIDL_BASE; -import static android.content.pm.parsing.library.SharedLibraryNames.ANDROID_HIDL_MANAGER; +import static com.android.server.pm.parsing.library.SharedLibraryNames.ANDROID_HIDL_BASE; +import static com.android.server.pm.parsing.library.SharedLibraryNames.ANDROID_HIDL_MANAGER; -import android.content.pm.parsing.AndroidPackage; -import android.content.pm.parsing.PackageImpl; -import android.content.pm.parsing.ParsedPackage; import android.os.Build; +import android.platform.test.annotations.Presubmit; import androidx.test.filters.SmallTest; +import com.android.server.pm.parsing.pkg.AndroidPackage; +import com.android.server.pm.parsing.pkg.PackageImpl; +import com.android.server.pm.parsing.pkg.ParsedPackage; + import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; /** - * Test for {@link AndroidHidlUpdater} + * Test for {@link com.android.server.pm.parsing.library.AndroidHidlUpdater} */ +@Presubmit @SmallTest @RunWith(JUnit4.class) public class AndroidHidlUpdaterTest extends PackageSharedLibraryUpdaterTest { @@ -41,13 +44,13 @@ public class AndroidHidlUpdaterTest extends PackageSharedLibraryUpdaterTest { @Test public void targeted_at_P() { - ParsedPackage before = PackageImpl.forParsing(PACKAGE_NAME) + ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.P) - .hideAsParsed(); + .hideAsParsed()); - AndroidPackage after = PackageImpl.forParsing(PACKAGE_NAME) + AndroidPackage after = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.P) - .hideAsParsed() + .hideAsParsed()) .hideAsFinal(); // no change, not system @@ -56,17 +59,17 @@ public class AndroidHidlUpdaterTest extends PackageSharedLibraryUpdaterTest { @Test public void targeted_at_P_system() { - ParsedPackage before = PackageImpl.forParsing(PACKAGE_NAME) + ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.P) - .hideAsParsed() + .hideAsParsed()) .setSystem(true); // Should add both HIDL libraries - AndroidPackage after = PackageImpl.forParsing(PACKAGE_NAME) + AndroidPackage after = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.P) .addUsesLibrary(ANDROID_HIDL_MANAGER) .addUsesLibrary(ANDROID_HIDL_BASE) - .hideAsParsed() + .hideAsParsed()) .setSystem(true) .hideAsFinal(); @@ -75,15 +78,15 @@ public class AndroidHidlUpdaterTest extends PackageSharedLibraryUpdaterTest { @Test public void targeted_at_P_not_empty_usesLibraries() { - ParsedPackage before = PackageImpl.forParsing(PACKAGE_NAME) + ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.P) .addUsesLibrary(OTHER_LIBRARY) - .hideAsParsed(); + .hideAsParsed()); - AndroidPackage after = PackageImpl.forParsing(PACKAGE_NAME) + AndroidPackage after = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.P) .addUsesLibrary(OTHER_LIBRARY) - .hideAsParsed() + .hideAsParsed()) .hideAsFinal(); // no change, not system @@ -92,20 +95,20 @@ public class AndroidHidlUpdaterTest extends PackageSharedLibraryUpdaterTest { @Test public void targeted_at_P_not_empty_usesLibraries_system() { - ParsedPackage before = PackageImpl.forParsing(PACKAGE_NAME) + ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.P) .addUsesLibrary(OTHER_LIBRARY) - .hideAsParsed() + .hideAsParsed()) .setSystem(true); // The hidl jars should be added at the start of the list because it // is not on the bootclasspath and the package targets pre-P. - AndroidPackage after = PackageImpl.forParsing(PACKAGE_NAME) + AndroidPackage after = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.P) .addUsesLibrary(ANDROID_HIDL_MANAGER) .addUsesLibrary(ANDROID_HIDL_BASE) .addUsesLibrary(OTHER_LIBRARY) - .hideAsParsed() + .hideAsParsed()) .setSystem(true) .hideAsFinal(); @@ -114,15 +117,15 @@ public class AndroidHidlUpdaterTest extends PackageSharedLibraryUpdaterTest { @Test public void targeted_at_P_in_usesLibraries() { - ParsedPackage before = PackageImpl.forParsing(PACKAGE_NAME) + ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.P) .addUsesLibrary(ANDROID_HIDL_MANAGER) .addUsesLibrary(ANDROID_HIDL_BASE) - .hideAsParsed(); + .hideAsParsed()); - AndroidPackage after = PackageImpl.forParsing(PACKAGE_NAME) + AndroidPackage after = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.P) - .hideAsParsed() + .hideAsParsed()) .hideAsFinal(); // Libraries are removed because they are not available for non-system apps @@ -131,18 +134,18 @@ public class AndroidHidlUpdaterTest extends PackageSharedLibraryUpdaterTest { @Test public void targeted_at_P_in_usesLibraries_system() { - ParsedPackage before = PackageImpl.forParsing(PACKAGE_NAME) + ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.P) .addUsesLibrary(ANDROID_HIDL_MANAGER) .addUsesLibrary(ANDROID_HIDL_BASE) - .hideAsParsed() + .hideAsParsed()) .setSystem(true); - AndroidPackage after = PackageImpl.forParsing(PACKAGE_NAME) + AndroidPackage after = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.P) .addUsesLibrary(ANDROID_HIDL_MANAGER) .addUsesLibrary(ANDROID_HIDL_BASE) - .hideAsParsed() + .hideAsParsed()) .setSystem(true) .hideAsFinal(); @@ -153,15 +156,15 @@ public class AndroidHidlUpdaterTest extends PackageSharedLibraryUpdaterTest { @Test public void in_usesLibraries() { - ParsedPackage before = PackageImpl.forParsing(PACKAGE_NAME) + ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT) .addUsesLibrary(ANDROID_HIDL_BASE) - .hideAsParsed(); + .hideAsParsed()); // Dependency is removed, it is not available. - AndroidPackage after = PackageImpl.forParsing(PACKAGE_NAME) + AndroidPackage after = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT) - .hideAsParsed() + .hideAsParsed()) .hideAsFinal(); // Libraries are removed because they are not available for apps targeting Q+ @@ -170,15 +173,15 @@ public class AndroidHidlUpdaterTest extends PackageSharedLibraryUpdaterTest { @Test public void in_usesOptionalLibraries() { - ParsedPackage before = PackageImpl.forParsing(PACKAGE_NAME) + ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT) .addUsesOptionalLibrary(ANDROID_HIDL_BASE) - .hideAsParsed(); + .hideAsParsed()); // Dependency is removed, it is not available. - AndroidPackage after = PackageImpl.forParsing(PACKAGE_NAME) + AndroidPackage after = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT) - .hideAsParsed() + .hideAsParsed()) .hideAsFinal(); // Libraries are removed because they are not available for apps targeting Q+ diff --git a/core/tests/coretests/src/android/content/pm/parsing/library/AndroidTestBaseUpdaterTest.java b/services/tests/servicestests/src/com/android/server/pm/parsing/library/AndroidTestBaseUpdaterTest.java index 65ae219058f4..083d4ac32902 100644 --- a/core/tests/coretests/src/android/content/pm/parsing/library/AndroidTestBaseUpdaterTest.java +++ b/services/tests/servicestests/src/com/android/server/pm/parsing/library/AndroidTestBaseUpdaterTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2019 The Android Open Source Project + * Copyright (C) 2020 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,24 +14,26 @@ * limitations under the License. */ -package android.content.pm.parsing.library; +package com.android.server.pm.parsing.library; -import static android.content.pm.parsing.library.SharedLibraryNames.ANDROID_TEST_BASE; +import static com.android.server.pm.parsing.library.SharedLibraryNames.ANDROID_TEST_BASE; -import android.content.pm.OptionalClassRunner; -import android.content.pm.parsing.AndroidPackage; -import android.content.pm.parsing.PackageImpl; -import android.content.pm.parsing.ParsedPackage; import android.os.Build; +import android.platform.test.annotations.Presubmit; import androidx.test.filters.SmallTest; +import com.android.server.pm.parsing.pkg.AndroidPackage; +import com.android.server.pm.parsing.pkg.PackageImpl; +import com.android.server.pm.parsing.pkg.ParsedPackage; + import org.junit.Test; import org.junit.runner.RunWith; /** * Test for {@link AndroidTestBaseUpdater} */ +@Presubmit @SmallTest @RunWith(OptionalClassRunner.class) @OptionalClassRunner.OptionalClass("android.content.pm.parsing.library.AndroidTestBaseUpdater") @@ -41,15 +43,15 @@ public class AndroidTestBaseUpdaterTest extends PackageSharedLibraryUpdaterTest @Test public void targeted_at_Q() { - ParsedPackage before = PackageImpl.forParsing(PACKAGE_NAME) + ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.Q) - .hideAsParsed(); + .hideAsParsed()); // Should add org.apache.http.legacy. - AndroidPackage after = PackageImpl.forParsing(PACKAGE_NAME) + AndroidPackage after = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.Q) .addUsesLibrary(ANDROID_TEST_BASE) - .hideAsParsed() + .hideAsParsed()) .hideAsFinal(); checkBackwardsCompatibility(before, after); @@ -57,18 +59,18 @@ public class AndroidTestBaseUpdaterTest extends PackageSharedLibraryUpdaterTest @Test public void targeted_at_Q_not_empty_usesLibraries() { - ParsedPackage before = PackageImpl.forParsing(PACKAGE_NAME) + ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.Q) .addUsesLibrary(OTHER_LIBRARY) - .hideAsParsed(); + .hideAsParsed()); // The org.apache.http.legacy jar should be added at the start of the list because it // is not on the bootclasspath and the package targets pre-Q. - AndroidPackage after = PackageImpl.forParsing(PACKAGE_NAME) + AndroidPackage after = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.Q) .addUsesLibrary(ANDROID_TEST_BASE) .addUsesLibrary(OTHER_LIBRARY) - .hideAsParsed() + .hideAsParsed()) .hideAsFinal(); checkBackwardsCompatibility(before, after); @@ -76,15 +78,15 @@ public class AndroidTestBaseUpdaterTest extends PackageSharedLibraryUpdaterTest @Test public void targeted_at_Q_in_usesLibraries() { - ParsedPackage before = PackageImpl.forParsing(PACKAGE_NAME) + ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.Q) .addUsesLibrary(ANDROID_TEST_BASE) - .hideAsParsed(); + .hideAsParsed()); - AndroidPackage after = PackageImpl.forParsing(PACKAGE_NAME) + AndroidPackage after = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.Q) .addUsesLibrary(ANDROID_TEST_BASE) - .hideAsParsed() + .hideAsParsed()) .hideAsFinal(); // No change is required because although org.apache.http.legacy has been removed from @@ -94,15 +96,15 @@ public class AndroidTestBaseUpdaterTest extends PackageSharedLibraryUpdaterTest @Test public void targeted_at_Q_in_usesOptionalLibraries() { - ParsedPackage before = PackageImpl.forParsing(PACKAGE_NAME) + ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.Q) .addUsesOptionalLibrary(ANDROID_TEST_BASE) - .hideAsParsed(); + .hideAsParsed()); - AndroidPackage after = PackageImpl.forParsing(PACKAGE_NAME) + AndroidPackage after = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.Q) .addUsesOptionalLibrary(ANDROID_TEST_BASE) - .hideAsParsed() + .hideAsParsed()) .hideAsFinal(); // No change is required because although org.apache.http.legacy has been removed from @@ -112,15 +114,15 @@ public class AndroidTestBaseUpdaterTest extends PackageSharedLibraryUpdaterTest @Test public void in_usesLibraries() { - ParsedPackage before = PackageImpl.forParsing(PACKAGE_NAME) + ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT) .addUsesLibrary(ANDROID_TEST_BASE) - .hideAsParsed(); + .hideAsParsed()); - AndroidPackage after = PackageImpl.forParsing(PACKAGE_NAME) + AndroidPackage after = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT) .addUsesLibrary(ANDROID_TEST_BASE) - .hideAsParsed() + .hideAsParsed()) .hideAsFinal(); // No change is required because the package explicitly requests org.apache.http.legacy @@ -130,15 +132,15 @@ public class AndroidTestBaseUpdaterTest extends PackageSharedLibraryUpdaterTest @Test public void in_usesOptionalLibraries() { - ParsedPackage before = PackageImpl.forParsing(PACKAGE_NAME) + ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT) .addUsesOptionalLibrary(ANDROID_TEST_BASE) - .hideAsParsed(); + .hideAsParsed()); - AndroidPackage after = PackageImpl.forParsing(PACKAGE_NAME) + AndroidPackage after = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT) .addUsesOptionalLibrary(ANDROID_TEST_BASE) - .hideAsParsed() + .hideAsParsed()) .hideAsFinal(); // No change is required because the package explicitly requests org.apache.http.legacy diff --git a/core/tests/coretests/src/android/content/pm/parsing/library/AndroidTestRunnerSplitUpdaterTest.java b/services/tests/servicestests/src/com/android/server/pm/parsing/library/AndroidTestRunnerSplitUpdaterTest.java index 38755b9aa965..77197e3c6bcb 100644 --- a/core/tests/coretests/src/android/content/pm/parsing/library/AndroidTestRunnerSplitUpdaterTest.java +++ b/services/tests/servicestests/src/com/android/server/pm/parsing/library/AndroidTestRunnerSplitUpdaterTest.java @@ -14,19 +14,21 @@ * limitations under the License. */ -package android.content.pm.parsing.library; +package com.android.server.pm.parsing.library; -import static android.content.pm.parsing.library.SharedLibraryNames.ANDROID_TEST_MOCK; -import static android.content.pm.parsing.library.SharedLibraryNames.ANDROID_TEST_RUNNER; +import static com.android.server.pm.parsing.library.SharedLibraryNames.ANDROID_TEST_MOCK; +import static com.android.server.pm.parsing.library.SharedLibraryNames.ANDROID_TEST_RUNNER; -import android.content.pm.parsing.AndroidPackage; -import android.content.pm.parsing.PackageImpl; -import android.content.pm.parsing.ParsedPackage; -import android.content.pm.parsing.library.PackageBackwardCompatibility.AndroidTestRunnerSplitUpdater; import android.os.Build; +import android.platform.test.annotations.Presubmit; import androidx.test.filters.SmallTest; +import com.android.server.pm.parsing.library.PackageBackwardCompatibility.AndroidTestRunnerSplitUpdater; +import com.android.server.pm.parsing.pkg.AndroidPackage; +import com.android.server.pm.parsing.pkg.PackageImpl; +import com.android.server.pm.parsing.pkg.ParsedPackage; + import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; @@ -34,22 +36,23 @@ import org.junit.runners.JUnit4; /** * Test for {@link AndroidTestRunnerSplitUpdater} */ +@Presubmit @SmallTest @RunWith(JUnit4.class) public class AndroidTestRunnerSplitUpdaterTest extends PackageSharedLibraryUpdaterTest { @Test public void android_test_runner_in_usesOptionalLibraries() { - ParsedPackage before = PackageImpl.forParsing(PACKAGE_NAME) + ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT) .addUsesOptionalLibrary(ANDROID_TEST_RUNNER) - .hideAsParsed(); + .hideAsParsed()); - AndroidPackage after = PackageImpl.forParsing(PACKAGE_NAME) + AndroidPackage after = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT) .addUsesOptionalLibrary(ANDROID_TEST_MOCK) .addUsesOptionalLibrary(ANDROID_TEST_RUNNER) - .hideAsParsed() + .hideAsParsed()) .hideAsFinal(); checkBackwardsCompatibility(before, after); @@ -57,17 +60,17 @@ public class AndroidTestRunnerSplitUpdaterTest extends PackageSharedLibraryUpdat @Test public void android_test_runner_in_usesLibraries_android_test_mock_in_usesOptionalLibraries() { - ParsedPackage before = PackageImpl.forParsing(PACKAGE_NAME) + ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT) .addUsesLibrary(ANDROID_TEST_RUNNER) .addUsesOptionalLibrary(ANDROID_TEST_MOCK) - .hideAsParsed(); + .hideAsParsed()); - AndroidPackage after = PackageImpl.forParsing(PACKAGE_NAME) + AndroidPackage after = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT) .addUsesLibrary(ANDROID_TEST_RUNNER) .addUsesOptionalLibrary(ANDROID_TEST_MOCK) - .hideAsParsed() + .hideAsParsed()) .hideAsFinal(); checkBackwardsCompatibility(before, after); diff --git a/core/tests/coretests/src/android/content/pm/OptionalClassRunner.java b/services/tests/servicestests/src/com/android/server/pm/parsing/library/OptionalClassRunner.java index 05db8ee29844..0ebfe1a0eecb 100644 --- a/core/tests/coretests/src/android/content/pm/OptionalClassRunner.java +++ b/services/tests/servicestests/src/com/android/server/pm/parsing/library/OptionalClassRunner.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018 The Android Open Source Project + * Copyright (C) 2019 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,7 +14,7 @@ * limitations under the License. */ -package android.content.pm; +package com.android.server.pm.parsing.library; import org.junit.Assume; import org.junit.runner.Description; diff --git a/core/tests/coretests/src/android/content/pm/parsing/library/OrgApacheHttpLegacyUpdaterTest.java b/services/tests/servicestests/src/com/android/server/pm/parsing/library/OrgApacheHttpLegacyUpdaterTest.java index 4c7899b47164..dd80f2600646 100644 --- a/core/tests/coretests/src/android/content/pm/parsing/library/OrgApacheHttpLegacyUpdaterTest.java +++ b/services/tests/servicestests/src/com/android/server/pm/parsing/library/OrgApacheHttpLegacyUpdaterTest.java @@ -14,24 +14,26 @@ * limitations under the License. */ -package android.content.pm.parsing.library; +package com.android.server.pm.parsing.library; -import static android.content.pm.parsing.library.SharedLibraryNames.ORG_APACHE_HTTP_LEGACY; +import static com.android.server.pm.parsing.library.SharedLibraryNames.ORG_APACHE_HTTP_LEGACY; -import android.content.pm.OptionalClassRunner; -import android.content.pm.parsing.AndroidPackage; -import android.content.pm.parsing.PackageImpl; -import android.content.pm.parsing.ParsedPackage; import android.os.Build; +import android.platform.test.annotations.Presubmit; import androidx.test.filters.SmallTest; +import com.android.server.pm.parsing.pkg.AndroidPackage; +import com.android.server.pm.parsing.pkg.PackageImpl; +import com.android.server.pm.parsing.pkg.ParsedPackage; + import org.junit.Test; import org.junit.runner.RunWith; /** - * Test for {@link OrgApacheHttpLegacyUpdater} + * Test for {@link com.android.server.pm.parsing.library.OrgApacheHttpLegacyUpdater} */ +@Presubmit @SmallTest @RunWith(OptionalClassRunner.class) @OptionalClassRunner.OptionalClass("android.content.pm.parsing.library.OrgApacheHttpLegacyUpdater") @@ -41,15 +43,15 @@ public class OrgApacheHttpLegacyUpdaterTest extends PackageSharedLibraryUpdaterT @Test public void targeted_at_O() { - ParsedPackage before = PackageImpl.forParsing(PACKAGE_NAME) + ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.O) - .hideAsParsed(); + .hideAsParsed()); // Should add org.apache.http.legacy. - AndroidPackage after = PackageImpl.forParsing(PACKAGE_NAME) + AndroidPackage after = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.O) .addUsesLibrary(ORG_APACHE_HTTP_LEGACY) - .hideAsParsed() + .hideAsParsed()) .hideAsFinal(); checkBackwardsCompatibility(before, after); @@ -57,18 +59,18 @@ public class OrgApacheHttpLegacyUpdaterTest extends PackageSharedLibraryUpdaterT @Test public void targeted_at_O_not_empty_usesLibraries() { - ParsedPackage before = PackageImpl.forParsing(PACKAGE_NAME) + ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.O) .addUsesLibrary(OTHER_LIBRARY) - .hideAsParsed(); + .hideAsParsed()); // The org.apache.http.legacy jar should be added at the start of the list because it // is not on the bootclasspath and the package targets pre-P. - AndroidPackage after = PackageImpl.forParsing(PACKAGE_NAME) + AndroidPackage after = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.O) .addUsesLibrary(ORG_APACHE_HTTP_LEGACY) .addUsesLibrary(OTHER_LIBRARY) - .hideAsParsed() + .hideAsParsed()) .hideAsFinal(); checkBackwardsCompatibility(before, after); @@ -76,15 +78,15 @@ public class OrgApacheHttpLegacyUpdaterTest extends PackageSharedLibraryUpdaterT @Test public void targeted_at_O_in_usesLibraries() { - ParsedPackage before = PackageImpl.forParsing(PACKAGE_NAME) + ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.O) .addUsesLibrary(ORG_APACHE_HTTP_LEGACY) - .hideAsParsed(); + .hideAsParsed()); - AndroidPackage after = PackageImpl.forParsing(PACKAGE_NAME) + AndroidPackage after = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.O) .addUsesLibrary(ORG_APACHE_HTTP_LEGACY) - .hideAsParsed() + .hideAsParsed()) .hideAsFinal(); // No change is required because although org.apache.http.legacy has been removed from @@ -94,15 +96,15 @@ public class OrgApacheHttpLegacyUpdaterTest extends PackageSharedLibraryUpdaterT @Test public void targeted_at_O_in_usesOptionalLibraries() { - ParsedPackage before = PackageImpl.forParsing(PACKAGE_NAME) + ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.O) .addUsesOptionalLibrary(ORG_APACHE_HTTP_LEGACY) - .hideAsParsed(); + .hideAsParsed()); - AndroidPackage after = PackageImpl.forParsing(PACKAGE_NAME) + AndroidPackage after = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.O) .addUsesOptionalLibrary(ORG_APACHE_HTTP_LEGACY) - .hideAsParsed() + .hideAsParsed()) .hideAsFinal(); // No change is required because although org.apache.http.legacy has been removed from @@ -112,15 +114,15 @@ public class OrgApacheHttpLegacyUpdaterTest extends PackageSharedLibraryUpdaterT @Test public void in_usesLibraries() { - ParsedPackage before = PackageImpl.forParsing(PACKAGE_NAME) + ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT) .addUsesLibrary(ORG_APACHE_HTTP_LEGACY) - .hideAsParsed(); + .hideAsParsed()); - AndroidPackage after = PackageImpl.forParsing(PACKAGE_NAME) + AndroidPackage after = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT) .addUsesLibrary(ORG_APACHE_HTTP_LEGACY) - .hideAsParsed() + .hideAsParsed()) .hideAsFinal(); // No change is required because the package explicitly requests org.apache.http.legacy @@ -130,15 +132,15 @@ public class OrgApacheHttpLegacyUpdaterTest extends PackageSharedLibraryUpdaterT @Test public void in_usesOptionalLibraries() { - ParsedPackage before = PackageImpl.forParsing(PACKAGE_NAME) + ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT) .addUsesOptionalLibrary(ORG_APACHE_HTTP_LEGACY) - .hideAsParsed(); + .hideAsParsed()); - AndroidPackage after = PackageImpl.forParsing(PACKAGE_NAME) + AndroidPackage after = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT) .addUsesOptionalLibrary(ORG_APACHE_HTTP_LEGACY) - .hideAsParsed() + .hideAsParsed()) .hideAsFinal(); // No change is required because the package explicitly requests org.apache.http.legacy diff --git a/core/tests/coretests/src/android/content/pm/parsing/library/PackageBackwardCompatibilityTest.java b/services/tests/servicestests/src/com/android/server/pm/parsing/library/PackageBackwardCompatibilityTest.java index 00d468de4ee4..ca3886092cf1 100644 --- a/core/tests/coretests/src/android/content/pm/parsing/library/PackageBackwardCompatibilityTest.java +++ b/services/tests/servicestests/src/com/android/server/pm/parsing/library/PackageBackwardCompatibilityTest.java @@ -14,40 +14,43 @@ * limitations under the License. */ -package android.content.pm.parsing.library; +package com.android.server.pm.parsing.library; -import static android.content.pm.parsing.library.SharedLibraryNames.ANDROID_TEST_BASE; -import static android.content.pm.parsing.library.SharedLibraryNames.ANDROID_TEST_MOCK; -import static android.content.pm.parsing.library.SharedLibraryNames.ANDROID_TEST_RUNNER; -import static android.content.pm.parsing.library.SharedLibraryNames.ORG_APACHE_HTTP_LEGACY; +import static com.android.server.pm.parsing.library.SharedLibraryNames.ANDROID_TEST_BASE; +import static com.android.server.pm.parsing.library.SharedLibraryNames.ANDROID_TEST_MOCK; +import static com.android.server.pm.parsing.library.SharedLibraryNames.ANDROID_TEST_RUNNER; +import static com.android.server.pm.parsing.library.SharedLibraryNames.ORG_APACHE_HTTP_LEGACY; -import android.content.pm.parsing.AndroidPackage; -import android.content.pm.parsing.PackageImpl; -import android.content.pm.parsing.ParsedPackage; import android.content.pm.parsing.ParsingPackage; -import android.content.pm.parsing.library.PackageBackwardCompatibility.RemoveUnnecessaryAndroidTestBaseLibrary; import android.os.Build; +import android.platform.test.annotations.Presubmit; import androidx.test.filters.SmallTest; +import com.android.server.pm.parsing.library.PackageBackwardCompatibility.RemoveUnnecessaryAndroidTestBaseLibrary; +import com.android.server.pm.parsing.pkg.AndroidPackage; +import com.android.server.pm.parsing.pkg.PackageImpl; +import com.android.server.pm.parsing.pkg.ParsedPackage; + import org.junit.Assume; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; +@Presubmit @SmallTest @RunWith(JUnit4.class) public class PackageBackwardCompatibilityTest extends PackageSharedLibraryUpdaterTest { @Test public void null_usesLibraries_and_usesOptionalLibraries() { - ParsedPackage before = PackageImpl.forParsing(PACKAGE_NAME) + ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT) - .hideAsParsed(); + .hideAsParsed()); - AndroidPackage after = PackageImpl.forParsing(PACKAGE_NAME) + AndroidPackage after = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT) - .hideAsParsed() + .hideAsParsed()) .hideAsFinal(); checkBackwardsCompatibility(before, after); @@ -74,12 +77,12 @@ public class PackageBackwardCompatibilityTest extends PackageSharedLibraryUpdate */ @Test public void targeted_at_O() { - ParsedPackage before = PackageImpl.forParsing(PACKAGE_NAME) + ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT) .setTargetSdkVersion(Build.VERSION_CODES.O) - .hideAsParsed(); + .hideAsParsed()); - ParsingPackage after = PackageImpl.forParsing(PACKAGE_NAME) + ParsingPackage after = PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT) .setTargetSdkVersion(Build.VERSION_CODES.O); @@ -88,7 +91,7 @@ public class PackageBackwardCompatibilityTest extends PackageSharedLibraryUpdate } after.addUsesLibrary(ORG_APACHE_HTTP_LEGACY); - checkBackwardsCompatibility(before, after.hideAsParsed().hideAsFinal()); + checkBackwardsCompatibility(before, ((ParsedPackage) after.hideAsParsed()).hideAsFinal()); } /** @@ -105,16 +108,16 @@ public class PackageBackwardCompatibilityTest extends PackageSharedLibraryUpdate + ANDROID_TEST_BASE + " is on the bootclasspath", PackageBackwardCompatibility.bootClassPathContainsATB()); - ParsedPackage before = PackageImpl.forParsing(PACKAGE_NAME) + ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT) .addUsesLibrary(ANDROID_TEST_BASE) - .hideAsParsed(); + .hideAsParsed()); // android.test.base should be removed from the libraries because it is provided // on the bootclasspath and providing both increases start up cost unnecessarily. - AndroidPackage after = PackageImpl.forParsing(PACKAGE_NAME) + AndroidPackage after = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT) - .hideAsParsed() + .hideAsParsed()) .hideAsFinal(); checkBackwardsCompatibility(before, after); @@ -129,12 +132,12 @@ public class PackageBackwardCompatibilityTest extends PackageSharedLibraryUpdate */ @Test public void android_test_runner_in_usesLibraries() { - ParsedPackage before = PackageImpl.forParsing(PACKAGE_NAME) + ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT) .addUsesLibrary(ANDROID_TEST_RUNNER) - .hideAsParsed(); + .hideAsParsed()); - ParsingPackage after = PackageImpl.forParsing(PACKAGE_NAME) + ParsingPackage after = PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT); if (!PackageBackwardCompatibility.bootClassPathContainsATB()) { after.addUsesLibrary(ANDROID_TEST_BASE); @@ -142,7 +145,7 @@ public class PackageBackwardCompatibilityTest extends PackageSharedLibraryUpdate after.addUsesLibrary(ANDROID_TEST_MOCK); after.addUsesLibrary(ANDROID_TEST_RUNNER); - checkBackwardsCompatibility(before, after.hideAsParsed().hideAsFinal()); + checkBackwardsCompatibility(before, ((ParsedPackage) after.hideAsParsed()).hideAsFinal()); } private void checkBackwardsCompatibility(ParsedPackage before, AndroidPackage after) { diff --git a/core/tests/coretests/src/android/content/pm/parsing/library/PackageSharedLibraryUpdaterTest.java b/services/tests/servicestests/src/com/android/server/pm/parsing/library/PackageSharedLibraryUpdaterTest.java index e7a80e1a7618..1d0a75a86d4b 100644 --- a/core/tests/coretests/src/android/content/pm/parsing/library/PackageSharedLibraryUpdaterTest.java +++ b/services/tests/servicestests/src/com/android/server/pm/parsing/library/PackageSharedLibraryUpdaterTest.java @@ -14,12 +14,12 @@ * limitations under the License. */ -package android.content.pm.parsing.library; +package com.android.server.pm.parsing.library; import static org.junit.Assert.assertEquals; -import android.content.pm.parsing.AndroidPackage; -import android.content.pm.parsing.ParsedPackage; +import com.android.server.pm.parsing.pkg.AndroidPackage; +import com.android.server.pm.parsing.pkg.ParsedPackage; import java.util.function.Supplier; diff --git a/core/tests/coretests/src/android/content/pm/parsing/library/RemoveUnnecessaryAndroidTestBaseLibraryTest.java b/services/tests/servicestests/src/com/android/server/pm/parsing/library/RemoveUnnecessaryAndroidTestBaseLibraryTest.java index fd3ba2bd0c68..1122490d6b1a 100644 --- a/core/tests/coretests/src/android/content/pm/parsing/library/RemoveUnnecessaryAndroidTestBaseLibraryTest.java +++ b/services/tests/servicestests/src/com/android/server/pm/parsing/library/RemoveUnnecessaryAndroidTestBaseLibraryTest.java @@ -14,18 +14,20 @@ * limitations under the License. */ -package android.content.pm.parsing.library; +package com.android.server.pm.parsing.library; -import static android.content.pm.parsing.library.SharedLibraryNames.ANDROID_TEST_BASE; +import static com.android.server.pm.parsing.library.SharedLibraryNames.ANDROID_TEST_BASE; -import android.content.pm.parsing.AndroidPackage; -import android.content.pm.parsing.PackageImpl; -import android.content.pm.parsing.ParsedPackage; -import android.content.pm.parsing.library.PackageBackwardCompatibility.RemoveUnnecessaryAndroidTestBaseLibrary; import android.os.Build; +import android.platform.test.annotations.Presubmit; import androidx.test.filters.SmallTest; +import com.android.server.pm.parsing.library.PackageBackwardCompatibility.RemoveUnnecessaryAndroidTestBaseLibrary; +import com.android.server.pm.parsing.pkg.AndroidPackage; +import com.android.server.pm.parsing.pkg.PackageImpl; +import com.android.server.pm.parsing.pkg.ParsedPackage; + import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; @@ -33,6 +35,7 @@ import org.junit.runners.JUnit4; /** * Test for {@link RemoveUnnecessaryAndroidTestBaseLibrary} */ +@Presubmit @SmallTest @RunWith(JUnit4.class) public class RemoveUnnecessaryAndroidTestBaseLibraryTest @@ -42,13 +45,13 @@ public class RemoveUnnecessaryAndroidTestBaseLibraryTest @Test public void targeted_at_O() { - ParsedPackage before = PackageImpl.forParsing(PACKAGE_NAME) + ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.O) - .hideAsParsed(); + .hideAsParsed()); - AndroidPackage after = PackageImpl.forParsing(PACKAGE_NAME) + AndroidPackage after = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.O) - .hideAsParsed() + .hideAsParsed()) .hideAsFinal(); // No change required. @@ -57,15 +60,15 @@ public class RemoveUnnecessaryAndroidTestBaseLibraryTest @Test public void targeted_at_O_not_empty_usesLibraries() { - ParsedPackage before = PackageImpl.forParsing(PACKAGE_NAME) + ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.O) .addUsesLibrary(OTHER_LIBRARY) - .hideAsParsed(); + .hideAsParsed()); - AndroidPackage after = PackageImpl.forParsing(PACKAGE_NAME) + AndroidPackage after = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.O) .addUsesLibrary(OTHER_LIBRARY) - .hideAsParsed() + .hideAsParsed()) .hideAsFinal(); // No change required. @@ -74,16 +77,16 @@ public class RemoveUnnecessaryAndroidTestBaseLibraryTest @Test public void targeted_at_O_in_usesLibraries() { - ParsedPackage before = PackageImpl.forParsing(PACKAGE_NAME) + ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.O) .addUsesLibrary(ANDROID_TEST_BASE) - .hideAsParsed(); + .hideAsParsed()); // android.test.base should be removed from the libraries because it is provided // on the bootclasspath and providing both increases start up cost unnecessarily. - AndroidPackage after = PackageImpl.forParsing(PACKAGE_NAME) + AndroidPackage after = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.O) - .hideAsParsed() + .hideAsParsed()) .hideAsFinal(); checkBackwardsCompatibility(before, after); @@ -91,16 +94,16 @@ public class RemoveUnnecessaryAndroidTestBaseLibraryTest @Test public void targeted_at_O_in_usesOptionalLibraries() { - ParsedPackage before = PackageImpl.forParsing(PACKAGE_NAME) + ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.O) .addUsesOptionalLibrary(ANDROID_TEST_BASE) - .hideAsParsed(); + .hideAsParsed()); // android.test.base should be removed from the libraries because it is provided // on the bootclasspath and providing both increases start up cost unnecessarily. - AndroidPackage after = PackageImpl.forParsing(PACKAGE_NAME) + AndroidPackage after = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.O) - .hideAsParsed() + .hideAsParsed()) .hideAsFinal(); checkBackwardsCompatibility(before, after); @@ -108,14 +111,14 @@ public class RemoveUnnecessaryAndroidTestBaseLibraryTest @Test public void in_usesLibraries() { - ParsedPackage before = PackageImpl.forParsing(PACKAGE_NAME) + ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .addUsesLibrary(ANDROID_TEST_BASE) - .hideAsParsed(); + .hideAsParsed()); // android.test.base should be removed from the libraries because it is provided // on the bootclasspath and providing both increases start up cost unnecessarily. - AndroidPackage after = PackageImpl.forParsing(PACKAGE_NAME) - .hideAsParsed() + AndroidPackage after = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) + .hideAsParsed()) .hideAsFinal(); checkBackwardsCompatibility(before, after); @@ -123,16 +126,16 @@ public class RemoveUnnecessaryAndroidTestBaseLibraryTest @Test public void in_usesOptionalLibraries() { - ParsedPackage before = PackageImpl.forParsing(PACKAGE_NAME) + ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT) .addUsesOptionalLibrary(ANDROID_TEST_BASE) - .hideAsParsed(); + .hideAsParsed()); // android.test.base should be removed from the libraries because it is provided // on the bootclasspath and providing both increases start up cost unnecessarily. - AndroidPackage after = PackageImpl.forParsing(PACKAGE_NAME) + AndroidPackage after = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT) - .hideAsParsed() + .hideAsParsed()) .hideAsFinal(); checkBackwardsCompatibility(before, after); @@ -140,17 +143,17 @@ public class RemoveUnnecessaryAndroidTestBaseLibraryTest @Test public void in_bothLibraries() { - ParsedPackage before = PackageImpl.forParsing(PACKAGE_NAME) + ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT) .addUsesLibrary(ANDROID_TEST_BASE) .addUsesOptionalLibrary(ANDROID_TEST_BASE) - .hideAsParsed(); + .hideAsParsed()); // android.test.base should be removed from the libraries because it is provided // on the bootclasspath and providing both increases start up cost unnecessarily. - AndroidPackage after = PackageImpl.forParsing(PACKAGE_NAME) + AndroidPackage after = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT) - .hideAsParsed() + .hideAsParsed()) .hideAsFinal(); checkBackwardsCompatibility(before, after); diff --git a/core/tests/coretests/src/android/content/pm/parsing/library/RemoveUnnecessaryOrgApacheHttpLegacyLibraryTest.java b/services/tests/servicestests/src/com/android/server/pm/parsing/library/RemoveUnnecessaryOrgApacheHttpLegacyLibraryTest.java index d3494d93ae52..3cc84753b810 100644 --- a/core/tests/coretests/src/android/content/pm/parsing/library/RemoveUnnecessaryOrgApacheHttpLegacyLibraryTest.java +++ b/services/tests/servicestests/src/com/android/server/pm/parsing/library/RemoveUnnecessaryOrgApacheHttpLegacyLibraryTest.java @@ -14,18 +14,20 @@ * limitations under the License. */ -package android.content.pm.parsing.library; +package com.android.server.pm.parsing.library; -import static android.content.pm.parsing.library.SharedLibraryNames.ORG_APACHE_HTTP_LEGACY; +import static com.android.server.pm.parsing.library.SharedLibraryNames.ORG_APACHE_HTTP_LEGACY; -import android.content.pm.parsing.AndroidPackage; -import android.content.pm.parsing.PackageImpl; -import android.content.pm.parsing.ParsedPackage; -import android.content.pm.parsing.library.PackageBackwardCompatibility.RemoveUnnecessaryOrgApacheHttpLegacyLibrary; import android.os.Build; +import android.platform.test.annotations.Presubmit; import androidx.test.filters.SmallTest; +import com.android.server.pm.parsing.library.PackageBackwardCompatibility.RemoveUnnecessaryOrgApacheHttpLegacyLibrary; +import com.android.server.pm.parsing.pkg.AndroidPackage; +import com.android.server.pm.parsing.pkg.PackageImpl; +import com.android.server.pm.parsing.pkg.ParsedPackage; + import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; @@ -33,6 +35,7 @@ import org.junit.runners.JUnit4; /** * Test for {@link RemoveUnnecessaryOrgApacheHttpLegacyLibrary} */ +@Presubmit @SmallTest @RunWith(JUnit4.class) public class RemoveUnnecessaryOrgApacheHttpLegacyLibraryTest @@ -42,13 +45,13 @@ public class RemoveUnnecessaryOrgApacheHttpLegacyLibraryTest @Test public void targeted_at_O() { - ParsedPackage before = PackageImpl.forParsing(PACKAGE_NAME) + ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.O) - .hideAsParsed(); + .hideAsParsed()); - AndroidPackage after = PackageImpl.forParsing(PACKAGE_NAME) + AndroidPackage after = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.O) - .hideAsParsed() + .hideAsParsed()) .hideAsFinal(); // No change required. @@ -57,15 +60,15 @@ public class RemoveUnnecessaryOrgApacheHttpLegacyLibraryTest @Test public void targeted_at_O_not_empty_usesLibraries() { - ParsedPackage before = PackageImpl.forParsing(PACKAGE_NAME) + ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.O) .addUsesLibrary(OTHER_LIBRARY) - .hideAsParsed(); + .hideAsParsed()); - AndroidPackage after = PackageImpl.forParsing(PACKAGE_NAME) + AndroidPackage after = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.O) .addUsesLibrary(OTHER_LIBRARY) - .hideAsParsed() + .hideAsParsed()) .hideAsFinal(); // No change required. @@ -74,16 +77,16 @@ public class RemoveUnnecessaryOrgApacheHttpLegacyLibraryTest @Test public void targeted_at_O_in_usesLibraries() { - ParsedPackage before = PackageImpl.forParsing(PACKAGE_NAME) + ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.O) .addUsesLibrary(ORG_APACHE_HTTP_LEGACY) - .hideAsParsed(); + .hideAsParsed()); // org.apache.http.legacy should be removed from the libraries because it is provided // on the bootclasspath and providing both increases start up cost unnecessarily. - AndroidPackage after = PackageImpl.forParsing(PACKAGE_NAME) + AndroidPackage after = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.O) - .hideAsParsed() + .hideAsParsed()) .hideAsFinal(); checkBackwardsCompatibility(before, after); @@ -91,16 +94,16 @@ public class RemoveUnnecessaryOrgApacheHttpLegacyLibraryTest @Test public void targeted_at_O_in_usesOptionalLibraries() { - ParsedPackage before = PackageImpl.forParsing(PACKAGE_NAME) + ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.O) .addUsesOptionalLibrary(ORG_APACHE_HTTP_LEGACY) - .hideAsParsed(); + .hideAsParsed()); // org.apache.http.legacy should be removed from the libraries because it is provided // on the bootclasspath and providing both increases start up cost unnecessarily. - AndroidPackage after = PackageImpl.forParsing(PACKAGE_NAME) + AndroidPackage after = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.O) - .hideAsParsed() + .hideAsParsed()) .hideAsFinal(); checkBackwardsCompatibility(before, after); @@ -108,15 +111,16 @@ public class RemoveUnnecessaryOrgApacheHttpLegacyLibraryTest @Test public void in_usesLibraries() { - ParsedPackage before = PackageImpl.forParsing(PACKAGE_NAME) + ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT) .addUsesLibrary(ORG_APACHE_HTTP_LEGACY) - .hideAsParsed(); + .hideAsParsed()); // org.apache.http.legacy should be removed from the libraries because it is provided // on the bootclasspath and providing both increases start up cost unnecessarily. - AndroidPackage after = PackageImpl.forParsing(PACKAGE_NAME) - .hideAsParsed() + AndroidPackage after = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) + .setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT) + .hideAsParsed()) .hideAsFinal(); checkBackwardsCompatibility(before, after); @@ -124,15 +128,16 @@ public class RemoveUnnecessaryOrgApacheHttpLegacyLibraryTest @Test public void in_usesOptionalLibraries() { - ParsedPackage before = PackageImpl.forParsing(PACKAGE_NAME) + ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT) .addUsesOptionalLibrary(ORG_APACHE_HTTP_LEGACY) - .hideAsParsed(); + .hideAsParsed()); // org.apache.http.legacy should be removed from the libraries because it is provided // on the bootclasspath and providing both increases start up cost unnecessarily. - AndroidPackage after = PackageImpl.forParsing(PACKAGE_NAME) - .hideAsParsed() + AndroidPackage after = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) + .setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT) + .hideAsParsed()) .hideAsFinal(); checkBackwardsCompatibility(before, after); @@ -140,17 +145,17 @@ public class RemoveUnnecessaryOrgApacheHttpLegacyLibraryTest @Test public void in_bothLibraries() { - ParsedPackage before = PackageImpl.forParsing(PACKAGE_NAME) + ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT) .addUsesLibrary(ORG_APACHE_HTTP_LEGACY) .addUsesOptionalLibrary(ORG_APACHE_HTTP_LEGACY) - .hideAsParsed(); + .hideAsParsed()); // org.apache.http.legacy should be removed from the libraries because it is provided // on the bootclasspath and providing both increases start up cost unnecessarily. - AndroidPackage after = PackageImpl.forParsing(PACKAGE_NAME) + AndroidPackage after = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT) - .hideAsParsed() + .hideAsParsed()) .hideAsFinal(); checkBackwardsCompatibility(before, after); |