Loading services/core/java/com/android/server/devicestate/DeviceState.java +10 −1 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.server.devicestate; import static android.hardware.devicestate.DeviceStateManager.MAXIMUM_DEVICE_STATE; import static android.hardware.devicestate.DeviceStateManager.MINIMUM_DEVICE_STATE; import static android.view.Display.DEFAULT_DISPLAY; import android.annotation.IntDef; import android.annotation.IntRange; Loading Loading @@ -48,9 +49,16 @@ public final class DeviceState { */ public static final int FLAG_CANCEL_OVERRIDE_REQUESTS = 1 << 0; /** * Flag that indicates this device state is inaccessible for applications to be placed in. This * could be a device-state where the {@link DEFAULT_DISPLAY} is not enabled. */ public static final int FLAG_APP_INACCESSIBLE = 1 << 1; /** @hide */ @IntDef(prefix = {"FLAG_"}, flag = true, value = { FLAG_CANCEL_OVERRIDE_REQUESTS, FLAG_APP_INACCESSIBLE }) @Retention(RetentionPolicy.SOURCE) public @interface DeviceStateFlags {} Loading Loading @@ -97,7 +105,8 @@ public final class DeviceState { @Override public String toString() { return "DeviceState{" + "identifier=" + mIdentifier + ", name='" + mName + '\'' + '}'; return "DeviceState{" + "identifier=" + mIdentifier + ", name='" + mName + '\'' + ", app_accessible=" + !hasFlag(FLAG_APP_INACCESSIBLE) + "}"; } @Override Loading services/core/java/com/android/server/pm/ComputerEngine.java +15 −2 Original line number Diff line number Diff line Loading @@ -2686,7 +2686,7 @@ public class ComputerEngine implements Computer { if (Process.isSdkSandboxUid(callingUid)) { int clientAppUid = Process.getAppUidForSdkSandboxUid(callingUid); // SDK sandbox should be able to see it's client app if (clientAppUid == UserHandle.getUid(userId, ps.getAppId())) { if (ps != null && clientAppUid == UserHandle.getUid(userId, ps.getAppId())) { return false; } } Loading @@ -2698,7 +2698,7 @@ public class ComputerEngine implements Computer { final boolean callerIsInstantApp = instantAppPkgName != null; if (ps == null) { // pretend the application exists, but, needs to be filtered return callerIsInstantApp; return callerIsInstantApp || Process.isSdkSandboxUid(callingUid); } // if the target and caller are the same application, don't filter if (isCallerSameApp(ps.getPackageName(), callingUid)) { Loading Loading @@ -3089,6 +3089,19 @@ public class ComputerEngine implements Computer { } public boolean filterAppAccess(int uid, int callingUid) { if (Process.isSdkSandboxUid(uid)) { // Sdk sandbox instance should be able to see itself. if (callingUid == uid) { return false; } final int clientAppUid = Process.getAppUidForSdkSandboxUid(uid); // Client app of this sdk sandbox process should be able to see it. if (clientAppUid == uid) { return false; } // Nobody else should be able to see the sdk sandbox process. return true; } final int userId = UserHandle.getUserId(uid); final int appId = UserHandle.getAppId(uid); final Object setting = mSettings.getSettingBase(appId); Loading services/core/java/com/android/server/policy/DeviceStateProviderImpl.java +4 −0 Original line number Diff line number Diff line Loading @@ -95,6 +95,7 @@ public final class DeviceStateProviderImpl implements DeviceStateProvider, private static final String DATA_CONFIG_FILE_PATH = "system/devicestate/"; private static final String CONFIG_FILE_NAME = "device_state_configuration.xml"; private static final String FLAG_CANCEL_OVERRIDE_REQUESTS = "FLAG_CANCEL_OVERRIDE_REQUESTS"; private static final String FLAG_APP_INACCESSIBLE = "FLAG_APP_INACCESSIBLE"; /** Interface that allows reading the device state configuration. */ interface ReadableConfig { Loading Loading @@ -145,6 +146,9 @@ public final class DeviceStateProviderImpl implements DeviceStateProvider, case FLAG_CANCEL_OVERRIDE_REQUESTS: flags |= DeviceState.FLAG_CANCEL_OVERRIDE_REQUESTS; break; case FLAG_APP_INACCESSIBLE: flags |= DeviceState.FLAG_APP_INACCESSIBLE; break; default: Slog.w(TAG, "Parsed unknown flag with name: " + configFlagString); Loading Loading
services/core/java/com/android/server/devicestate/DeviceState.java +10 −1 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.server.devicestate; import static android.hardware.devicestate.DeviceStateManager.MAXIMUM_DEVICE_STATE; import static android.hardware.devicestate.DeviceStateManager.MINIMUM_DEVICE_STATE; import static android.view.Display.DEFAULT_DISPLAY; import android.annotation.IntDef; import android.annotation.IntRange; Loading Loading @@ -48,9 +49,16 @@ public final class DeviceState { */ public static final int FLAG_CANCEL_OVERRIDE_REQUESTS = 1 << 0; /** * Flag that indicates this device state is inaccessible for applications to be placed in. This * could be a device-state where the {@link DEFAULT_DISPLAY} is not enabled. */ public static final int FLAG_APP_INACCESSIBLE = 1 << 1; /** @hide */ @IntDef(prefix = {"FLAG_"}, flag = true, value = { FLAG_CANCEL_OVERRIDE_REQUESTS, FLAG_APP_INACCESSIBLE }) @Retention(RetentionPolicy.SOURCE) public @interface DeviceStateFlags {} Loading Loading @@ -97,7 +105,8 @@ public final class DeviceState { @Override public String toString() { return "DeviceState{" + "identifier=" + mIdentifier + ", name='" + mName + '\'' + '}'; return "DeviceState{" + "identifier=" + mIdentifier + ", name='" + mName + '\'' + ", app_accessible=" + !hasFlag(FLAG_APP_INACCESSIBLE) + "}"; } @Override Loading
services/core/java/com/android/server/pm/ComputerEngine.java +15 −2 Original line number Diff line number Diff line Loading @@ -2686,7 +2686,7 @@ public class ComputerEngine implements Computer { if (Process.isSdkSandboxUid(callingUid)) { int clientAppUid = Process.getAppUidForSdkSandboxUid(callingUid); // SDK sandbox should be able to see it's client app if (clientAppUid == UserHandle.getUid(userId, ps.getAppId())) { if (ps != null && clientAppUid == UserHandle.getUid(userId, ps.getAppId())) { return false; } } Loading @@ -2698,7 +2698,7 @@ public class ComputerEngine implements Computer { final boolean callerIsInstantApp = instantAppPkgName != null; if (ps == null) { // pretend the application exists, but, needs to be filtered return callerIsInstantApp; return callerIsInstantApp || Process.isSdkSandboxUid(callingUid); } // if the target and caller are the same application, don't filter if (isCallerSameApp(ps.getPackageName(), callingUid)) { Loading Loading @@ -3089,6 +3089,19 @@ public class ComputerEngine implements Computer { } public boolean filterAppAccess(int uid, int callingUid) { if (Process.isSdkSandboxUid(uid)) { // Sdk sandbox instance should be able to see itself. if (callingUid == uid) { return false; } final int clientAppUid = Process.getAppUidForSdkSandboxUid(uid); // Client app of this sdk sandbox process should be able to see it. if (clientAppUid == uid) { return false; } // Nobody else should be able to see the sdk sandbox process. return true; } final int userId = UserHandle.getUserId(uid); final int appId = UserHandle.getAppId(uid); final Object setting = mSettings.getSettingBase(appId); Loading
services/core/java/com/android/server/policy/DeviceStateProviderImpl.java +4 −0 Original line number Diff line number Diff line Loading @@ -95,6 +95,7 @@ public final class DeviceStateProviderImpl implements DeviceStateProvider, private static final String DATA_CONFIG_FILE_PATH = "system/devicestate/"; private static final String CONFIG_FILE_NAME = "device_state_configuration.xml"; private static final String FLAG_CANCEL_OVERRIDE_REQUESTS = "FLAG_CANCEL_OVERRIDE_REQUESTS"; private static final String FLAG_APP_INACCESSIBLE = "FLAG_APP_INACCESSIBLE"; /** Interface that allows reading the device state configuration. */ interface ReadableConfig { Loading Loading @@ -145,6 +146,9 @@ public final class DeviceStateProviderImpl implements DeviceStateProvider, case FLAG_CANCEL_OVERRIDE_REQUESTS: flags |= DeviceState.FLAG_CANCEL_OVERRIDE_REQUESTS; break; case FLAG_APP_INACCESSIBLE: flags |= DeviceState.FLAG_APP_INACCESSIBLE; break; default: Slog.w(TAG, "Parsed unknown flag with name: " + configFlagString); Loading