summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2019-01-17 16:32:12 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2019-01-17 16:32:12 +0000
commit3d404e7836afc50009120688c5ad3db8dac3dbc0 (patch)
treebf3003086983e6b113c29c141e5b26f2f52e0125
parentce2b5758afb4cce150450de1e10943f5a2007595 (diff)
parentf8e970a923d41dca2c7b9967c40344d25bf0edcc (diff)
Merge "MediaSession2: Fix controller is disconnected immediatly after connected"
-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();
}
});
}