Merge "MediaController2: Add getConnectedSessionToken()"
diff --git a/api/current.txt b/api/current.txt
index 3cb45c8..f913c91 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -24533,6 +24533,7 @@
     ctor public MediaController2(@NonNull android.content.Context, @NonNull android.media.Session2Token, @NonNull java.util.concurrent.Executor, @NonNull android.media.MediaController2.ControllerCallback);
     method public void cancelSessionCommand(@NonNull Object);
     method public void close();
+    method public android.media.Session2Token getConnectedSessionToken();
     method public boolean isPlaybackActive();
     method @NonNull public Object sendSessionCommand(@NonNull android.media.Session2Command, @Nullable android.os.Bundle);
   }
diff --git a/media/java/android/media/MediaController2.java b/media/java/android/media/MediaController2.java
index 7c5335b..dd97195 100644
--- a/media/java/android/media/MediaController2.java
+++ b/media/java/android/media/MediaController2.java
@@ -152,6 +152,7 @@
                     // No-op
                 }
             }
+            mConnectedToken = null;
             mPendingCommands.clear();
             mRequestedCommandSeqNumbers.clear();
             mCallbackExecutor.execute(() -> {
@@ -162,6 +163,22 @@
     }
 
     /**
+     * Returns {@link Session2Token} of the connected session.
+     * If it is not connected yet, it returns {@code null}.
+     * <p>
+     * This may differ with the {@link Session2Token} from the constructor. For example, if the
+     * controller is created with the token for MediaSession2Service, this would return
+     * token for the {@link MediaSession2} in the service.
+     *
+     * @return Session2Token of the connected session, or {@code null} if not connected
+     */
+    public Session2Token getConnectedSessionToken() {
+        synchronized (mLock) {
+            return mConnectedToken;
+        }
+    }
+
+    /**
      * Returns whether the session's playback is active.
      *
      * @return {@code true} if playback active. {@code false} otherwise.