am d5ff63ba: Merge "Notify the system of all remote volume changes" into lmp-mr1-dev

* commit 'd5ff63ba0ce8597155e0201fd20fe18fbf0aa053':
  Notify the system of all remote volume changes
diff --git a/services/core/java/com/android/server/media/MediaSessionRecord.java b/services/core/java/com/android/server/media/MediaSessionRecord.java
index 03a5920..53ae1ab 100644
--- a/services/core/java/com/android/server/media/MediaSessionRecord.java
+++ b/services/core/java/com/android/server/media/MediaSessionRecord.java
@@ -330,6 +330,7 @@
             if (volumeBefore != mOptimisticVolume) {
                 pushVolumeUpdate();
             }
+            mService.notifyRemoteVolumeChanged(flags, this);
 
             if (DEBUG) {
                 Log.d(TAG, "Adjusted optimistic volume to " + mOptimisticVolume + " max is "
@@ -357,6 +358,7 @@
             if (volumeBefore != mOptimisticVolume) {
                 pushVolumeUpdate();
             }
+            mService.notifyRemoteVolumeChanged(flags, this);
 
             if (DEBUG) {
                 Log.d(TAG, "Set optimistic volume to " + mOptimisticVolume + " max is "
diff --git a/services/core/java/com/android/server/media/MediaSessionService.java b/services/core/java/com/android/server/media/MediaSessionService.java
index 22acfea..77a1fa9 100644
--- a/services/core/java/com/android/server/media/MediaSessionService.java
+++ b/services/core/java/com/android/server/media/MediaSessionService.java
@@ -143,6 +143,20 @@
         mHandler.post(MessageHandler.MSG_SESSIONS_CHANGED, record.getUserId(), 0);
     }
 
+    /**
+     * Tells the system UI that volume has changed on a remote session.
+     */
+    public void notifyRemoteVolumeChanged(int flags, MediaSessionRecord session) {
+        if (mRvc == null) {
+            return;
+        }
+        try {
+            mRvc.remoteVolumeChanged(session.getControllerBinder(), flags);
+        } catch (Exception e) {
+            Log.wtf(TAG, "Error sending volume change to system UI.", e);
+        }
+    }
+
     public void onSessionPlaystateChange(MediaSessionRecord record, int oldState, int newState) {
         boolean updateSessions = false;
         synchronized (mLock) {
@@ -864,14 +878,6 @@
             } else {
                 session.adjustVolume(direction, flags, getContext().getPackageName(),
                         UserHandle.myUserId(), true);
-                if (session.getPlaybackType() == PlaybackInfo.PLAYBACK_TYPE_REMOTE
-                        && mRvc != null && direction != MediaSessionManager.DIRECTION_MUTE) {
-                    try {
-                        mRvc.remoteVolumeChanged(session.getControllerBinder(), flags);
-                    } catch (Exception e) {
-                        Log.wtf(TAG, "Error sending volume change to system UI.", e);
-                    }
-                }
             }
         }