Loading core/java/android/app/ActivityThread.java +27 −10 Original line number Diff line number Diff line Loading @@ -873,6 +873,7 @@ public final class ActivityThread extends ClientTransactionHandler String processName; @UnsupportedAppUsage ApplicationInfo appInfo; String sdkSandboxClientAppVolumeUuid; String sdkSandboxClientAppPackage; @UnsupportedAppUsage List<ProviderInfo> providers; Loading Loading @@ -1119,9 +1120,10 @@ public final class ActivityThread extends ClientTransactionHandler @Override public final void bindApplication(String processName, ApplicationInfo appInfo, String sdkSandboxClientAppPackage, ProviderInfoList providerList, ComponentName instrumentationName, ProfilerInfo profilerInfo, Bundle instrumentationArgs, IInstrumentationWatcher instrumentationWatcher, String sdkSandboxClientAppVolumeUuid, String sdkSandboxClientAppPackage, ProviderInfoList providerList, ComponentName instrumentationName, ProfilerInfo profilerInfo, Bundle instrumentationArgs, IInstrumentationWatcher instrumentationWatcher, IUiAutomationConnection instrumentationUiConnection, int debugMode, boolean enableBinderTracking, boolean trackAllocation, boolean isRestrictedBackupMode, boolean persistent, Configuration config, Loading Loading @@ -1161,6 +1163,7 @@ public final class ActivityThread extends ClientTransactionHandler AppBindData data = new AppBindData(); data.processName = processName; data.appInfo = appInfo; data.sdkSandboxClientAppVolumeUuid = sdkSandboxClientAppVolumeUuid; data.sdkSandboxClientAppPackage = sdkSandboxClientAppPackage; data.providers = providerList.getList(); data.instrumentationName = instrumentationName; Loading Loading @@ -2561,6 +2564,11 @@ public final class ActivityThread extends ClientTransactionHandler return getPackageInfo(ai, compatInfo, null, false, true, false); } private LoadedApk getPackageInfoNoCheck(ApplicationInfo ai, CompatibilityInfo compatInfo, boolean isSdkSandbox) { return getPackageInfo(ai, compatInfo, null, false, true, false, isSdkSandbox); } @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023) public final LoadedApk peekPackageInfo(String packageName, boolean includeCode) { synchronized (mResourcesManager) { Loading @@ -2577,11 +2585,18 @@ public final class ActivityThread extends ClientTransactionHandler private LoadedApk getPackageInfo(ApplicationInfo aInfo, CompatibilityInfo compatInfo, ClassLoader baseLoader, boolean securityViolation, boolean includeCode, boolean registerPackage) { return getPackageInfo(aInfo, compatInfo, baseLoader, securityViolation, includeCode, registerPackage, /*isSdkSandbox=*/false); } private LoadedApk getPackageInfo(ApplicationInfo aInfo, CompatibilityInfo compatInfo, ClassLoader baseLoader, boolean securityViolation, boolean includeCode, boolean registerPackage, boolean isSdkSandbox) { final boolean differentUser = (UserHandle.myUserId() != UserHandle.getUserId(aInfo.uid)); synchronized (mResourcesManager) { WeakReference<LoadedApk> ref; if (differentUser) { // Caching not supported across users if (differentUser || isSdkSandbox) { // Caching not supported across users and for sdk sandboxes ref = null; } else if (includeCode) { ref = mPackages.get(aInfo.packageName); Loading Loading @@ -2628,8 +2643,8 @@ public final class ActivityThread extends ClientTransactionHandler getSystemContext().mPackageInfo.getClassLoader()); } if (differentUser) { // Caching not supported across users if (differentUser || isSdkSandbox) { // Caching not supported across users and for sdk sandboxes } else if (includeCode) { mPackages.put(aInfo.packageName, new WeakReference<LoadedApk>(packageInfo)); Loading Loading @@ -6575,9 +6590,11 @@ public final class ActivityThread extends ClientTransactionHandler mConfigurationController.applyCompatConfiguration(); } data.info = getPackageInfoNoCheck(data.appInfo, data.compatInfo); if (data.sdkSandboxClientAppPackage != null) { data.info.setSdkSandboxStorage(data.sdkSandboxClientAppPackage); final boolean isSdkSandbox = data.sdkSandboxClientAppPackage != null; data.info = getPackageInfoNoCheck(data.appInfo, data.compatInfo, isSdkSandbox); if (isSdkSandbox) { data.info.setSdkSandboxStorage(data.sdkSandboxClientAppVolumeUuid, data.sdkSandboxClientAppPackage); } if (agent != null) { Loading core/java/android/app/IApplicationThread.aidl +1 −1 Original line number Diff line number Diff line Loading @@ -72,7 +72,7 @@ oneway interface IApplicationThread { @UnsupportedAppUsage void scheduleStopService(IBinder token); void bindApplication(in String packageName, in ApplicationInfo info, in String sdkSandboxClientAppPackage, in String sdkSandboxClientAppVolumeUuid, in String sdkSandboxClientAppPackage, in ProviderInfoList providerList, in ComponentName testName, in ProfilerInfo profilerInfo, in Bundle testArguments, IInstrumentationWatcher testWatcher, IUiAutomationConnection uiAutomationConnection, Loading core/java/android/app/LoadedApk.java +8 −5 Original line number Diff line number Diff line Loading @@ -400,7 +400,8 @@ public final class LoadedApk { mLibDir = aInfo.nativeLibraryDir; mDataDirFile = FileUtils.newFileOrNull(aInfo.dataDir); mDeviceProtectedDataDirFile = FileUtils.newFileOrNull(aInfo.deviceProtectedDataDir); mCredentialProtectedDataDirFile = FileUtils.newFileOrNull(aInfo.credentialProtectedDataDir); mCredentialProtectedDataDirFile = FileUtils.newFileOrNull( aInfo.credentialProtectedDataDir); mSplitNames = aInfo.splitNames; mSplitAppDirs = aInfo.splitSourceDirs; Loading @@ -412,14 +413,16 @@ public final class LoadedApk { } } /** @hide */ void setSdkSandboxStorage(String sdkSandboxClientAppPackage) { void setSdkSandboxStorage(@Nullable String sdkSandboxClientAppVolumeUuid, String sdkSandboxClientAppPackage) { int userId = UserHandle.myUserId(); mDeviceProtectedDataDirFile = Environment .getDataMiscDeSharedSdkSandboxDirectory(userId, sdkSandboxClientAppPackage) .getDataMiscDeSharedSdkSandboxDirectory(sdkSandboxClientAppVolumeUuid, userId, sdkSandboxClientAppPackage) .getAbsoluteFile(); mCredentialProtectedDataDirFile = Environment .getDataMiscCeSharedSdkSandboxDirectory(userId, sdkSandboxClientAppPackage) .getDataMiscCeSharedSdkSandboxDirectory(sdkSandboxClientAppVolumeUuid, userId, sdkSandboxClientAppPackage) .getAbsoluteFile(); if ((mApplicationInfo.privateFlags Loading core/java/android/os/Environment.java +18 −4 Original line number Diff line number Diff line Loading @@ -478,8 +478,15 @@ public class Environment { } /** {@hide} */ public static File getDataMiscCeSharedSdkSandboxDirectory(int userId, String packageName) { return buildPath(getDataMiscCeDirectory(userId), "sdksandbox", packageName, "shared"); private static File getDataMiscCeDirectory(String volumeUuid, int userId) { return buildPath(getDataDirectory(volumeUuid), "misc_ce", String.valueOf(userId)); } /** {@hide} */ public static File getDataMiscCeSharedSdkSandboxDirectory(String volumeUuid, int userId, String packageName) { return buildPath(getDataMiscCeDirectory(volumeUuid, userId), "sdksandbox", packageName, "shared"); } /** {@hide} */ Loading @@ -488,8 +495,15 @@ public class Environment { } /** {@hide} */ public static File getDataMiscDeSharedSdkSandboxDirectory(int userId, String packageName) { return buildPath(getDataMiscDeDirectory(userId), "sdksandbox", packageName, "shared"); private static File getDataMiscDeDirectory(String volumeUuid, int userId) { return buildPath(getDataDirectory(volumeUuid), "misc_de", String.valueOf(userId)); } /** {@hide} */ public static File getDataMiscDeSharedSdkSandboxDirectory(String volumeUuid, int userId, String packageName) { return buildPath(getDataMiscDeDirectory(volumeUuid, userId), "sdksandbox", packageName, "shared"); } private static File getDataProfilesDeDirectory(int userId) { Loading core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java +1 −1 Original line number Diff line number Diff line Loading @@ -425,7 +425,7 @@ public class TransactionParcelTests { @Override public void bindApplication(String s, ApplicationInfo applicationInfo, String sdkSandboxClientAppPackage, String sdkSandboxClientAppVolumeUuid, String sdkSandboxClientAppPackage, ProviderInfoList list, ComponentName componentName, ProfilerInfo profilerInfo, Bundle bundle, IInstrumentationWatcher iInstrumentationWatcher, IUiAutomationConnection iUiAutomationConnection, int i, boolean b, boolean b1, Loading Loading
core/java/android/app/ActivityThread.java +27 −10 Original line number Diff line number Diff line Loading @@ -873,6 +873,7 @@ public final class ActivityThread extends ClientTransactionHandler String processName; @UnsupportedAppUsage ApplicationInfo appInfo; String sdkSandboxClientAppVolumeUuid; String sdkSandboxClientAppPackage; @UnsupportedAppUsage List<ProviderInfo> providers; Loading Loading @@ -1119,9 +1120,10 @@ public final class ActivityThread extends ClientTransactionHandler @Override public final void bindApplication(String processName, ApplicationInfo appInfo, String sdkSandboxClientAppPackage, ProviderInfoList providerList, ComponentName instrumentationName, ProfilerInfo profilerInfo, Bundle instrumentationArgs, IInstrumentationWatcher instrumentationWatcher, String sdkSandboxClientAppVolumeUuid, String sdkSandboxClientAppPackage, ProviderInfoList providerList, ComponentName instrumentationName, ProfilerInfo profilerInfo, Bundle instrumentationArgs, IInstrumentationWatcher instrumentationWatcher, IUiAutomationConnection instrumentationUiConnection, int debugMode, boolean enableBinderTracking, boolean trackAllocation, boolean isRestrictedBackupMode, boolean persistent, Configuration config, Loading Loading @@ -1161,6 +1163,7 @@ public final class ActivityThread extends ClientTransactionHandler AppBindData data = new AppBindData(); data.processName = processName; data.appInfo = appInfo; data.sdkSandboxClientAppVolumeUuid = sdkSandboxClientAppVolumeUuid; data.sdkSandboxClientAppPackage = sdkSandboxClientAppPackage; data.providers = providerList.getList(); data.instrumentationName = instrumentationName; Loading Loading @@ -2561,6 +2564,11 @@ public final class ActivityThread extends ClientTransactionHandler return getPackageInfo(ai, compatInfo, null, false, true, false); } private LoadedApk getPackageInfoNoCheck(ApplicationInfo ai, CompatibilityInfo compatInfo, boolean isSdkSandbox) { return getPackageInfo(ai, compatInfo, null, false, true, false, isSdkSandbox); } @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023) public final LoadedApk peekPackageInfo(String packageName, boolean includeCode) { synchronized (mResourcesManager) { Loading @@ -2577,11 +2585,18 @@ public final class ActivityThread extends ClientTransactionHandler private LoadedApk getPackageInfo(ApplicationInfo aInfo, CompatibilityInfo compatInfo, ClassLoader baseLoader, boolean securityViolation, boolean includeCode, boolean registerPackage) { return getPackageInfo(aInfo, compatInfo, baseLoader, securityViolation, includeCode, registerPackage, /*isSdkSandbox=*/false); } private LoadedApk getPackageInfo(ApplicationInfo aInfo, CompatibilityInfo compatInfo, ClassLoader baseLoader, boolean securityViolation, boolean includeCode, boolean registerPackage, boolean isSdkSandbox) { final boolean differentUser = (UserHandle.myUserId() != UserHandle.getUserId(aInfo.uid)); synchronized (mResourcesManager) { WeakReference<LoadedApk> ref; if (differentUser) { // Caching not supported across users if (differentUser || isSdkSandbox) { // Caching not supported across users and for sdk sandboxes ref = null; } else if (includeCode) { ref = mPackages.get(aInfo.packageName); Loading Loading @@ -2628,8 +2643,8 @@ public final class ActivityThread extends ClientTransactionHandler getSystemContext().mPackageInfo.getClassLoader()); } if (differentUser) { // Caching not supported across users if (differentUser || isSdkSandbox) { // Caching not supported across users and for sdk sandboxes } else if (includeCode) { mPackages.put(aInfo.packageName, new WeakReference<LoadedApk>(packageInfo)); Loading Loading @@ -6575,9 +6590,11 @@ public final class ActivityThread extends ClientTransactionHandler mConfigurationController.applyCompatConfiguration(); } data.info = getPackageInfoNoCheck(data.appInfo, data.compatInfo); if (data.sdkSandboxClientAppPackage != null) { data.info.setSdkSandboxStorage(data.sdkSandboxClientAppPackage); final boolean isSdkSandbox = data.sdkSandboxClientAppPackage != null; data.info = getPackageInfoNoCheck(data.appInfo, data.compatInfo, isSdkSandbox); if (isSdkSandbox) { data.info.setSdkSandboxStorage(data.sdkSandboxClientAppVolumeUuid, data.sdkSandboxClientAppPackage); } if (agent != null) { Loading
core/java/android/app/IApplicationThread.aidl +1 −1 Original line number Diff line number Diff line Loading @@ -72,7 +72,7 @@ oneway interface IApplicationThread { @UnsupportedAppUsage void scheduleStopService(IBinder token); void bindApplication(in String packageName, in ApplicationInfo info, in String sdkSandboxClientAppPackage, in String sdkSandboxClientAppVolumeUuid, in String sdkSandboxClientAppPackage, in ProviderInfoList providerList, in ComponentName testName, in ProfilerInfo profilerInfo, in Bundle testArguments, IInstrumentationWatcher testWatcher, IUiAutomationConnection uiAutomationConnection, Loading
core/java/android/app/LoadedApk.java +8 −5 Original line number Diff line number Diff line Loading @@ -400,7 +400,8 @@ public final class LoadedApk { mLibDir = aInfo.nativeLibraryDir; mDataDirFile = FileUtils.newFileOrNull(aInfo.dataDir); mDeviceProtectedDataDirFile = FileUtils.newFileOrNull(aInfo.deviceProtectedDataDir); mCredentialProtectedDataDirFile = FileUtils.newFileOrNull(aInfo.credentialProtectedDataDir); mCredentialProtectedDataDirFile = FileUtils.newFileOrNull( aInfo.credentialProtectedDataDir); mSplitNames = aInfo.splitNames; mSplitAppDirs = aInfo.splitSourceDirs; Loading @@ -412,14 +413,16 @@ public final class LoadedApk { } } /** @hide */ void setSdkSandboxStorage(String sdkSandboxClientAppPackage) { void setSdkSandboxStorage(@Nullable String sdkSandboxClientAppVolumeUuid, String sdkSandboxClientAppPackage) { int userId = UserHandle.myUserId(); mDeviceProtectedDataDirFile = Environment .getDataMiscDeSharedSdkSandboxDirectory(userId, sdkSandboxClientAppPackage) .getDataMiscDeSharedSdkSandboxDirectory(sdkSandboxClientAppVolumeUuid, userId, sdkSandboxClientAppPackage) .getAbsoluteFile(); mCredentialProtectedDataDirFile = Environment .getDataMiscCeSharedSdkSandboxDirectory(userId, sdkSandboxClientAppPackage) .getDataMiscCeSharedSdkSandboxDirectory(sdkSandboxClientAppVolumeUuid, userId, sdkSandboxClientAppPackage) .getAbsoluteFile(); if ((mApplicationInfo.privateFlags Loading
core/java/android/os/Environment.java +18 −4 Original line number Diff line number Diff line Loading @@ -478,8 +478,15 @@ public class Environment { } /** {@hide} */ public static File getDataMiscCeSharedSdkSandboxDirectory(int userId, String packageName) { return buildPath(getDataMiscCeDirectory(userId), "sdksandbox", packageName, "shared"); private static File getDataMiscCeDirectory(String volumeUuid, int userId) { return buildPath(getDataDirectory(volumeUuid), "misc_ce", String.valueOf(userId)); } /** {@hide} */ public static File getDataMiscCeSharedSdkSandboxDirectory(String volumeUuid, int userId, String packageName) { return buildPath(getDataMiscCeDirectory(volumeUuid, userId), "sdksandbox", packageName, "shared"); } /** {@hide} */ Loading @@ -488,8 +495,15 @@ public class Environment { } /** {@hide} */ public static File getDataMiscDeSharedSdkSandboxDirectory(int userId, String packageName) { return buildPath(getDataMiscDeDirectory(userId), "sdksandbox", packageName, "shared"); private static File getDataMiscDeDirectory(String volumeUuid, int userId) { return buildPath(getDataDirectory(volumeUuid), "misc_de", String.valueOf(userId)); } /** {@hide} */ public static File getDataMiscDeSharedSdkSandboxDirectory(String volumeUuid, int userId, String packageName) { return buildPath(getDataMiscDeDirectory(volumeUuid, userId), "sdksandbox", packageName, "shared"); } private static File getDataProfilesDeDirectory(int userId) { Loading
core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java +1 −1 Original line number Diff line number Diff line Loading @@ -425,7 +425,7 @@ public class TransactionParcelTests { @Override public void bindApplication(String s, ApplicationInfo applicationInfo, String sdkSandboxClientAppPackage, String sdkSandboxClientAppVolumeUuid, String sdkSandboxClientAppPackage, ProviderInfoList list, ComponentName componentName, ProfilerInfo profilerInfo, Bundle bundle, IInstrumentationWatcher iInstrumentationWatcher, IUiAutomationConnection iUiAutomationConnection, int i, boolean b, boolean b1, Loading