From 23a9e178743b9ab79ed3964c4b4365c5c96aa282 Mon Sep 17 00:00:00 2001 From: Hyundo Moon Date: Mon, 8 Jun 2020 15:45:22 +0900 Subject: [PATCH] MediaRouter2: Add missing synchronized(sRouterLock) block Bug: 157873496 Test: Builds successfully Change-Id: I87882c642bcdd93a2fedd9ad2c6c5dc54eada598 --- media/java/android/media/MediaRouter2.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/media/java/android/media/MediaRouter2.java b/media/java/android/media/MediaRouter2.java index 20e26cd66e34e..e767c68f13ac9 100644 --- a/media/java/android/media/MediaRouter2.java +++ b/media/java/android/media/MediaRouter2.java @@ -399,11 +399,16 @@ public final class MediaRouter2 { Objects.requireNonNull(controller, "controller must not be null"); Objects.requireNonNull(route, "route must not be null"); - // TODO(b/157873496): Check thread-safety, at least check "sRouterLock" for every variable - if (!mRoutes.containsKey(route.getId())) { + boolean routeFound; + synchronized (sRouterLock) { + // TODO: Check thread-safety + routeFound = mRoutes.containsKey(route.getId()); + } + if (!routeFound) { notifyTransferFailure(route); return; } + if (controller.getRoutingSessionInfo().getTransferableRoutes().contains(route.getId())) { controller.transferToRoute(route); return; @@ -572,10 +577,6 @@ public final class MediaRouter2 { } void addRoutesOnHandler(List routes) { - // TODO(b/157874065): When onRoutesAdded is first called, - // 1) clear mRoutes before adding the routes - // 2) Call onRouteSelected(system_route, reason_fallback) if previously selected route - // does not exist anymore. => We may need 'boolean MediaRoute2Info#isSystemRoute()'. List addedRoutes = new ArrayList<>(); synchronized (sRouterLock) { for (MediaRoute2Info route : routes) {