Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0be58372 authored by Iván Budnik's avatar Iván Budnik Committed by Android (Google) Code Review
Browse files

Merge "Extract method for enforcing privileged routing permissions" into main

parents 49bbb76a 8afcfecc
Loading
Loading
Loading
Loading
+14 −7
Original line number Original line Diff line number Diff line
@@ -192,6 +192,7 @@ class MediaRouter2ServiceImpl {


    // Start of methods that implement MediaRouter2 operations.
    // Start of methods that implement MediaRouter2 operations.


    @RequiresPermission(Manifest.permission.MEDIA_CONTENT_CONTROL)
    @NonNull
    @NonNull
    public boolean verifyPackageExists(@NonNull String clientPackageName) {
    public boolean verifyPackageExists(@NonNull String clientPackageName) {
        final int pid = Binder.getCallingPid();
        final int pid = Binder.getCallingPid();
@@ -199,11 +200,7 @@ class MediaRouter2ServiceImpl {
        final long token = Binder.clearCallingIdentity();
        final long token = Binder.clearCallingIdentity();


        try {
        try {
            mContext.enforcePermission(
            enforcePrivilegedRoutingPermissions(uid, pid);
                    Manifest.permission.MEDIA_CONTENT_CONTROL,
                    pid,
                    uid,
                    "Must hold MEDIA_CONTENT_CONTROL permission.");
            PackageManager pm = mContext.getPackageManager();
            PackageManager pm = mContext.getPackageManager();
            pm.getPackageInfo(clientPackageName, PackageManager.PackageInfoFlags.of(0));
            pm.getPackageInfo(clientPackageName, PackageManager.PackageInfoFlags.of(0));
            return true;
            return true;
@@ -482,6 +479,7 @@ class MediaRouter2ServiceImpl {
        }
        }
    }
    }


    @RequiresPermission(Manifest.permission.MEDIA_CONTENT_CONTROL)
    public void registerManager(@NonNull IMediaRouter2Manager manager,
    public void registerManager(@NonNull IMediaRouter2Manager manager,
            @NonNull String callerPackageName) {
            @NonNull String callerPackageName) {
        Objects.requireNonNull(manager, "manager must not be null");
        Objects.requireNonNull(manager, "manager must not be null");
@@ -729,6 +727,15 @@ class MediaRouter2ServiceImpl {
        return hasBluetoothRoutingPermission;
        return hasBluetoothRoutingPermission;
    }
    }


    @RequiresPermission(Manifest.permission.MEDIA_CONTENT_CONTROL)
    private void enforcePrivilegedRoutingPermissions(int callerUid, int callerPid) {
        mContext.enforcePermission(
                Manifest.permission.MEDIA_CONTENT_CONTROL,
                callerPid,
                callerUid,
                "Must hold MEDIA_CONTENT_CONTROL permission.");
    }

    // End of methods that implements operations for both MediaRouter2 and MediaRouter2Manager.
    // End of methods that implements operations for both MediaRouter2 and MediaRouter2Manager.


    public void dump(@NonNull PrintWriter pw, @NonNull String prefix) {
    public void dump(@NonNull PrintWriter pw, @NonNull String prefix) {
@@ -1164,6 +1171,7 @@ class MediaRouter2ServiceImpl {
        return sessionInfos;
        return sessionInfos;
    }
    }


    @RequiresPermission(Manifest.permission.MEDIA_CONTENT_CONTROL)
    @GuardedBy("mLock")
    @GuardedBy("mLock")
    private void registerManagerLocked(
    private void registerManagerLocked(
            @NonNull IMediaRouter2Manager manager,
            @NonNull IMediaRouter2Manager manager,
@@ -1187,8 +1195,7 @@ class MediaRouter2ServiceImpl {
                            + " callerUserId: %d",
                            + " callerUserId: %d",
                        callerUid, callerPid, callerPackageName, callerUserId));
                        callerUid, callerPid, callerPackageName, callerUserId));


        mContext.enforcePermission(Manifest.permission.MEDIA_CONTENT_CONTROL, callerPid, callerUid,
        enforcePrivilegedRoutingPermissions(callerUid, callerPid);
                "Must hold MEDIA_CONTENT_CONTROL permission.");


        UserRecord userRecord = getOrCreateUserRecordLocked(callerUserId);
        UserRecord userRecord = getOrCreateUserRecordLocked(callerUserId);
        managerRecord = new ManagerRecord(
        managerRecord = new ManagerRecord(
+2 −0
Original line number Original line Diff line number Diff line
@@ -409,6 +409,7 @@ public final class MediaRouterService extends IMediaRouterService.Stub
    }
    }


    // Binder call
    // Binder call
    @RequiresPermission(Manifest.permission.MEDIA_CONTENT_CONTROL)
    @Override
    @Override
    public boolean verifyPackageExists(String clientPackageName) {
    public boolean verifyPackageExists(String clientPackageName) {
        return mService2.verifyPackageExists(clientPackageName);
        return mService2.verifyPackageExists(clientPackageName);
@@ -536,6 +537,7 @@ public final class MediaRouterService extends IMediaRouterService.Stub
    }
    }


    // Binder call
    // Binder call
    @RequiresPermission(Manifest.permission.MEDIA_CONTENT_CONTROL)
    @Override
    @Override
    public void registerManager(IMediaRouter2Manager manager, String callerPackageName) {
    public void registerManager(IMediaRouter2Manager manager, String callerPackageName) {
        final int uid = Binder.getCallingUid();
        final int uid = Binder.getCallingUid();