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

Commit 5f4c9e29 authored by Bishoy Gendy's avatar Bishoy Gendy Committed by Android (Google) Code Review
Browse files

Merge "Add Separator comments in MediaRouter2ServiceImpl"

parents f0cd18e1 d1a9b761
Loading
Loading
Loading
Loading
+62 −42
Original line number Diff line number Diff line
@@ -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;
    }