diff options
| author | 2024-08-15 16:58:26 +0000 | |
|---|---|---|
| committer | 2024-08-15 17:27:15 +0000 | |
| commit | e6a15b85fa182f170cd269390844dc95a1676897 (patch) | |
| tree | 7bf81a70e61d959e76d2a2e225f53925f4f3a27b | |
| parent | cd6001f11065f065c8ab20376e460b41e96d2414 (diff) | |
Encapsulate record operations
This change is a pure refactor that puts operations on a record object
as a member method. Also add some javadocs.
Bug: b/360129098
Test: atest CtsMediaBetterTogetherTestCases CtsMediaHostTestCases
Flag: EXEMPT refactor
Change-Id: Ie703b3bfebb42430a91d7e6701518d613e00b1e9
| -rw-r--r-- | services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java | 186 |
1 files changed, 101 insertions, 85 deletions
diff --git a/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java b/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java index 1070f2f8faf1..e1b8e9f559ed 100644 --- a/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java +++ b/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java @@ -1364,14 +1364,14 @@ class MediaRouter2ServiceImpl { if (manager == null || manager.mLastSessionCreationRequest == null) { Slog.w(TAG, "requestCreateSessionWithRouter2Locked: " + "Ignoring unknown request."); - userHandler.notifySessionCreationFailedToRouter(routerRecord, requestId); + routerRecord.notifySessionCreationFailed(requestId); return; } if (!TextUtils.equals(manager.mLastSessionCreationRequest.mOldSession.getId(), oldSession.getId())) { Slog.w(TAG, "requestCreateSessionWithRouter2Locked: " + "Ignoring unmatched routing session."); - userHandler.notifySessionCreationFailedToRouter(routerRecord, requestId); + routerRecord.notifySessionCreationFailed(requestId); return; } if (!TextUtils.equals(manager.mLastSessionCreationRequest.mRoute.getId(), @@ -1384,7 +1384,7 @@ class MediaRouter2ServiceImpl { } else { Slog.w(TAG, "requestCreateSessionWithRouter2Locked: " + "Ignoring unmatched route."); - userHandler.notifySessionCreationFailedToRouter(routerRecord, requestId); + routerRecord.notifySessionCreationFailed(requestId); return; } } @@ -1396,7 +1396,7 @@ class MediaRouter2ServiceImpl { && !TextUtils.equals(route.getId(), defaultRouteId)) { Slog.w(TAG, "MODIFY_AUDIO_ROUTING permission is required to transfer to" + route); - userHandler.notifySessionCreationFailedToRouter(routerRecord, requestId); + routerRecord.notifySessionCreationFailed(requestId); return; } } @@ -1484,8 +1484,7 @@ class MediaRouter2ServiceImpl { && !TextUtils.equals(route.getId(), defaultRouteId)) { userHandler.sendMessage( obtainMessage( - UserHandler::notifySessionCreationFailedToRouter, - userHandler, + RouterRecord::notifySessionCreationFailed, routerRecord, toOriginalRequestId(DUMMY_REQUEST_ID))); } else { @@ -1762,12 +1761,7 @@ class MediaRouter2ServiceImpl { if (routerRecord == null) { Slog.w(TAG, "requestCreateSessionWithManagerLocked: Ignoring session creation for " + "unknown router."); - try { - managerRecord.mManager.notifyRequestFailed(requestId, REASON_UNKNOWN_ERROR); - } catch (RemoteException ex) { - Slog.w(TAG, "requestCreateSessionWithManagerLocked: Failed to notify failure. " - + "Manager probably died."); - } + managerRecord.notifyRequestFailed(requestId, REASON_UNKNOWN_ERROR); return; } @@ -1780,10 +1774,8 @@ class MediaRouter2ServiceImpl { "requestCreateSessionWithManagerLocked: Notifying failure for pending" + " session creation request - oldSession: %s, route: %s", lastRequest.mOldSession, lastRequest.mRoute)); - managerRecord.mUserRecord.mHandler.notifyRequestFailedToManager( - managerRecord.mManager, - toOriginalRequestId(lastRequest.mManagerRequestId), - REASON_UNKNOWN_ERROR); + managerRecord.notifyRequestFailed( + toOriginalRequestId(lastRequest.mManagerRequestId), REASON_UNKNOWN_ERROR); } managerRecord.mLastSessionCreationRequest = new SessionCreationRequest(routerRecord, MediaRoute2ProviderService.REQUEST_ID_NONE, uniqueRequestId, @@ -1793,15 +1785,12 @@ class MediaRouter2ServiceImpl { // As a return, media router will request to create a session. routerRecord.mUserRecord.mHandler.sendMessage( obtainMessage( - UserHandler::requestRouterCreateSessionOnHandler, - routerRecord.mUserRecord.mHandler, - uniqueRequestId, + RouterRecord::requestCreateSessionByManager, routerRecord, managerRecord, + uniqueRequestId, oldSession, - route, - transferInitiatorUserHandle, - transferInitiatorPackageName)); + route)); } @GuardedBy("mLock") @@ -2256,6 +2245,71 @@ class MediaRouter2ServiceImpl { } /** + * Notifies the corresponding router of a request failure. + * + * @param requestId The id of the request that failed. + */ + public void notifySessionCreationFailed(int requestId) { + try { + mRouter.notifySessionCreated(requestId, /* sessionInfo= */ null); + } catch (RemoteException ex) { + Slog.w( + TAG, + "Failed to notify router of the session creation failure." + + " Router probably died.", + ex); + } + } + + /** + * Notifies the corresponding router of the release of the given {@link RoutingSessionInfo}. + */ + public void notifySessionReleased(RoutingSessionInfo sessionInfo) { + try { + mRouter.notifySessionReleased(sessionInfo); + } catch (RemoteException ex) { + Slog.w( + TAG, + "Failed to notify router of the session release. Router probably died.", + ex); + } + } + + /** + * Sends the corresponding router a {@link RoutingSessionInfo session} creation request, + * with the given {@link MediaRoute2Info} as the initial member. + * + * <p>Must be called on the thread of the corresponding {@link UserHandler}. + * + * @param managerRecord The record of the manager that made the request. + * @param uniqueRequestId The id of the request. + * @param oldSession The session from which the transfer originated. + * @param route The initial route member of the session to create. + */ + public void requestCreateSessionByManager( + ManagerRecord managerRecord, + long uniqueRequestId, + RoutingSessionInfo oldSession, + MediaRoute2Info route) { + try { + if (route.isSystemRoute() && !hasSystemRoutingPermission()) { + // The router lacks permission to modify system routing, so we hide system + // route info from them. + route = mUserRecord.mHandler.mSystemProvider.getDefaultRoute(); + } + mRouter.requestCreateSessionByManager(uniqueRequestId, oldSession, route); + } catch (RemoteException ex) { + Slog.w( + TAG, + "getSessionHintsForCreatingSessionOnHandler: " + + "Failed to request. Router probably died.", + ex); + managerRecord.notifyRequestFailed( + toOriginalRequestId(uniqueRequestId), REASON_UNKNOWN_ERROR); + } + } + + /** * Sends the corresponding router an update for the given session. * * <p>Note: These updates are not directly visible to the app. @@ -2360,6 +2414,25 @@ class MediaRouter2ServiceImpl { } } + /** + * Notifies the corresponding manager of a request failure. + * + * <p>Must be called on the thread of the corresponding {@link UserHandler}. + * + * @param requestId The id of the request that failed. + * @param reason The reason of the failure. One of + */ + public void notifyRequestFailed(int requestId, int reason) { + try { + mManager.notifyRequestFailed(requestId, reason); + } catch (RemoteException ex) { + Slog.w( + TAG, + "Failed to notify manager of the request failure. Manager probably died.", + ex); + } + } + private void updateScanningState(@ScanningState int scanningState) { if (mScanningState == scanningState) { return; @@ -2738,30 +2811,6 @@ class MediaRouter2ServiceImpl { return -1; } - private void requestRouterCreateSessionOnHandler( - long uniqueRequestId, - @NonNull RouterRecord routerRecord, - @NonNull ManagerRecord managerRecord, - @NonNull RoutingSessionInfo oldSession, - @NonNull MediaRoute2Info route, - @NonNull UserHandle transferInitiatorUserHandle, - @NonNull String transferInitiatorPackageName) { - try { - if (route.isSystemRoute() && !routerRecord.hasSystemRoutingPermission()) { - // The router lacks permission to modify system routing, so we hide system - // route info from them. - route = mSystemProvider.getDefaultRoute(); - } - routerRecord.mRouter.requestCreateSessionByManager( - uniqueRequestId, oldSession, route); - } catch (RemoteException ex) { - Slog.w(TAG, "getSessionHintsForCreatingSessionOnHandler: " - + "Failed to request. Router probably died.", ex); - notifyRequestFailedToManager(managerRecord.mManager, - toOriginalRequestId(uniqueRequestId), REASON_UNKNOWN_ERROR); - } - } - private void requestCreateSessionWithRouter2OnHandler( long uniqueRequestId, long managerRequestId, @@ -2774,8 +2823,7 @@ class MediaRouter2ServiceImpl { if (provider == null) { Slog.w(TAG, "requestCreateSessionWithRouter2OnHandler: Ignoring session " + "creation request since no provider found for given route=" + route); - notifySessionCreationFailedToRouter(routerRecord, - toOriginalRequestId(uniqueRequestId)); + routerRecord.notifySessionCreationFailed(toOriginalRequestId(uniqueRequestId)); return; } @@ -3054,7 +3102,7 @@ class MediaRouter2ServiceImpl { + sessionInfo); return; } - notifySessionReleasedToRouter(routerRecord, sessionInfo); + routerRecord.notifySessionReleased(sessionInfo); } private void onRequestFailedOnHandler(@NonNull MediaRoute2Provider provider, @@ -3073,8 +3121,7 @@ class MediaRouter2ServiceImpl { final int requesterId = toRequesterId(uniqueRequestId); ManagerRecord manager = findManagerWithId(requesterId); if (manager != null) { - notifyRequestFailedToManager( - manager.mManager, toOriginalRequestId(uniqueRequestId), reason); + manager.notifyRequestFailed(toOriginalRequestId(uniqueRequestId), reason); } // Currently, only manager records can get notified of failures. @@ -3109,40 +3156,19 @@ class MediaRouter2ServiceImpl { // Notify the requester about the failure. // The call should be made by either MediaRouter2 or MediaRouter2Manager. if (matchingRequest.mManagerRequestId == MediaRouter2Manager.REQUEST_ID_NONE) { - notifySessionCreationFailedToRouter( - matchingRequest.mRouterRecord, toOriginalRequestId(uniqueRequestId)); + matchingRequest.mRouterRecord.notifySessionCreationFailed( + toOriginalRequestId(uniqueRequestId)); } else { final int requesterId = toRequesterId(matchingRequest.mManagerRequestId); ManagerRecord manager = findManagerWithId(requesterId); if (manager != null) { - notifyRequestFailedToManager(manager.mManager, + manager.notifyRequestFailed( toOriginalRequestId(matchingRequest.mManagerRequestId), reason); } } return true; } - private void notifySessionCreationFailedToRouter(@NonNull RouterRecord routerRecord, - int requestId) { - try { - routerRecord.mRouter.notifySessionCreated(requestId, - /* sessionInfo= */ null); - } catch (RemoteException ex) { - Slog.w(TAG, "Failed to notify router of the session creation failure." - + " Router probably died.", ex); - } - } - - private void notifySessionReleasedToRouter(@NonNull RouterRecord routerRecord, - @NonNull RoutingSessionInfo sessionInfo) { - try { - routerRecord.mRouter.notifySessionReleased(sessionInfo); - } catch (RemoteException ex) { - Slog.w(TAG, "Failed to notify router of the session release." - + " Router probably died.", ex); - } - } - private List<IMediaRouter2Manager> getManagers() { final List<IMediaRouter2Manager> managers = new ArrayList<>(); MediaRouter2ServiceImpl service = mServiceRef.get(); @@ -3379,16 +3405,6 @@ class MediaRouter2ServiceImpl { // need to update routers other than the one making the update. } - private void notifyRequestFailedToManager(@NonNull IMediaRouter2Manager manager, - int requestId, int reason) { - try { - manager.notifyRequestFailed(requestId, reason); - } catch (RemoteException ex) { - Slog.w(TAG, "Failed to notify manager of the request failure." - + " Manager probably died.", ex); - } - } - private void updateDiscoveryPreferenceOnHandler() { MediaRouter2ServiceImpl service = mServiceRef.get(); if (service == null) { |