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();
