Loading services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java +23 −21 Original line number Diff line number Diff line Loading @@ -155,13 +155,18 @@ class MediaRouter2ServiceImpl { final int uid = Binder.getCallingUid(); final int pid = Binder.getCallingPid(); final int userId = UserHandle.getUserHandleForUid(uid).getIdentifier(); final boolean trusted = mContext.checkCallingOrSelfPermission( final boolean hasConfigureWifiDisplayPermission = mContext.checkCallingOrSelfPermission( android.Manifest.permission.CONFIGURE_WIFI_DISPLAY) == PackageManager.PERMISSION_GRANTED; final boolean hasModifyAudioRoutingPermission = mContext.checkCallingOrSelfPermission( android.Manifest.permission.MODIFY_AUDIO_ROUTING) == PackageManager.PERMISSION_GRANTED; final long token = Binder.clearCallingIdentity(); try { synchronized (mLock) { registerRouter2Locked(router, uid, pid, packageName, userId, trusted); registerRouter2Locked(router, uid, pid, packageName, userId, hasConfigureWifiDisplayPermission, hasModifyAudioRoutingPermission); } } finally { Binder.restoreCallingIdentity(token); Loading Loading @@ -341,8 +346,6 @@ class MediaRouter2ServiceImpl { throw new IllegalArgumentException("packageName must not be empty"); } final boolean trusted = true; final int uid = Binder.getCallingUid(); final int pid = Binder.getCallingPid(); final int userId = UserHandle.getUserHandleForUid(uid).getIdentifier(); Loading @@ -350,7 +353,7 @@ class MediaRouter2ServiceImpl { final long token = Binder.clearCallingIdentity(); try { synchronized (mLock) { registerManagerLocked(manager, uid, pid, packageName, userId, trusted); registerManagerLocked(manager, uid, pid, packageName, userId); } } finally { Binder.restoreCallingIdentity(token); Loading Loading @@ -532,7 +535,8 @@ class MediaRouter2ServiceImpl { //////////////////////////////////////////////////////////////// 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(); if (mAllRouterRecords.get(binder) != null) { Slog.w(TAG, "Same router already exists. packageName=" + packageName); Loading @@ -540,8 +544,8 @@ class MediaRouter2ServiceImpl { } UserRecord userRecord = getOrCreateUserRecordLocked(userId); RouterRecord routerRecord = new RouterRecord( userRecord, router, uid, pid, packageName, trusted); RouterRecord routerRecord = new RouterRecord(userRecord, router, uid, pid, packageName, hasConfigureWifiDisplayPermission, hasModifyAudioRoutingPermission); try { binder.linkToDeath(routerRecord, 0); } catch (RemoteException ex) { Loading Loading @@ -711,7 +715,7 @@ class MediaRouter2ServiceImpl { } 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(); ManagerRecord managerRecord = mAllManagerRecords.get(binder); Loading @@ -721,7 +725,7 @@ class MediaRouter2ServiceImpl { } UserRecord userRecord = getOrCreateUserRecordLocked(userId); managerRecord = new ManagerRecord(userRecord, manager, uid, pid, packageName, trusted); managerRecord = new ManagerRecord(userRecord, manager, uid, pid, packageName); try { binder.linkToDeath(managerRecord, 0); } catch (RemoteException ex) { Loading Loading @@ -778,7 +782,7 @@ class MediaRouter2ServiceImpl { @NonNull IMediaRouter2Manager manager, @NonNull String packageName, @NonNull MediaRoute2Info route) { ManagerRecord managerRecord = mAllManagerRecords.get(manager.asBinder()); if (managerRecord == null || !managerRecord.mTrusted) { if (managerRecord == null) { return; } Loading Loading @@ -976,14 +980,16 @@ class MediaRouter2ServiceImpl { public final IMediaRouter2 mRouter; public final int mUid; public final int mPid; public final boolean mTrusted; public final boolean mHasConfigureWifiDisplayPermission; public final boolean mHasModifyAudioRoutingPermission; public final int mRouterId; public RouteDiscoveryPreference mDiscoveryPreference; public MediaRoute2Info mSelectedRoute; RouterRecord(UserRecord userRecord, IMediaRouter2 router, int uid, int pid, String packageName, boolean trusted) { RouterRecord(UserRecord userRecord, IMediaRouter2 router, int uid, int pid, String packageName, boolean hasConfigureWifiDisplayPermission, boolean hasModifyAudioRoutingPermission) { mUserRecord = userRecord; mPackageName = packageName; mSelectRouteSequenceNumbers = new ArrayList<>(); Loading @@ -991,7 +997,8 @@ class MediaRouter2ServiceImpl { mRouter = router; mUid = uid; mPid = pid; mTrusted = trusted; mHasConfigureWifiDisplayPermission = hasConfigureWifiDisplayPermission; mHasModifyAudioRoutingPermission = hasModifyAudioRoutingPermission; mRouterId = mNextRouterOrManagerId.getAndIncrement(); } Loading @@ -1011,17 +1018,15 @@ class MediaRouter2ServiceImpl { public final int mUid; public final int mPid; public final String mPackageName; public final boolean mTrusted; public final int mManagerId; ManagerRecord(UserRecord userRecord, IMediaRouter2Manager manager, int uid, int pid, String packageName, boolean trusted) { int uid, int pid, String packageName) { mUserRecord = userRecord; mManager = manager; mUid = uid; mPid = pid; mPackageName = packageName; mTrusted = trusted; mManagerId = mNextRouterOrManagerId.getAndIncrement(); } Loading @@ -1036,9 +1041,6 @@ class MediaRouter2ServiceImpl { public void dump(PrintWriter pw, String prefix) { pw.println(prefix + this); final String indent = prefix + " "; pw.println(indent + "mTrusted=" + mTrusted); } @Override Loading Loading
services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java +23 −21 Original line number Diff line number Diff line Loading @@ -155,13 +155,18 @@ class MediaRouter2ServiceImpl { final int uid = Binder.getCallingUid(); final int pid = Binder.getCallingPid(); final int userId = UserHandle.getUserHandleForUid(uid).getIdentifier(); final boolean trusted = mContext.checkCallingOrSelfPermission( final boolean hasConfigureWifiDisplayPermission = mContext.checkCallingOrSelfPermission( android.Manifest.permission.CONFIGURE_WIFI_DISPLAY) == PackageManager.PERMISSION_GRANTED; final boolean hasModifyAudioRoutingPermission = mContext.checkCallingOrSelfPermission( android.Manifest.permission.MODIFY_AUDIO_ROUTING) == PackageManager.PERMISSION_GRANTED; final long token = Binder.clearCallingIdentity(); try { synchronized (mLock) { registerRouter2Locked(router, uid, pid, packageName, userId, trusted); registerRouter2Locked(router, uid, pid, packageName, userId, hasConfigureWifiDisplayPermission, hasModifyAudioRoutingPermission); } } finally { Binder.restoreCallingIdentity(token); Loading Loading @@ -341,8 +346,6 @@ class MediaRouter2ServiceImpl { throw new IllegalArgumentException("packageName must not be empty"); } final boolean trusted = true; final int uid = Binder.getCallingUid(); final int pid = Binder.getCallingPid(); final int userId = UserHandle.getUserHandleForUid(uid).getIdentifier(); Loading @@ -350,7 +353,7 @@ class MediaRouter2ServiceImpl { final long token = Binder.clearCallingIdentity(); try { synchronized (mLock) { registerManagerLocked(manager, uid, pid, packageName, userId, trusted); registerManagerLocked(manager, uid, pid, packageName, userId); } } finally { Binder.restoreCallingIdentity(token); Loading Loading @@ -532,7 +535,8 @@ class MediaRouter2ServiceImpl { //////////////////////////////////////////////////////////////// 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(); if (mAllRouterRecords.get(binder) != null) { Slog.w(TAG, "Same router already exists. packageName=" + packageName); Loading @@ -540,8 +544,8 @@ class MediaRouter2ServiceImpl { } UserRecord userRecord = getOrCreateUserRecordLocked(userId); RouterRecord routerRecord = new RouterRecord( userRecord, router, uid, pid, packageName, trusted); RouterRecord routerRecord = new RouterRecord(userRecord, router, uid, pid, packageName, hasConfigureWifiDisplayPermission, hasModifyAudioRoutingPermission); try { binder.linkToDeath(routerRecord, 0); } catch (RemoteException ex) { Loading Loading @@ -711,7 +715,7 @@ class MediaRouter2ServiceImpl { } 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(); ManagerRecord managerRecord = mAllManagerRecords.get(binder); Loading @@ -721,7 +725,7 @@ class MediaRouter2ServiceImpl { } UserRecord userRecord = getOrCreateUserRecordLocked(userId); managerRecord = new ManagerRecord(userRecord, manager, uid, pid, packageName, trusted); managerRecord = new ManagerRecord(userRecord, manager, uid, pid, packageName); try { binder.linkToDeath(managerRecord, 0); } catch (RemoteException ex) { Loading Loading @@ -778,7 +782,7 @@ class MediaRouter2ServiceImpl { @NonNull IMediaRouter2Manager manager, @NonNull String packageName, @NonNull MediaRoute2Info route) { ManagerRecord managerRecord = mAllManagerRecords.get(manager.asBinder()); if (managerRecord == null || !managerRecord.mTrusted) { if (managerRecord == null) { return; } Loading Loading @@ -976,14 +980,16 @@ class MediaRouter2ServiceImpl { public final IMediaRouter2 mRouter; public final int mUid; public final int mPid; public final boolean mTrusted; public final boolean mHasConfigureWifiDisplayPermission; public final boolean mHasModifyAudioRoutingPermission; public final int mRouterId; public RouteDiscoveryPreference mDiscoveryPreference; public MediaRoute2Info mSelectedRoute; RouterRecord(UserRecord userRecord, IMediaRouter2 router, int uid, int pid, String packageName, boolean trusted) { RouterRecord(UserRecord userRecord, IMediaRouter2 router, int uid, int pid, String packageName, boolean hasConfigureWifiDisplayPermission, boolean hasModifyAudioRoutingPermission) { mUserRecord = userRecord; mPackageName = packageName; mSelectRouteSequenceNumbers = new ArrayList<>(); Loading @@ -991,7 +997,8 @@ class MediaRouter2ServiceImpl { mRouter = router; mUid = uid; mPid = pid; mTrusted = trusted; mHasConfigureWifiDisplayPermission = hasConfigureWifiDisplayPermission; mHasModifyAudioRoutingPermission = hasModifyAudioRoutingPermission; mRouterId = mNextRouterOrManagerId.getAndIncrement(); } Loading @@ -1011,17 +1018,15 @@ class MediaRouter2ServiceImpl { public final int mUid; public final int mPid; public final String mPackageName; public final boolean mTrusted; public final int mManagerId; ManagerRecord(UserRecord userRecord, IMediaRouter2Manager manager, int uid, int pid, String packageName, boolean trusted) { int uid, int pid, String packageName) { mUserRecord = userRecord; mManager = manager; mUid = uid; mPid = pid; mPackageName = packageName; mTrusted = trusted; mManagerId = mNextRouterOrManagerId.getAndIncrement(); } Loading @@ -1036,9 +1041,6 @@ class MediaRouter2ServiceImpl { public void dump(PrintWriter pw, String prefix) { pw.println(prefix + this); final String indent = prefix + " "; pw.println(indent + "mTrusted=" + mTrusted); } @Override Loading