From dc3fa38845205d43a62258ac2c6d6a0f9d0f2dfa Mon Sep 17 00:00:00 2001 From: dakinola Date: Thu, 19 Jan 2023 15:40:53 +0000 Subject: [PATCH] MediaProjection: Renaming isValidMediaProjection to isCurrentProjection Code Quality change to reduce ambiguity of method name & relevant error messages Bug: 265693464 Test: Manually built. Change-Id: I2ca9704a9e881bfa59330e62e91bfac7779b8833 --- .../projection/IMediaProjectionManager.aidl | 2 +- .../android/server/audio/AudioService.java | 4 ++-- .../server/display/DisplayManagerService.java | 5 +++-- .../MediaProjectionManagerService.java | 21 ++++++++++--------- 4 files changed, 17 insertions(+), 15 deletions(-) diff --git a/media/java/android/media/projection/IMediaProjectionManager.aidl b/media/java/android/media/projection/IMediaProjectionManager.aidl index 99d1f8dccb671..c259f9ad9cf94 100644 --- a/media/java/android/media/projection/IMediaProjectionManager.aidl +++ b/media/java/android/media/projection/IMediaProjectionManager.aidl @@ -33,7 +33,7 @@ interface IMediaProjectionManager { IMediaProjection createProjection(int uid, String packageName, int type, boolean permanentGrant); - boolean isValidMediaProjection(IMediaProjection projection); + boolean isCurrentProjection(IMediaProjection projection); @JavaPassthrough(annotation = "@android.annotation.RequiresPermission(android.Manifest" + ".permission.MANAGE_MEDIA_PROJECTION)") diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java index 92a9f464de811..dc381e913350e 100644 --- a/services/core/java/com/android/server/audio/AudioService.java +++ b/services/core/java/com/android/server/audio/AudioService.java @@ -11164,12 +11164,12 @@ public class AudioService extends IAudioService.Stub } try { - if (!projectionService.isValidMediaProjection(projection)) { + if (!projectionService.isCurrentProjection(projection)) { Log.w(TAG, "App passed invalid MediaProjection token"); return false; } } catch (RemoteException e) { - Log.e(TAG, "Can't call .isValidMediaProjection() on IMediaProjectionManager" + Log.e(TAG, "Can't call .isCurrentProjection() on IMediaProjectionManager" + projectionService.asBinder(), e); return false; } diff --git a/services/core/java/com/android/server/display/DisplayManagerService.java b/services/core/java/com/android/server/display/DisplayManagerService.java index d558e69db6537..a3e0d5a25c04c 100644 --- a/services/core/java/com/android/server/display/DisplayManagerService.java +++ b/services/core/java/com/android/server/display/DisplayManagerService.java @@ -1312,8 +1312,9 @@ public final class DisplayManagerService extends SystemService { if (projection != null) { try { - if (!getProjectionService().isValidMediaProjection(projection)) { - throw new SecurityException("Invalid media projection"); + if (!getProjectionService().isCurrentProjection(projection)) { + throw new SecurityException("Cannot create VirtualDisplay with " + + "non-current MediaProjection"); } flags = projection.applyVirtualDisplayFlags(flags); } catch (RemoteException e) { diff --git a/services/core/java/com/android/server/media/projection/MediaProjectionManagerService.java b/services/core/java/com/android/server/media/projection/MediaProjectionManagerService.java index e9ee75076b860..25efe0c3214f8 100644 --- a/services/core/java/com/android/server/media/projection/MediaProjectionManagerService.java +++ b/services/core/java/com/android/server/media/projection/MediaProjectionManagerService.java @@ -64,7 +64,7 @@ import java.util.Map; * The {@link MediaProjectionManagerService} manages the creation and lifetime of MediaProjections, * as well as the capabilities they grant. Any service using MediaProjection tokens as permission * grants must validate the token before use by calling {@link - * IMediaProjectionService#isValidMediaProjection}. + * IMediaProjectionService#isCurrentProjection}. */ public final class MediaProjectionManagerService extends SystemService implements Watchdog.Monitor { @@ -228,7 +228,7 @@ public final class MediaProjectionManagerService extends SystemService mCallbackDelegate.dispatchStop(projection); } - private boolean isValidMediaProjection(IBinder token) { + private boolean isCurrentProjection(IBinder token) { synchronized (mLock) { if (mProjectionToken != null) { return mProjectionToken.equals(token); @@ -313,8 +313,8 @@ public final class MediaProjectionManagerService extends SystemService } @Override // Binder call - public boolean isValidMediaProjection(IMediaProjection projection) { - return MediaProjectionManagerService.this.isValidMediaProjection( + public boolean isCurrentProjection(IMediaProjection projection) { + return MediaProjectionManagerService.this.isCurrentProjection( projection == null ? null : projection.asBinder()); } @@ -357,7 +357,7 @@ public final class MediaProjectionManagerService extends SystemService throw new SecurityException("Requires MANAGE_MEDIA_PROJECTION in order to notify " + "on captured content resize"); } - if (!isValidMediaProjection(mProjectionGrant)) { + if (!isCurrentProjection(mProjectionGrant)) { return; } final long token = Binder.clearCallingIdentity(); @@ -377,7 +377,7 @@ public final class MediaProjectionManagerService extends SystemService throw new SecurityException("Requires MANAGE_MEDIA_PROJECTION in order to notify " + "on captured content resize"); } - if (!isValidMediaProjection(mProjectionGrant)) { + if (!isCurrentProjection(mProjectionGrant)) { return; } final long token = Binder.clearCallingIdentity(); @@ -429,8 +429,9 @@ public final class MediaProjectionManagerService extends SystemService final long origId = Binder.clearCallingIdentity(); try { synchronized (mLock) { - if (!isValidMediaProjection(projection)) { - throw new SecurityException("Invalid media projection"); + if (!isCurrentProjection(projection)) { + throw new SecurityException("Unable to set ContentRecordingSession on " + + "non-current MediaProjection"); } if (!LocalServices.getService( WindowManagerInternal.class).setContentRecordingSession( @@ -536,7 +537,7 @@ public final class MediaProjectionManagerService extends SystemService throw new IllegalArgumentException("callback must not be null"); } synchronized (mLock) { - if (isValidMediaProjection(asBinder())) { + if (isCurrentProjection(asBinder())) { Slog.w(TAG, "UID " + Binder.getCallingUid() + " attempted to start already started MediaProjection"); return; @@ -603,7 +604,7 @@ public final class MediaProjectionManagerService extends SystemService @Override // Binder call public void stop() { synchronized (mLock) { - if (!isValidMediaProjection(asBinder())) { + if (!isCurrentProjection(asBinder())) { Slog.w(TAG, "Attempted to stop inactive MediaProjection " + "(uid=" + Binder.getCallingUid() + ", " + "pid=" + Binder.getCallingPid() + ")");