Loading services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java +62 −42 Original line number Diff line number Diff line Loading @@ -151,7 +151,7 @@ class MediaRouter2ServiceImpl { mContext.registerReceiver(mScreenOnOffReceiver, screenOnOffIntentFilter); } // Methods that implement MediaRouter2 operations. // Start of methods that implement MediaRouter2 operations. @NonNull public void enforceMediaContentControlPermission() { Loading Loading @@ -199,46 +199,6 @@ class MediaRouter2ServiceImpl { } } @NonNull public RoutingSessionInfo getSystemSessionInfo( @Nullable String packageName, boolean setDeviceRouteSelected) { final int uid = Binder.getCallingUid(); final int userId = UserHandle.getUserHandleForUid(uid).getIdentifier(); final boolean hasModifyAudioRoutingPermission = mContext.checkCallingOrSelfPermission( android.Manifest.permission.MODIFY_AUDIO_ROUTING) == PackageManager.PERMISSION_GRANTED; final long token = Binder.clearCallingIdentity(); try { RoutingSessionInfo systemSessionInfo = null; synchronized (mLock) { UserRecord userRecord = getOrCreateUserRecordLocked(userId); List<RoutingSessionInfo> sessionInfos; if (hasModifyAudioRoutingPermission) { if (setDeviceRouteSelected) { systemSessionInfo = userRecord.mHandler.mSystemProvider .generateDeviceRouteSelectedSessionInfo(packageName); } else { sessionInfos = userRecord.mHandler.mSystemProvider.getSessionInfos(); if (sessionInfos != null && !sessionInfos.isEmpty()) { systemSessionInfo = new RoutingSessionInfo.Builder(sessionInfos.get(0)) .setClientPackageName(packageName).build(); } else { Slog.w(TAG, "System provider does not have any session info."); } } } else { systemSessionInfo = new RoutingSessionInfo.Builder( userRecord.mHandler.mSystemProvider.getDefaultSessionInfo()) .setClientPackageName(packageName).build(); } } return systemSessionInfo; } finally { Binder.restoreCallingIdentity(token); } } public void registerRouter2(@NonNull IMediaRouter2 router, @NonNull String packageName) { Objects.requireNonNull(router, "router must not be null"); if (TextUtils.isEmpty(packageName)) { Loading Loading @@ -418,7 +378,9 @@ class MediaRouter2ServiceImpl { } } // Methods that implement MediaRouter2Manager operations. // End of methods that implement MediaRouter2 operations. // Start of methods that implement MediaRouter2Manager operations. @NonNull public List<RoutingSessionInfo> getRemoteSessions(@NonNull IMediaRouter2Manager manager) { Loading Loading @@ -610,6 +572,52 @@ class MediaRouter2ServiceImpl { } } // End of methods that implement MediaRouter2Manager operations. // Start of methods that implements operations for both MediaRouter2 and MediaRouter2Manager. @NonNull public RoutingSessionInfo getSystemSessionInfo( @Nullable String packageName, boolean setDeviceRouteSelected) { final int uid = Binder.getCallingUid(); final int userId = UserHandle.getUserHandleForUid(uid).getIdentifier(); final boolean hasModifyAudioRoutingPermission = mContext.checkCallingOrSelfPermission( android.Manifest.permission.MODIFY_AUDIO_ROUTING) == PackageManager.PERMISSION_GRANTED; final long token = Binder.clearCallingIdentity(); try { RoutingSessionInfo systemSessionInfo = null; synchronized (mLock) { UserRecord userRecord = getOrCreateUserRecordLocked(userId); List<RoutingSessionInfo> sessionInfos; if (hasModifyAudioRoutingPermission) { if (setDeviceRouteSelected) { systemSessionInfo = userRecord.mHandler.mSystemProvider .generateDeviceRouteSelectedSessionInfo(packageName); } else { sessionInfos = userRecord.mHandler.mSystemProvider.getSessionInfos(); if (sessionInfos != null && !sessionInfos.isEmpty()) { systemSessionInfo = new RoutingSessionInfo.Builder(sessionInfos.get(0)) .setClientPackageName(packageName).build(); } else { Slog.w(TAG, "System provider does not have any session info."); } } } else { systemSessionInfo = new RoutingSessionInfo.Builder( userRecord.mHandler.mSystemProvider.getDefaultSessionInfo()) .setClientPackageName(packageName).build(); } } return systemSessionInfo; } finally { Binder.restoreCallingIdentity(token); } } // End of methods that implements operations for both MediaRouter2 and MediaRouter2Manager. public void dump(@NonNull PrintWriter pw, @NonNull String prefix) { pw.println(prefix + "MediaRouter2ServiceImpl"); Loading Loading @@ -678,6 +686,8 @@ class MediaRouter2ServiceImpl { return mUserManagerInternal.getProfileParentId(userId) == mCurrentActiveUserId; } // Start of locked methods that are used by MediaRouter2. @GuardedBy("mLock") private void registerRouter2Locked(@NonNull IMediaRouter2 router, int uid, int pid, @NonNull String packageName, int userId, boolean hasConfigureWifiDisplayPermission, Loading Loading @@ -952,6 +962,10 @@ class MediaRouter2ServiceImpl { DUMMY_REQUEST_ID, routerRecord, uniqueSessionId)); } // End of locked methods that are used by MediaRouter2. // Start of locked methods that are used by MediaRouter2Manager. private List<RoutingSessionInfo> getRemoteSessionsLocked( @NonNull IMediaRouter2Manager manager) { final IBinder binder = manager.asBinder(); Loading Loading @@ -1260,6 +1274,10 @@ class MediaRouter2ServiceImpl { uniqueRequestId, routerRecord, uniqueSessionId)); } // End of locked methods that are used by MediaRouter2Manager. // Start of locked methods that are used by both MediaRouter2 and MediaRouter2Manager. @GuardedBy("mLock") private UserRecord getOrCreateUserRecordLocked(int userId) { UserRecord userRecord = mUserRecords.get(userId); Loading Loading @@ -1294,6 +1312,8 @@ class MediaRouter2ServiceImpl { } } // End of locked methods that are used by both MediaRouter2 and MediaRouter2Manager. static long toUniqueRequestId(int requesterId, int originalRequestId) { return ((long) requesterId << 32) | originalRequestId; } Loading Loading
services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java +62 −42 Original line number Diff line number Diff line Loading @@ -151,7 +151,7 @@ class MediaRouter2ServiceImpl { mContext.registerReceiver(mScreenOnOffReceiver, screenOnOffIntentFilter); } // Methods that implement MediaRouter2 operations. // Start of methods that implement MediaRouter2 operations. @NonNull public void enforceMediaContentControlPermission() { Loading Loading @@ -199,46 +199,6 @@ class MediaRouter2ServiceImpl { } } @NonNull public RoutingSessionInfo getSystemSessionInfo( @Nullable String packageName, boolean setDeviceRouteSelected) { final int uid = Binder.getCallingUid(); final int userId = UserHandle.getUserHandleForUid(uid).getIdentifier(); final boolean hasModifyAudioRoutingPermission = mContext.checkCallingOrSelfPermission( android.Manifest.permission.MODIFY_AUDIO_ROUTING) == PackageManager.PERMISSION_GRANTED; final long token = Binder.clearCallingIdentity(); try { RoutingSessionInfo systemSessionInfo = null; synchronized (mLock) { UserRecord userRecord = getOrCreateUserRecordLocked(userId); List<RoutingSessionInfo> sessionInfos; if (hasModifyAudioRoutingPermission) { if (setDeviceRouteSelected) { systemSessionInfo = userRecord.mHandler.mSystemProvider .generateDeviceRouteSelectedSessionInfo(packageName); } else { sessionInfos = userRecord.mHandler.mSystemProvider.getSessionInfos(); if (sessionInfos != null && !sessionInfos.isEmpty()) { systemSessionInfo = new RoutingSessionInfo.Builder(sessionInfos.get(0)) .setClientPackageName(packageName).build(); } else { Slog.w(TAG, "System provider does not have any session info."); } } } else { systemSessionInfo = new RoutingSessionInfo.Builder( userRecord.mHandler.mSystemProvider.getDefaultSessionInfo()) .setClientPackageName(packageName).build(); } } return systemSessionInfo; } finally { Binder.restoreCallingIdentity(token); } } public void registerRouter2(@NonNull IMediaRouter2 router, @NonNull String packageName) { Objects.requireNonNull(router, "router must not be null"); if (TextUtils.isEmpty(packageName)) { Loading Loading @@ -418,7 +378,9 @@ class MediaRouter2ServiceImpl { } } // Methods that implement MediaRouter2Manager operations. // End of methods that implement MediaRouter2 operations. // Start of methods that implement MediaRouter2Manager operations. @NonNull public List<RoutingSessionInfo> getRemoteSessions(@NonNull IMediaRouter2Manager manager) { Loading Loading @@ -610,6 +572,52 @@ class MediaRouter2ServiceImpl { } } // End of methods that implement MediaRouter2Manager operations. // Start of methods that implements operations for both MediaRouter2 and MediaRouter2Manager. @NonNull public RoutingSessionInfo getSystemSessionInfo( @Nullable String packageName, boolean setDeviceRouteSelected) { final int uid = Binder.getCallingUid(); final int userId = UserHandle.getUserHandleForUid(uid).getIdentifier(); final boolean hasModifyAudioRoutingPermission = mContext.checkCallingOrSelfPermission( android.Manifest.permission.MODIFY_AUDIO_ROUTING) == PackageManager.PERMISSION_GRANTED; final long token = Binder.clearCallingIdentity(); try { RoutingSessionInfo systemSessionInfo = null; synchronized (mLock) { UserRecord userRecord = getOrCreateUserRecordLocked(userId); List<RoutingSessionInfo> sessionInfos; if (hasModifyAudioRoutingPermission) { if (setDeviceRouteSelected) { systemSessionInfo = userRecord.mHandler.mSystemProvider .generateDeviceRouteSelectedSessionInfo(packageName); } else { sessionInfos = userRecord.mHandler.mSystemProvider.getSessionInfos(); if (sessionInfos != null && !sessionInfos.isEmpty()) { systemSessionInfo = new RoutingSessionInfo.Builder(sessionInfos.get(0)) .setClientPackageName(packageName).build(); } else { Slog.w(TAG, "System provider does not have any session info."); } } } else { systemSessionInfo = new RoutingSessionInfo.Builder( userRecord.mHandler.mSystemProvider.getDefaultSessionInfo()) .setClientPackageName(packageName).build(); } } return systemSessionInfo; } finally { Binder.restoreCallingIdentity(token); } } // End of methods that implements operations for both MediaRouter2 and MediaRouter2Manager. public void dump(@NonNull PrintWriter pw, @NonNull String prefix) { pw.println(prefix + "MediaRouter2ServiceImpl"); Loading Loading @@ -678,6 +686,8 @@ class MediaRouter2ServiceImpl { return mUserManagerInternal.getProfileParentId(userId) == mCurrentActiveUserId; } // Start of locked methods that are used by MediaRouter2. @GuardedBy("mLock") private void registerRouter2Locked(@NonNull IMediaRouter2 router, int uid, int pid, @NonNull String packageName, int userId, boolean hasConfigureWifiDisplayPermission, Loading Loading @@ -952,6 +962,10 @@ class MediaRouter2ServiceImpl { DUMMY_REQUEST_ID, routerRecord, uniqueSessionId)); } // End of locked methods that are used by MediaRouter2. // Start of locked methods that are used by MediaRouter2Manager. private List<RoutingSessionInfo> getRemoteSessionsLocked( @NonNull IMediaRouter2Manager manager) { final IBinder binder = manager.asBinder(); Loading Loading @@ -1260,6 +1274,10 @@ class MediaRouter2ServiceImpl { uniqueRequestId, routerRecord, uniqueSessionId)); } // End of locked methods that are used by MediaRouter2Manager. // Start of locked methods that are used by both MediaRouter2 and MediaRouter2Manager. @GuardedBy("mLock") private UserRecord getOrCreateUserRecordLocked(int userId) { UserRecord userRecord = mUserRecords.get(userId); Loading Loading @@ -1294,6 +1312,8 @@ class MediaRouter2ServiceImpl { } } // End of locked methods that are used by both MediaRouter2 and MediaRouter2Manager. static long toUniqueRequestId(int requesterId, int originalRequestId) { return ((long) requesterId << 32) | originalRequestId; } Loading