Snap for 10609607 from f2dc4205bd753f6ac58c7798ad8a9df9f0e7da4f to mainline-cellbroadcast-release

Change-Id: I9fa67f9daa00c7c7cf5f57d23d2b4e35f765753b
diff --git a/apex/service/java/com/android/server/media/MediaCommunicationService.java b/apex/service/java/com/android/server/media/MediaCommunicationService.java
index b88e586..3ebb40b 100644
--- a/apex/service/java/com/android/server/media/MediaCommunicationService.java
+++ b/apex/service/java/com/android/server/media/MediaCommunicationService.java
@@ -272,20 +272,15 @@
         }
     }
 
-    void onSessionDied(Session2Record session) {
+    private void removeSessionRecord(Session2Record session) {
         if (DEBUG) {
-            Log.d(TAG, "Destroying " + session);
-        }
-        if (session.isClosed()) {
-            Log.w(TAG, "Destroying already destroyed session. Ignoring.");
-            return;
+            Log.d(TAG, "Removing " + session);
         }
 
         FullUserRecord user = session.getFullUser();
         if (user != null) {
             user.removeSession(session);
         }
-        session.close();
     }
 
     void onSessionPlaybackStateChanged(Session2Record session, boolean promotePriority) {
@@ -681,10 +676,13 @@
                 }
                 synchronized (mSession2RecordLock) {
                     mIsConnected = false;
+                    // As per onDisconnected documentation, we do not need to call close() after
+                    // onDisconnected is called.
+                    mIsClosed = true;
                 }
                 MediaCommunicationService service = mServiceRef.get();
                 if (service != null) {
-                    service.onSessionDied(Session2Record.this);
+                    service.removeSessionRecord(Session2Record.this);
                 }
             }