Loading core/java/android/app/ActivityThread.java +8 −3 Original line number Diff line number Diff line Loading @@ -868,6 +868,7 @@ public final class ActivityThread extends ClientTransactionHandler String processName; @UnsupportedAppUsage ApplicationInfo appInfo; String sdkSandboxClientAppPackage; @UnsupportedAppUsage List<ProviderInfo> providers; ComponentName instrumentationName; Loading Loading @@ -1113,9 +1114,9 @@ public final class ActivityThread extends ClientTransactionHandler @Override public final void bindApplication(String processName, ApplicationInfo appInfo, ProviderInfoList providerList, ComponentName instrumentationName, ProfilerInfo profilerInfo, Bundle instrumentationArgs, IInstrumentationWatcher instrumentationWatcher, 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 @@ -1155,6 +1156,7 @@ public final class ActivityThread extends ClientTransactionHandler AppBindData data = new AppBindData(); data.processName = processName; data.appInfo = appInfo; data.sdkSandboxClientAppPackage = sdkSandboxClientAppPackage; data.providers = providerList.getList(); data.instrumentationName = instrumentationName; data.instrumentationArgs = instrumentationArgs; Loading Loading @@ -6536,6 +6538,9 @@ public final class ActivityThread extends ClientTransactionHandler } data.info = getPackageInfoNoCheck(data.appInfo, data.compatInfo); if (data.sdkSandboxClientAppPackage != null) { data.info.setSdkSandboxStorage(data.sdkSandboxClientAppPackage); } if (agent != null) { handleAttachAgent(agent, data.info); Loading core/java/android/app/ContextImpl.java +1 −1 Original line number Diff line number Diff line Loading @@ -1998,7 +1998,7 @@ class ContextImpl extends Context { private boolean bindServiceCommon(Intent service, ServiceConnection conn, int flags, String instanceName, Handler handler, Executor executor, UserHandle user) { // Keep this in sync with DevicePolicyManager.bindDeviceAdminServiceAsUser and // ActivityManagerLocal.bindSupplementalProcessService // ActivityManagerLocal.bindSdkSandboxService IServiceConnection sd; if (conn == null) { throw new IllegalArgumentException("connection is null"); Loading core/java/android/app/IApplicationThread.aidl +1 −0 Original line number Diff line number Diff line Loading @@ -72,6 +72,7 @@ oneway interface IApplicationThread { @UnsupportedAppUsage void scheduleStopService(IBinder token); void bindApplication(in String packageName, in ApplicationInfo info, 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 +21 −0 Original line number Diff line number Diff line Loading @@ -37,6 +37,7 @@ import android.content.res.CompatibilityInfo; import android.content.res.Resources; import android.os.Build; import android.os.Bundle; import android.os.Environment; import android.os.FileUtils; import android.os.GraphicsEnvironment; import android.os.Handler; Loading Loading @@ -411,6 +412,26 @@ public final class LoadedApk { } } /** @hide */ void setSdkSandboxStorage(String sdkSandboxClientAppPackage) { int userId = UserHandle.myUserId(); mDeviceProtectedDataDirFile = Environment .getDataMiscDeSharedSdkSandboxDirectory(userId, sdkSandboxClientAppPackage) .getAbsoluteFile(); mCredentialProtectedDataDirFile = Environment .getDataMiscCeSharedSdkSandboxDirectory(userId, sdkSandboxClientAppPackage) .getAbsoluteFile(); if ((mApplicationInfo.privateFlags & ApplicationInfo.PRIVATE_FLAG_DEFAULT_TO_DEVICE_PROTECTED_STORAGE) != 0 && PackageManager.APPLY_DEFAULT_TO_DEVICE_PROTECTED_STORAGE) { mDataDirFile = mDeviceProtectedDataDirFile; } else { mDataDirFile = mCredentialProtectedDataDirFile; } mDataDir = mDataDirFile.getAbsolutePath(); } public static void makePaths(ActivityThread activityThread, ApplicationInfo aInfo, List<String> outZipPaths) { Loading core/java/android/os/Environment.java +10 −0 Original line number Diff line number Diff line Loading @@ -477,11 +477,21 @@ public class Environment { return buildPath(getDataDirectory(), "misc_ce", String.valueOf(userId)); } /** {@hide} */ public static File getDataMiscCeSharedSdkSandboxDirectory(int userId, String packageName) { return buildPath(getDataMiscCeDirectory(userId), "sdksandbox", packageName, "shared"); } /** {@hide} */ public static File getDataMiscDeDirectory(int userId) { return buildPath(getDataDirectory(), "misc_de", String.valueOf(userId)); } /** {@hide} */ public static File getDataMiscDeSharedSdkSandboxDirectory(int userId, String packageName) { return buildPath(getDataMiscDeDirectory(userId), "sdksandbox", packageName, "shared"); } private static File getDataProfilesDeDirectory(int userId) { return buildPath(getDataDirectory(), "misc", "profiles", "cur", String.valueOf(userId)); } Loading Loading
core/java/android/app/ActivityThread.java +8 −3 Original line number Diff line number Diff line Loading @@ -868,6 +868,7 @@ public final class ActivityThread extends ClientTransactionHandler String processName; @UnsupportedAppUsage ApplicationInfo appInfo; String sdkSandboxClientAppPackage; @UnsupportedAppUsage List<ProviderInfo> providers; ComponentName instrumentationName; Loading Loading @@ -1113,9 +1114,9 @@ public final class ActivityThread extends ClientTransactionHandler @Override public final void bindApplication(String processName, ApplicationInfo appInfo, ProviderInfoList providerList, ComponentName instrumentationName, ProfilerInfo profilerInfo, Bundle instrumentationArgs, IInstrumentationWatcher instrumentationWatcher, 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 @@ -1155,6 +1156,7 @@ public final class ActivityThread extends ClientTransactionHandler AppBindData data = new AppBindData(); data.processName = processName; data.appInfo = appInfo; data.sdkSandboxClientAppPackage = sdkSandboxClientAppPackage; data.providers = providerList.getList(); data.instrumentationName = instrumentationName; data.instrumentationArgs = instrumentationArgs; Loading Loading @@ -6536,6 +6538,9 @@ public final class ActivityThread extends ClientTransactionHandler } data.info = getPackageInfoNoCheck(data.appInfo, data.compatInfo); if (data.sdkSandboxClientAppPackage != null) { data.info.setSdkSandboxStorage(data.sdkSandboxClientAppPackage); } if (agent != null) { handleAttachAgent(agent, data.info); Loading
core/java/android/app/ContextImpl.java +1 −1 Original line number Diff line number Diff line Loading @@ -1998,7 +1998,7 @@ class ContextImpl extends Context { private boolean bindServiceCommon(Intent service, ServiceConnection conn, int flags, String instanceName, Handler handler, Executor executor, UserHandle user) { // Keep this in sync with DevicePolicyManager.bindDeviceAdminServiceAsUser and // ActivityManagerLocal.bindSupplementalProcessService // ActivityManagerLocal.bindSdkSandboxService IServiceConnection sd; if (conn == null) { throw new IllegalArgumentException("connection is null"); Loading
core/java/android/app/IApplicationThread.aidl +1 −0 Original line number Diff line number Diff line Loading @@ -72,6 +72,7 @@ oneway interface IApplicationThread { @UnsupportedAppUsage void scheduleStopService(IBinder token); void bindApplication(in String packageName, in ApplicationInfo info, 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 +21 −0 Original line number Diff line number Diff line Loading @@ -37,6 +37,7 @@ import android.content.res.CompatibilityInfo; import android.content.res.Resources; import android.os.Build; import android.os.Bundle; import android.os.Environment; import android.os.FileUtils; import android.os.GraphicsEnvironment; import android.os.Handler; Loading Loading @@ -411,6 +412,26 @@ public final class LoadedApk { } } /** @hide */ void setSdkSandboxStorage(String sdkSandboxClientAppPackage) { int userId = UserHandle.myUserId(); mDeviceProtectedDataDirFile = Environment .getDataMiscDeSharedSdkSandboxDirectory(userId, sdkSandboxClientAppPackage) .getAbsoluteFile(); mCredentialProtectedDataDirFile = Environment .getDataMiscCeSharedSdkSandboxDirectory(userId, sdkSandboxClientAppPackage) .getAbsoluteFile(); if ((mApplicationInfo.privateFlags & ApplicationInfo.PRIVATE_FLAG_DEFAULT_TO_DEVICE_PROTECTED_STORAGE) != 0 && PackageManager.APPLY_DEFAULT_TO_DEVICE_PROTECTED_STORAGE) { mDataDirFile = mDeviceProtectedDataDirFile; } else { mDataDirFile = mCredentialProtectedDataDirFile; } mDataDir = mDataDirFile.getAbsolutePath(); } public static void makePaths(ActivityThread activityThread, ApplicationInfo aInfo, List<String> outZipPaths) { Loading
core/java/android/os/Environment.java +10 −0 Original line number Diff line number Diff line Loading @@ -477,11 +477,21 @@ public class Environment { return buildPath(getDataDirectory(), "misc_ce", String.valueOf(userId)); } /** {@hide} */ public static File getDataMiscCeSharedSdkSandboxDirectory(int userId, String packageName) { return buildPath(getDataMiscCeDirectory(userId), "sdksandbox", packageName, "shared"); } /** {@hide} */ public static File getDataMiscDeDirectory(int userId) { return buildPath(getDataDirectory(), "misc_de", String.valueOf(userId)); } /** {@hide} */ public static File getDataMiscDeSharedSdkSandboxDirectory(int userId, String packageName) { return buildPath(getDataMiscDeDirectory(userId), "sdksandbox", packageName, "shared"); } private static File getDataProfilesDeDirectory(int userId) { return buildPath(getDataDirectory(), "misc", "profiles", "cur", String.valueOf(userId)); } Loading