Merge "Add Separator comments in MediaRouter2ServiceImpl"

This commit is contained in:
Bishoy Gendy
2022-11-01 11:40:16 +00:00
committed by Android (Google) Code Review

View File

@@ -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() {
@@ -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)) {
@@ -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) {
@@ -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");
@@ -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,
@@ -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();
@@ -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);
@@ -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;
}