Add tests for ApplicationInfo.publicSourceDir of APEX packages

Test: atest PackageManagerTest
Test: atest CtsStagedInstallHostTestCases
Bug: 154635217
Change-Id: Id68b908f0631d473df331b9eeabf5f055b7ab016
diff --git a/hostsidetests/stagedinstall/app/src/com/android/tests/stagedinstall/StagedInstallTest.java b/hostsidetests/stagedinstall/app/src/com/android/tests/stagedinstall/StagedInstallTest.java
index 89169a9..4cd8733 100644
--- a/hostsidetests/stagedinstall/app/src/com/android/tests/stagedinstall/StagedInstallTest.java
+++ b/hostsidetests/stagedinstall/app/src/com/android/tests/stagedinstall/StagedInstallTest.java
@@ -979,6 +979,9 @@
         assertThat(shim.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM).isEqualTo(0);
         assertThat(shim.applicationInfo.flags & ApplicationInfo.FLAG_INSTALLED).isEqualTo(
                 ApplicationInfo.FLAG_INSTALLED);
+        assertThat(shim.applicationInfo.sourceDir)
+                .isEqualTo("/data/apex/active/com.android.apex.cts.shim@1.apex");
+        assertThat(shim.applicationInfo.publicSourceDir).isEqualTo(shim.applicationInfo.sourceDir);
     }
 
     @Test
diff --git a/tests/tests/content/src/android/content/pm/cts/PackageManagerTest.java b/tests/tests/content/src/android/content/pm/cts/PackageManagerTest.java
index 0463ced..54a513f 100644
--- a/tests/tests/content/src/android/content/pm/cts/PackageManagerTest.java
+++ b/tests/tests/content/src/android/content/pm/cts/PackageManagerTest.java
@@ -35,6 +35,7 @@
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
+import static org.junit.Assume.assumeTrue;
 
 import android.content.ComponentName;
 import android.content.Intent;
@@ -979,6 +980,19 @@
         assertWithMessage("Shim apex wasn't supposed to be found").that(shimApex).isEmpty();
     }
 
+    @Test
+    public void testGetApplicationInfo_ApexSupported_MatchesApex() throws Exception {
+        assumeTrue("Device doesn't support updating APEX", isUpdatingApexSupported());
+
+        ApplicationInfo ai = mPackageManager.getApplicationInfo(
+                SHIM_APEX_PACKAGE_NAME, PackageManager.MATCH_APEX);
+        assertThat(ai.sourceDir).isEqualTo("/system/apex/com.android.apex.cts.shim.apex");
+        assertThat(ai.publicSourceDir).isEqualTo(ai.sourceDir);
+        assertThat(ai.flags & ApplicationInfo.FLAG_SYSTEM).isEqualTo(ApplicationInfo.FLAG_SYSTEM);
+        assertThat(ai.flags & ApplicationInfo.FLAG_INSTALLED)
+                .isEqualTo(ApplicationInfo.FLAG_INSTALLED);
+    }
+
     private boolean isUpdatingApexSupported() {
         return SystemProperties.getBoolean("ro.apex.updatable", false);
     }
@@ -989,6 +1003,8 @@
         assertThat(packageInfo.isApex).isTrue();
         assertThat(packageInfo.applicationInfo.sourceDir).isEqualTo(
                 "/system/apex/com.android.apex.cts.shim.apex");
+        assertThat(packageInfo.applicationInfo.publicSourceDir)
+                .isEqualTo(packageInfo.applicationInfo.sourceDir);
         // Verify that legacy mechanism for handling signatures is supported.
         Signature[] pastSigningCertificates =
                 packageInfo.signingInfo.getSigningCertificateHistory();