summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Santiago Seifert <aquilescanta@google.com> 2024-08-15 16:58:26 +0000
committer Santiago Seifert <aquilescanta@google.com> 2024-08-15 17:27:15 +0000
commite6a15b85fa182f170cd269390844dc95a1676897 (patch)
tree7bf81a70e61d959e76d2a2e225f53925f4f3a27b
parentcd6001f11065f065c8ab20376e460b41e96d2414 (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.java186
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) {