From 7294e5fca0dbf49486ec737158537adb6a102427 Mon Sep 17 00:00:00 2001 From: Hyundo Moon Date: Wed, 29 Jan 2020 13:26:14 +0900 Subject: [PATCH] Make MR2ProviderProxy bind again when onBindingDied() is called Bug: 148501442 Test: atest mediaroutertest Change-Id: I8a37d3d9712b2a455ec5d8569cdc5831b5bfc175 --- .../server/media/MediaRoute2ProviderProxy.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/services/core/java/com/android/server/media/MediaRoute2ProviderProxy.java b/services/core/java/com/android/server/media/MediaRoute2ProviderProxy.java index 97614619653e5..e23542edb2143 100644 --- a/services/core/java/com/android/server/media/MediaRoute2ProviderProxy.java +++ b/services/core/java/com/android/server/media/MediaRoute2ProviderProxy.java @@ -42,6 +42,7 @@ import java.util.Objects; /** * Maintains a connection to a particular media route provider service. */ +// TODO: Need to revisit the bind/unbind/connect/disconnect logic in this class. final class MediaRoute2ProviderProxy extends MediaRoute2Provider implements ServiceConnection { private static final String TAG = "MR2ProviderProxy"; private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); @@ -252,6 +253,19 @@ final class MediaRoute2ProviderProxy extends MediaRoute2Provider implements Serv disconnect(); } + @Override + public void onBindingDied(ComponentName name) { + if (DEBUG) { + Slog.d(TAG, this + ": Service binding died"); + } + // TODO: Investigate whether it tries to bind endlessly when the service is + // badly implemented. + if (shouldBind()) { + unbind(); + bind(); + } + } + private void onConnectionReady(Connection connection) { if (mActiveConnection == connection) { mConnectionReady = true;