Add logging for media source changes

Bug: 138502858
Test: Manual
Change-Id: Iddb0e7bf7a297a19fe288da7035c72cdb5282aa6
(cherry picked from commit d35d982ff5c776d1a032d37f8af768ebc5027b99)
diff --git a/service/src/com/android/car/CarMediaService.java b/service/src/com/android/car/CarMediaService.java
index f0ca90d..af7d694 100644
--- a/service/src/com/android/car/CarMediaService.java
+++ b/service/src/com/android/car/CarMediaService.java
@@ -83,6 +83,7 @@
     private final MediaSessionManager mMediaSessionManager;
     private final MediaSessionUpdater mMediaSessionUpdater = new MediaSessionUpdater();
     private ComponentName mPrimaryMediaComponent;
+    private ComponentName mPreviousMediaComponent;
     private SharedPreferences mSharedPrefs;
     // MediaController for the current active user's active media session. This controller can be
     // null if playback has not been started yet.
@@ -204,6 +205,8 @@
         writer.println("*CarMediaService*");
         writer.println("\tCurrent media component: " + (mPrimaryMediaComponent == null ? "-"
                 : mPrimaryMediaComponent.flattenToString()));
+        writer.println("\tPrevious media component: " + (mPreviousMediaComponent == null ? "-"
+                : mPreviousMediaComponent.flattenToString()));
         if (mActiveUserMediaController != null) {
             writer.println(
                     "\tCurrent media controller: " + mActiveUserMediaController.getPackageName());
@@ -219,8 +222,11 @@
      * @see {@link CarMediaManager#setMediaSource(ComponentName)}
      */
     @Override
-    public synchronized void setMediaSource(ComponentName componentName) {
+    public synchronized void setMediaSource(@NonNull ComponentName componentName) {
         ICarImpl.assertPermission(mContext, android.Manifest.permission.MEDIA_CONTENT_CONTROL);
+        if (Log.isLoggable(CarLog.TAG_MEDIA, Log.DEBUG)) {
+            Log.d(CarLog.TAG_MEDIA, "Changing media source to: " + componentName.getPackageName());
+        }
         setPrimaryMediaSource(componentName);
     }
 
@@ -361,6 +367,11 @@
                     && state.getState() != mPreviousPlaybackState) {
                 ComponentName mediaSource = getMediaSource(mMediaController.getPackageName(),
                         getClassName(mMediaController));
+                if (mediaSource != null && !mediaSource.equals(mPrimaryMediaComponent)
+                        && Log.isLoggable(CarLog.TAG_MEDIA, Log.INFO)) {
+                    Log.i(CarLog.TAG_MEDIA, "Changing media source due to playback state change: "
+                            + mediaSource.flattenToString());
+                }
                 setPrimaryMediaSource(mediaSource);
             }
             mPreviousPlaybackState = state.getState();
@@ -429,6 +440,7 @@
         stop();
 
         mStartPlayback = false;
+        mPreviousMediaComponent = mPrimaryMediaComponent;
         mPrimaryMediaComponent = componentName;
         updateActiveMediaController(mMediaSessionManager
                 .getActiveSessionsForUser(null, ActivityManager.getCurrentUser()));
@@ -481,6 +493,11 @@
                 String newClassName = getClassName(controller);
                 if (!matchPrimaryMediaSource(newPackageName, newClassName)) {
                     ComponentName mediaSource = getMediaSource(newPackageName, newClassName);
+                    if (Log.isLoggable(CarLog.TAG_MEDIA, Log.INFO)) {
+                        Log.i(CarLog.TAG_MEDIA,
+                                "Changing media source due to playback state change: "
+                                + mediaSource.flattenToString());
+                    }
                     setPrimaryMediaSource(mediaSource);
                 }
                 return;