summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jaewan Kim <jaewan@google.com> 2019-01-17 21:53:39 +0900
committer Jaewan Kim <jaewan@google.com> 2019-01-17 21:55:58 +0900
commitf8e970a923d41dca2c7b9967c40344d25bf0edcc (patch)
tree687ae647ae2f6d067c81f3fdd0ac277dfc4e8189
parent842af1ecd6d57751cde99ab402ee7e82f6003017 (diff)
MediaSession2: Fix controller is disconnected immediatly after connected
This is regression introduced by my previous commit 45d94a4844e9 MediaSession2Service: Initial commit Test: Run CTS Change-Id: Id1490e1897e502c2a6008e5ed72158d4d5cf9685
-rw-r--r--media/java/android/media/MediaSession2.java16
1 files changed, 10 insertions, 6 deletions
diff --git a/media/java/android/media/MediaSession2.java b/media/java/android/media/MediaSession2.java
index dceef34596b7..04999cace5e0 100644
--- a/media/java/android/media/MediaSession2.java
+++ b/media/java/android/media/MediaSession2.java
@@ -239,7 +239,7 @@ public class MediaSession2 implements AutoCloseable {
final ControllerInfo controllerInfo = new ControllerInfo(remoteUserInfo,
mSessionManager.isTrustedForMediaControl(remoteUserInfo), controller);
mCallbackExecutor.execute(() -> {
- boolean accept = false;
+ boolean connected = false;
try {
if (isClosed()) {
return;
@@ -249,8 +249,7 @@ public class MediaSession2 implements AutoCloseable {
// Don't reject connection for the request from trusted app.
// Otherwise server will fail to retrieve session's information to dispatch
// media keys to.
- accept = controllerInfo.mAllowedCommands != null || controllerInfo.isTrusted();
- if (!accept) {
+ if (controllerInfo.mAllowedCommands == null && !controllerInfo.isTrusted()) {
return;
}
if (controllerInfo.mAllowedCommands == null) {
@@ -283,13 +282,18 @@ public class MediaSession2 implements AutoCloseable {
return;
}
controllerInfo.notifyConnected(connectionResult);
+ connected = true;
} finally {
- if (!accept) {
+ if (!connected) {
if (DEBUG) {
- Log.d(TAG, "Rejecting connection, controllerInfo=" + controllerInfo);
+ Log.d(TAG, "Rejecting connection or notifying that session is closed"
+ + ", controllerInfo=" + controllerInfo);
}
+ synchronized (mLock) {
+ mConnectedControllers.remove(controller);
+ }
+ controllerInfo.notifyDisconnected();
}
- controllerInfo.notifyDisconnected();
}
});
}