Merge "Log route additions and removals to dumpsys"
diff --git a/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java b/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java
index 5623596..026c007 100644
--- a/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java
+++ b/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java
@@ -1742,6 +1742,9 @@
indexOfRouteProviderInfoByUniqueId(provider.getUniqueId(), mLastProviderInfos);
MediaRoute2ProviderInfo oldInfo =
providerInfoIndex == -1 ? null : mLastProviderInfos.get(providerInfoIndex);
+ MediaRouter2ServiceImpl mediaRouter2Service = mServiceRef.get();
+ EventLogger eventLogger =
+ mediaRouter2Service != null ? mediaRouter2Service.mEventLogger : null;
if (oldInfo == newInfo) {
// Nothing to do.
return;
@@ -1767,6 +1770,7 @@
}
// Add new routes to the maps.
+ ArrayList<MediaRoute2Info> addedRoutes = new ArrayList<>();
boolean hasAddedOrModifiedRoutes = false;
for (MediaRoute2Info newRouteInfo : newRoutes) {
if (!newRouteInfo.isValid()) {
@@ -1781,11 +1785,14 @@
MediaRoute2Info oldRouteInfo =
mLastNotifiedRoutesToPrivilegedRouters.put(
newRouteInfo.getId(), newRouteInfo);
- hasAddedOrModifiedRoutes |=
- oldRouteInfo == null || !oldRouteInfo.equals(newRouteInfo);
+ hasAddedOrModifiedRoutes |= !newRouteInfo.equals(oldRouteInfo);
+ if (oldRouteInfo == null) {
+ addedRoutes.add(newRouteInfo);
+ }
}
// Remove stale routes from the maps.
+ ArrayList<MediaRoute2Info> removedRoutes = new ArrayList<>();
Collection<MediaRoute2Info> oldRoutes =
oldInfo == null ? Collections.emptyList() : oldInfo.getRoutes();
boolean hasRemovedRoutes = false;
@@ -1795,6 +1802,26 @@
hasRemovedRoutes = true;
mLastNotifiedRoutesToPrivilegedRouters.remove(oldRouteId);
mLastNotifiedRoutesToNonPrivilegedRouters.remove(oldRouteId);
+ removedRoutes.add(oldRoute);
+ }
+ }
+
+ if (eventLogger != null) {
+ if (!addedRoutes.isEmpty()) {
+ // If routes were added, newInfo cannot be null.
+ eventLogger.enqueue(
+ toLoggingEvent(
+ /* source= */ "addProviderRoutes",
+ newInfo.getUniqueId(),
+ addedRoutes));
+ }
+ if (!removedRoutes.isEmpty()) {
+ // If routes were removed, oldInfo cannot be null.
+ eventLogger.enqueue(
+ toLoggingEvent(
+ /* source= */ "removeProviderRoutes",
+ oldInfo.getUniqueId(),
+ removedRoutes));
}
}
@@ -1805,6 +1832,16 @@
mSystemProvider.getDefaultRoute());
}
+ private static EventLogger.Event toLoggingEvent(
+ String source, String providerId, ArrayList<MediaRoute2Info> routes) {
+ String routesString =
+ routes.stream()
+ .map(it -> String.format("%s | %s", it.getOriginalId(), it.getName()))
+ .collect(Collectors.joining(/* delimiter= */ ", "));
+ return EventLogger.StringEvent.from(
+ source, "provider: %s, routes: [%s]", providerId, routesString);
+ }
+
/**
* Dispatches the latest route updates in {@link #mLastNotifiedRoutesToPrivilegedRouters}
* and {@link #mLastNotifiedRoutesToNonPrivilegedRouters} to registered {@link