Don't save the last media source for ephemeral user

And init the ephemeral user with default media source instead of
saved media source.
And don't save playback state for ephemeral user.

Fixes: 143631407
Test: manual
Change-Id: I1e6816620bd15bfcfa31c72d916924fed669b461
(cherry picked from commit c092a1aa95f4c9ea83b09b700e5bc368b4fa65c0)
diff --git a/service/src/com/android/car/CarMediaService.java b/service/src/com/android/car/CarMediaService.java
index 4841b0d..eccae1b 100644
--- a/service/src/com/android/car/CarMediaService.java
+++ b/service/src/com/android/car/CarMediaService.java
@@ -200,7 +200,8 @@
                 mPackageUpdateFilter, null, null);
         mIsPackageUpdateReceiverRegistered = true;
 
-        mPrimaryMediaComponent = getLastMediaSource();
+        mPrimaryMediaComponent =
+                isCurrentUserEphemeral() ? getDefaultMediaSource() : getLastMediaSource();
         mActiveUserMediaController = null;
         String key = PLAYBACK_STATE_KEY + mCurrentUser;
         mStartPlayback =
@@ -216,6 +217,10 @@
         mContext.startForegroundServiceAsUser(serviceStart, currentUser);
     }
 
+    private boolean isCurrentUserEphemeral() {
+        return mUserManager.getUserInfo(mCurrentUser).isEphemeral();
+    }
+
     @Override
     public void release() {
         mMediaSessionUpdater.unregisterCallbacks();
@@ -297,10 +302,9 @@
                 if (!unlocked) {
                     return;
                 }
-                // No need to handle user0, non current foreground user, or ephemeral user.
+                // No need to handle user0, non current foreground user.
                 if (userHandle == UserHandle.USER_SYSTEM
-                        || userHandle != ActivityManager.getCurrentUser()
-                        || mUserManager.getUserInfo(userHandle).isEphemeral()) {
+                        || userHandle != ActivityManager.getCurrentUser()) {
                     return;
                 }
                 if (mPendingInit) {
@@ -483,7 +487,9 @@
         if (mSharedPrefs != null) {
             if (mPrimaryMediaComponent != null && !TextUtils.isEmpty(
                     mPrimaryMediaComponent.flattenToString())) {
-                saveLastMediaSource(mPrimaryMediaComponent);
+                if (!isCurrentUserEphemeral()) {
+                    saveLastMediaSource(mPrimaryMediaComponent);
+                }
                 mRemovedMediaSourcePackage = null;
             }
         } else {
@@ -509,7 +515,9 @@
     private MediaController.Callback mMediaControllerCallback = new MediaController.Callback() {
         @Override
         public void onPlaybackStateChanged(PlaybackState state) {
-            savePlaybackState(state);
+            if (!isCurrentUserEphemeral()) {
+                savePlaybackState(state);
+            }
             // Try to start playback if the new state allows the play action
             maybeRestartPlayback(state);
         }
@@ -637,7 +645,10 @@
                 }
             }
         }
+        return getDefaultMediaSource();
+    }
 
+    private ComponentName getDefaultMediaSource() {
         String defaultMediaSource = mContext.getString(R.string.default_media_source);
         ComponentName defaultComponent = ComponentName.unflattenFromString(defaultMediaSource);
         if (isMediaService(defaultComponent)) {
@@ -691,12 +702,14 @@
         for (MediaController controller : mediaControllers) {
             if (matchPrimaryMediaSource(controller.getPackageName(), getClassName(controller))) {
                 mActiveUserMediaController = controller;
+                PlaybackState state = mActiveUserMediaController.getPlaybackState();
+                if (!isCurrentUserEphemeral()) {
+                    savePlaybackState(state);
+                }
                 // Specify Handler to receive callbacks on, to avoid defaulting to the calling
                 // thread; this method can be called from the MediaSessionManager callback.
                 // Using the version of this method without passing a handler causes a
                 // RuntimeException for failing to create a Handler.
-                PlaybackState state = mActiveUserMediaController.getPlaybackState();
-                savePlaybackState(state);
                 mActiveUserMediaController.registerCallback(mMediaControllerCallback, mHandler);
                 maybeRestartPlayback(state);
                 return;