Merge "Add permission check for RemoteTransition in ActivityOptions" into udc-dev

This commit is contained in:
Evan Rosky
2023-06-29 05:52:07 +00:00
committed by Android (Google) Code Review

View File

@@ -48,6 +48,7 @@ import android.os.RemoteException;
import android.os.UserHandle; import android.os.UserHandle;
import android.util.Slog; import android.util.Slog;
import android.view.RemoteAnimationAdapter; import android.view.RemoteAnimationAdapter;
import android.window.RemoteTransition;
import android.window.WindowContainerToken; import android.window.WindowContainerToken;
import com.android.internal.annotations.VisibleForTesting; import com.android.internal.annotations.VisibleForTesting;
@@ -385,6 +386,18 @@ public class SafeActivityOptions {
throw new SecurityException(msg); throw new SecurityException(msg);
} }
// Check permission for remote transitions
final RemoteTransition transition = options.getRemoteTransition();
if (transition != null && supervisor.mService.checkPermission(
CONTROL_REMOTE_APP_TRANSITION_ANIMATIONS, callingPid, callingUid)
!= PERMISSION_GRANTED) {
final String msg = "Permission Denial: starting " + getIntentString(intent)
+ " from " + callerApp + " (pid=" + callingPid
+ ", uid=" + callingUid + ") with remoteTransition";
Slog.w(TAG, msg);
throw new SecurityException(msg);
}
// If launched from bubble is specified, then ensure that the caller is system or sysui. // If launched from bubble is specified, then ensure that the caller is system or sysui.
if (options.getLaunchedFromBubble() && !isSystemOrSystemUI(callingPid, callingUid)) { if (options.getLaunchedFromBubble() && !isSystemOrSystemUI(callingPid, callingUid)) {
final String msg = "Permission Denial: starting " + getIntentString(intent) final String msg = "Permission Denial: starting " + getIntentString(intent)