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

Commit d08d49d3 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Keep permission info for MR2Record" into rvc-dev am: a534680e am:...

Merge "Keep permission info for MR2Record" into rvc-dev am: a534680e am: 95313b1b am: 3a11f90e

Change-Id: Id4471ab77955482b25ac826198b3840702ef0551
parents 7e437fef 3a11f90e
Loading
Loading
Loading
Loading
+23 −21
Original line number Original line Diff line number Diff line
@@ -155,13 +155,18 @@ class MediaRouter2ServiceImpl {
        final int uid = Binder.getCallingUid();
        final int uid = Binder.getCallingUid();
        final int pid = Binder.getCallingPid();
        final int pid = Binder.getCallingPid();
        final int userId = UserHandle.getUserHandleForUid(uid).getIdentifier();
        final int userId = UserHandle.getUserHandleForUid(uid).getIdentifier();
        final boolean trusted = mContext.checkCallingOrSelfPermission(
        final boolean hasConfigureWifiDisplayPermission = mContext.checkCallingOrSelfPermission(
                android.Manifest.permission.CONFIGURE_WIFI_DISPLAY)
                android.Manifest.permission.CONFIGURE_WIFI_DISPLAY)
                == PackageManager.PERMISSION_GRANTED;
                == PackageManager.PERMISSION_GRANTED;
        final boolean hasModifyAudioRoutingPermission = mContext.checkCallingOrSelfPermission(
                android.Manifest.permission.MODIFY_AUDIO_ROUTING)
                == PackageManager.PERMISSION_GRANTED;

        final long token = Binder.clearCallingIdentity();
        final long token = Binder.clearCallingIdentity();
        try {
        try {
            synchronized (mLock) {
            synchronized (mLock) {
                registerRouter2Locked(router, uid, pid, packageName, userId, trusted);
                registerRouter2Locked(router, uid, pid, packageName, userId,
                        hasConfigureWifiDisplayPermission, hasModifyAudioRoutingPermission);
            }
            }
        } finally {
        } finally {
            Binder.restoreCallingIdentity(token);
            Binder.restoreCallingIdentity(token);
@@ -341,8 +346,6 @@ class MediaRouter2ServiceImpl {
            throw new IllegalArgumentException("packageName must not be empty");
            throw new IllegalArgumentException("packageName must not be empty");
        }
        }


        final boolean trusted = true;

        final int uid = Binder.getCallingUid();
        final int uid = Binder.getCallingUid();
        final int pid = Binder.getCallingPid();
        final int pid = Binder.getCallingPid();
        final int userId = UserHandle.getUserHandleForUid(uid).getIdentifier();
        final int userId = UserHandle.getUserHandleForUid(uid).getIdentifier();
@@ -350,7 +353,7 @@ class MediaRouter2ServiceImpl {
        final long token = Binder.clearCallingIdentity();
        final long token = Binder.clearCallingIdentity();
        try {
        try {
            synchronized (mLock) {
            synchronized (mLock) {
                registerManagerLocked(manager, uid, pid, packageName, userId, trusted);
                registerManagerLocked(manager, uid, pid, packageName, userId);
            }
            }
        } finally {
        } finally {
            Binder.restoreCallingIdentity(token);
            Binder.restoreCallingIdentity(token);
@@ -532,7 +535,8 @@ class MediaRouter2ServiceImpl {
    ////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////


    private void registerRouter2Locked(@NonNull IMediaRouter2 router, int uid, int pid,
    private void registerRouter2Locked(@NonNull IMediaRouter2 router, int uid, int pid,
            @NonNull String packageName, int userId, boolean trusted) {
            @NonNull String packageName, int userId, boolean hasConfigureWifiDisplayPermission,
            boolean hasModifyAudioRoutingPermission) {
        final IBinder binder = router.asBinder();
        final IBinder binder = router.asBinder();
        if (mAllRouterRecords.get(binder) != null) {
        if (mAllRouterRecords.get(binder) != null) {
            Slog.w(TAG, "Same router already exists. packageName=" + packageName);
            Slog.w(TAG, "Same router already exists. packageName=" + packageName);
@@ -540,8 +544,8 @@ class MediaRouter2ServiceImpl {
        }
        }


        UserRecord userRecord = getOrCreateUserRecordLocked(userId);
        UserRecord userRecord = getOrCreateUserRecordLocked(userId);
        RouterRecord routerRecord = new RouterRecord(
        RouterRecord routerRecord = new RouterRecord(userRecord, router, uid, pid, packageName,
                userRecord, router, uid, pid, packageName, trusted);
                hasConfigureWifiDisplayPermission, hasModifyAudioRoutingPermission);
        try {
        try {
            binder.linkToDeath(routerRecord, 0);
            binder.linkToDeath(routerRecord, 0);
        } catch (RemoteException ex) {
        } catch (RemoteException ex) {
@@ -711,7 +715,7 @@ class MediaRouter2ServiceImpl {
    }
    }


    private void registerManagerLocked(@NonNull IMediaRouter2Manager manager,
    private void registerManagerLocked(@NonNull IMediaRouter2Manager manager,
            int uid, int pid, @NonNull String packageName, int userId, boolean trusted) {
            int uid, int pid, @NonNull String packageName, int userId) {
        final IBinder binder = manager.asBinder();
        final IBinder binder = manager.asBinder();
        ManagerRecord managerRecord = mAllManagerRecords.get(binder);
        ManagerRecord managerRecord = mAllManagerRecords.get(binder);


@@ -721,7 +725,7 @@ class MediaRouter2ServiceImpl {
        }
        }


        UserRecord userRecord = getOrCreateUserRecordLocked(userId);
        UserRecord userRecord = getOrCreateUserRecordLocked(userId);
        managerRecord = new ManagerRecord(userRecord, manager, uid, pid, packageName, trusted);
        managerRecord = new ManagerRecord(userRecord, manager, uid, pid, packageName);
        try {
        try {
            binder.linkToDeath(managerRecord, 0);
            binder.linkToDeath(managerRecord, 0);
        } catch (RemoteException ex) {
        } catch (RemoteException ex) {
@@ -778,7 +782,7 @@ class MediaRouter2ServiceImpl {
            @NonNull IMediaRouter2Manager manager,
            @NonNull IMediaRouter2Manager manager,
            @NonNull String packageName, @NonNull MediaRoute2Info route) {
            @NonNull String packageName, @NonNull MediaRoute2Info route) {
        ManagerRecord managerRecord = mAllManagerRecords.get(manager.asBinder());
        ManagerRecord managerRecord = mAllManagerRecords.get(manager.asBinder());
        if (managerRecord == null || !managerRecord.mTrusted) {
        if (managerRecord == null) {
            return;
            return;
        }
        }


@@ -976,14 +980,16 @@ class MediaRouter2ServiceImpl {
        public final IMediaRouter2 mRouter;
        public final IMediaRouter2 mRouter;
        public final int mUid;
        public final int mUid;
        public final int mPid;
        public final int mPid;
        public final boolean mTrusted;
        public final boolean mHasConfigureWifiDisplayPermission;
        public final boolean mHasModifyAudioRoutingPermission;
        public final int mRouterId;
        public final int mRouterId;


        public RouteDiscoveryPreference mDiscoveryPreference;
        public RouteDiscoveryPreference mDiscoveryPreference;
        public MediaRoute2Info mSelectedRoute;
        public MediaRoute2Info mSelectedRoute;


        RouterRecord(UserRecord userRecord, IMediaRouter2 router,
        RouterRecord(UserRecord userRecord, IMediaRouter2 router, int uid, int pid,
                int uid, int pid, String packageName, boolean trusted) {
                String packageName, boolean hasConfigureWifiDisplayPermission,
                boolean hasModifyAudioRoutingPermission) {
            mUserRecord = userRecord;
            mUserRecord = userRecord;
            mPackageName = packageName;
            mPackageName = packageName;
            mSelectRouteSequenceNumbers = new ArrayList<>();
            mSelectRouteSequenceNumbers = new ArrayList<>();
@@ -991,7 +997,8 @@ class MediaRouter2ServiceImpl {
            mRouter = router;
            mRouter = router;
            mUid = uid;
            mUid = uid;
            mPid = pid;
            mPid = pid;
            mTrusted = trusted;
            mHasConfigureWifiDisplayPermission = hasConfigureWifiDisplayPermission;
            mHasModifyAudioRoutingPermission = hasModifyAudioRoutingPermission;
            mRouterId = mNextRouterOrManagerId.getAndIncrement();
            mRouterId = mNextRouterOrManagerId.getAndIncrement();
        }
        }


@@ -1011,17 +1018,15 @@ class MediaRouter2ServiceImpl {
        public final int mUid;
        public final int mUid;
        public final int mPid;
        public final int mPid;
        public final String mPackageName;
        public final String mPackageName;
        public final boolean mTrusted;
        public final int mManagerId;
        public final int mManagerId;


        ManagerRecord(UserRecord userRecord, IMediaRouter2Manager manager,
        ManagerRecord(UserRecord userRecord, IMediaRouter2Manager manager,
                int uid, int pid, String packageName, boolean trusted) {
                int uid, int pid, String packageName) {
            mUserRecord = userRecord;
            mUserRecord = userRecord;
            mManager = manager;
            mManager = manager;
            mUid = uid;
            mUid = uid;
            mPid = pid;
            mPid = pid;
            mPackageName = packageName;
            mPackageName = packageName;
            mTrusted = trusted;
            mManagerId = mNextRouterOrManagerId.getAndIncrement();
            mManagerId = mNextRouterOrManagerId.getAndIncrement();
        }
        }


@@ -1036,9 +1041,6 @@ class MediaRouter2ServiceImpl {


        public void dump(PrintWriter pw, String prefix) {
        public void dump(PrintWriter pw, String prefix) {
            pw.println(prefix + this);
            pw.println(prefix + this);

            final String indent = prefix + "  ";
            pw.println(indent + "mTrusted=" + mTrusted);
        }
        }


        @Override
        @Override