Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 840634b0 authored by Bishoy Gendy's avatar Bishoy Gendy Committed by Android (Google) Code Review
Browse files

Merge "Replace Log with Slog in MediaSessionRecord" into main

parents c4ed9a24 c0d29452
Loading
Loading
Loading
Loading
+139 −94
Original line number Diff line number Diff line
@@ -76,6 +76,7 @@ import android.os.UserHandle;
import android.text.TextUtils;
import android.util.EventLog;
import android.util.Log;
import android.util.Slog;
import android.view.KeyEvent;

import com.android.server.LocalServices;
@@ -348,16 +349,19 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR
        } else {
            if (mVolumeControlType == VOLUME_CONTROL_FIXED) {
                if (DEBUG) {
                    Log.d(TAG, "Session does not support volume adjustment");
                    Slog.d(TAG, "Session does not support volume adjustment");
                }
            } else if (direction == AudioManager.ADJUST_TOGGLE_MUTE
                    || direction == AudioManager.ADJUST_MUTE
                    || direction == AudioManager.ADJUST_UNMUTE) {
                Log.w(TAG, "Muting remote playback is not supported");
                Slog.w(TAG, "Muting remote playback is not supported");
            } else {
                if (DEBUG) {
                    Log.w(TAG, "adjusting volume, pkg=" + packageName + ", asSystemService="
                            + asSystemService + ", dir=" + direction);
                    Slog.w(
                            TAG,
                            "adjusting volume, pkg=" + packageName
                                    + ", asSystemService=" + asSystemService
                                    + ", dir=" + direction);
                }
                mSessionCb.adjustVolume(packageName, pid, uid, asSystemService, direction);

@@ -371,8 +375,10 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR
                }

                if (DEBUG) {
                    Log.d(TAG, "Adjusted optimistic volume to " + mOptimisticVolume + " max is "
                            + mMaxVolume);
                    Slog.d(
                            TAG,
                            "Adjusted optimistic volume to " + mOptimisticVolume
                                    + " max is " + mMaxVolume);
                }
            }
            // Always notify, even if the volume hasn't changed. This is important to ensure that
@@ -388,23 +394,33 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR
        if (mVolumeType == PLAYBACK_TYPE_LOCAL) {
            int stream = getVolumeStream(mAudioAttrs);
            final int volumeValue = value;
            mHandler.post(new Runnable() {
            mHandler.post(
                    new Runnable() {
                        @Override
                        public void run() {
                            try {
                        mAudioManager.setStreamVolumeForUid(stream, volumeValue, flags,
                                opPackageName, uid, pid,
                                mAudioManager.setStreamVolumeForUid(
                                        stream,
                                        volumeValue,
                                        flags,
                                        opPackageName,
                                        uid,
                                        pid,
                                        mContext.getApplicationInfo().targetSdkVersion);
                            } catch (IllegalArgumentException | SecurityException e) {
                        Log.e(TAG, "Cannot set volume: stream=" + stream + ", value=" + volumeValue
                                + ", flags=" + flags, e);
                                Slog.e(
                                        TAG,
                                        "Cannot set volume: stream=" + stream
                                                + ", value=" + volumeValue
                                                + ", flags=" + flags,
                                        e);
                            }
                        }
                    });
        } else {
            if (mVolumeControlType != VOLUME_CONTROL_ABSOLUTE) {
                if (DEBUG) {
                    Log.d(TAG, "Session does not support setting volume");
                    Slog.d(TAG, "Session does not support setting volume");
                }
            } else {
                value = Math.max(0, Math.min(value, mMaxVolume));
@@ -419,8 +435,10 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR
                }

                if (DEBUG) {
                    Log.d(TAG, "Set optimistic volume to " + mOptimisticVolume + " max is "
                            + mMaxVolume);
                    Slog.d(
                            TAG,
                            "Set optimistic volume to " + mOptimisticVolume
                                    + " max is " + mMaxVolume);
                }
            }
            // Always notify, even if the volume hasn't changed.
@@ -528,13 +546,13 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR
    public boolean canHandleVolumeKey() {
        if (isPlaybackTypeLocal()) {
            if (DEBUG) {
                Log.d(TAG, "Local MediaSessionRecord can handle volume key");
                Slog.d(TAG, "Local MediaSessionRecord can handle volume key");
            }
            return true;
        }
        if (mVolumeControlType == VOLUME_CONTROL_FIXED) {
            if (DEBUG) {
                Log.d(
                Slog.d(
                        TAG,
                        "Local MediaSessionRecord with FIXED volume control can't handle volume"
                                + " key");
@@ -543,7 +561,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR
        }
        if (mVolumeAdjustmentForRemoteGroupSessions) {
            if (DEBUG) {
                Log.d(
                Slog.d(
                        TAG,
                        "Volume adjustment for remote group sessions allowed so MediaSessionRecord"
                                + " can handle volume key");
@@ -556,7 +574,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR
        boolean foundNonSystemSession = false;
        boolean remoteSessionAllowVolumeAdjustment = true;
        if (DEBUG) {
            Log.d(
            Slog.d(
                    TAG,
                    "Found "
                            + sessions.size()
@@ -565,7 +583,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR
        }
        for (RoutingSessionInfo session : sessions) {
            if (DEBUG) {
                Log.d(TAG, "Found routingSessionInfo: " + session);
                Slog.d(TAG, "Found routingSessionInfo: " + session);
            }
            if (!session.isSystemSession()) {
                foundNonSystemSession = true;
@@ -576,10 +594,9 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR
        }
        if (!foundNonSystemSession) {
            if (DEBUG) {
                Log.d(
                Slog.d(
                        TAG,
                        "Package "
                                + mPackageName
                        "Package " + mPackageName
                                + " has a remote media session but no associated routing session");
            }
        }
@@ -669,8 +686,11 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR
            final boolean asSystemService, final boolean useSuggested,
            final int previousFlagPlaySound) {
        if (DEBUG) {
            Log.w(TAG, "adjusting local volume, stream=" + stream + ", dir=" + direction
                    + ", asSystemService=" + asSystemService + ", useSuggested=" + useSuggested);
            Slog.w(
                    TAG,
                    "adjusting local volume, stream=" + stream + ", dir=" + direction
                            + ", asSystemService=" + asSystemService
                            + ", useSuggested=" + useSuggested);
        }
        // Must use opPackageName for adjusting volumes with UID.
        final String opPackageName;
@@ -685,31 +705,50 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR
            uid = callingUid;
            pid = callingPid;
        }
        mHandler.post(new Runnable() {
        mHandler.post(
                new Runnable() {
                    @Override
                    public void run() {
                        try {
                            if (useSuggested) {
                                if (AudioSystem.isStreamActive(stream, 0)) {
                            mAudioManager.adjustSuggestedStreamVolumeForUid(stream,
                                    direction, flags, opPackageName, uid, pid,
                                    mAudioManager.adjustSuggestedStreamVolumeForUid(
                                            stream,
                                            direction,
                                            flags,
                                            opPackageName,
                                            uid,
                                            pid,
                                            mContext.getApplicationInfo().targetSdkVersion);
                                } else {
                                    mAudioManager.adjustSuggestedStreamVolumeForUid(
                                    AudioManager.USE_DEFAULT_STREAM_TYPE, direction,
                                    flags | previousFlagPlaySound, opPackageName, uid, pid,
                                            AudioManager.USE_DEFAULT_STREAM_TYPE,
                                            direction,
                                            flags | previousFlagPlaySound,
                                            opPackageName,
                                            uid,
                                            pid,
                                            mContext.getApplicationInfo().targetSdkVersion);
                                }
                            } else {
                        mAudioManager.adjustStreamVolumeForUid(stream, direction, flags,
                                opPackageName, uid, pid,
                                mAudioManager.adjustStreamVolumeForUid(
                                        stream,
                                        direction,
                                        flags,
                                        opPackageName,
                                        uid,
                                        pid,
                                        mContext.getApplicationInfo().targetSdkVersion);
                            }
                        } catch (IllegalArgumentException | SecurityException e) {
                    Log.e(TAG, "Cannot adjust volume: direction=" + direction + ", stream="
                            + stream + ", flags=" + flags + ", opPackageName=" + opPackageName
                            + ", uid=" + uid + ", useSuggested=" + useSuggested
                            + ", previousFlagPlaySound=" + previousFlagPlaySound, e);
                            Slog.e(
                                    TAG,
                                    "Cannot adjust volume: direction=" + direction
                                            + ", stream=" + stream + ", flags=" + flags
                                            + ", opPackageName=" + opPackageName + ", uid=" + uid
                                            + ", useSuggested=" + useSuggested
                                            + ", previousFlagPlaySound=" + previousFlagPlaySound,
                                    e);
                        }
                    }
                });
@@ -717,7 +756,9 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR

    private void logCallbackException(
            String msg, ISessionControllerCallbackHolder holder, Exception e) {
        Log.v(TAG, msg + ", this=" + this + ", callback package=" + holder.mPackageName
        Slog.v(
                TAG,
                msg + ", this=" + this + ", callback package=" + holder.mPackageName
                        + ", exception=" + e);
    }

@@ -1115,7 +1156,9 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR
                        throw new IllegalArgumentException(
                                "The media button receiver cannot be set to an activity.");
                    } else {
                        Log.w(TAG, "Ignoring invalid media button receiver targeting an activity.");
                        Slog.w(
                                TAG,
                                "Ignoring invalid media button receiver targeting an activity.");
                        return;
                    }
                }
@@ -1151,7 +1194,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR
                    if (CompatChanges.isChangeEnabled(THROW_FOR_INVALID_BROADCAST_RECEIVER, uid)) {
                        throw new IllegalArgumentException("Invalid component name: " + receiver);
                    } else {
                        Log.w(
                        Slog.w(
                                TAG,
                                "setMediaButtonBroadcastReceiver(): "
                                        + "Ignoring invalid component name="
@@ -1290,7 +1333,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR
                if (attributes != null) {
                    mAudioAttrs = attributes;
                } else {
                    Log.e(TAG, "Received null audio attributes, using existing attributes");
                    Slog.e(TAG, "Received null audio attributes, using existing attributes");
                }
            }
            if (typeChanged) {
@@ -1352,7 +1395,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR
                }
                return true;
            } catch (RemoteException e) {
                Log.e(TAG, "Remote failure in sendMediaRequest.", e);
                Slog.e(TAG, "Remote failure in sendMediaRequest.", e);
            }
            return false;
        }
@@ -1375,7 +1418,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR
                }
                return true;
            } catch (RemoteException e) {
                Log.e(TAG, "Remote failure in sendMediaRequest.", e);
                Slog.e(TAG, "Remote failure in sendMediaRequest.", e);
            }
            return false;
        }
@@ -1388,7 +1431,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR
                        pid, uid, packageName, reason);
                mCb.onCommand(packageName, pid, uid, command, args, cb);
            } catch (RemoteException e) {
                Log.e(TAG, "Remote failure in sendCommand.", e);
                Slog.e(TAG, "Remote failure in sendCommand.", e);
            }
        }

@@ -1400,7 +1443,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR
                        pid, uid, packageName, reason);
                mCb.onCustomAction(packageName, pid, uid, action, args);
            } catch (RemoteException e) {
                Log.e(TAG, "Remote failure in sendCustomAction.", e);
                Slog.e(TAG, "Remote failure in sendCustomAction.", e);
            }
        }

@@ -1411,7 +1454,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR
                        pid, uid, packageName, reason);
                mCb.onPrepare(packageName, pid, uid);
            } catch (RemoteException e) {
                Log.e(TAG, "Remote failure in prepare.", e);
                Slog.e(TAG, "Remote failure in prepare.", e);
            }
        }

@@ -1423,7 +1466,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR
                        pid, uid, packageName, reason);
                mCb.onPrepareFromMediaId(packageName, pid, uid, mediaId, extras);
            } catch (RemoteException e) {
                Log.e(TAG, "Remote failure in prepareFromMediaId.", e);
                Slog.e(TAG, "Remote failure in prepareFromMediaId.", e);
            }
        }

@@ -1435,7 +1478,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR
                        pid, uid, packageName, reason);
                mCb.onPrepareFromSearch(packageName, pid, uid, query, extras);
            } catch (RemoteException e) {
                Log.e(TAG, "Remote failure in prepareFromSearch.", e);
                Slog.e(TAG, "Remote failure in prepareFromSearch.", e);
            }
        }

@@ -1446,7 +1489,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR
                        pid, uid, packageName, reason);
                mCb.onPrepareFromUri(packageName, pid, uid, uri, extras);
            } catch (RemoteException e) {
                Log.e(TAG, "Remote failure in prepareFromUri.", e);
                Slog.e(TAG, "Remote failure in prepareFromUri.", e);
            }
        }

@@ -1457,7 +1500,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR
                        pid, uid, packageName, reason);
                mCb.onPlay(packageName, pid, uid);
            } catch (RemoteException e) {
                Log.e(TAG, "Remote failure in play.", e);
                Slog.e(TAG, "Remote failure in play.", e);
            }
        }

@@ -1469,7 +1512,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR
                        pid, uid, packageName, reason);
                mCb.onPlayFromMediaId(packageName, pid, uid, mediaId, extras);
            } catch (RemoteException e) {
                Log.e(TAG, "Remote failure in playFromMediaId.", e);
                Slog.e(TAG, "Remote failure in playFromMediaId.", e);
            }
        }

@@ -1481,7 +1524,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR
                        pid, uid, packageName, reason);
                mCb.onPlayFromSearch(packageName, pid, uid, query, extras);
            } catch (RemoteException e) {
                Log.e(TAG, "Remote failure in playFromSearch.", e);
                Slog.e(TAG, "Remote failure in playFromSearch.", e);
            }
        }

@@ -1492,7 +1535,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR
                        pid, uid, packageName, reason);
                mCb.onPlayFromUri(packageName, pid, uid, uri, extras);
            } catch (RemoteException e) {
                Log.e(TAG, "Remote failure in playFromUri.", e);
                Slog.e(TAG, "Remote failure in playFromUri.", e);
            }
        }

@@ -1503,7 +1546,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR
                        pid, uid, packageName, reason);
                mCb.onSkipToTrack(packageName, pid, uid, id);
            } catch (RemoteException e) {
                Log.e(TAG, "Remote failure in skipToTrack", e);
                Slog.e(TAG, "Remote failure in skipToTrack", e);
            }
        }

@@ -1514,7 +1557,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR
                        pid, uid, packageName, reason);
                mCb.onPause(packageName, pid, uid);
            } catch (RemoteException e) {
                Log.e(TAG, "Remote failure in pause.", e);
                Slog.e(TAG, "Remote failure in pause.", e);
            }
        }

@@ -1525,7 +1568,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR
                        pid, uid, packageName, reason);
                mCb.onStop(packageName, pid, uid);
            } catch (RemoteException e) {
                Log.e(TAG, "Remote failure in stop.", e);
                Slog.e(TAG, "Remote failure in stop.", e);
            }
        }

@@ -1536,7 +1579,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR
                        pid, uid, packageName, reason);
                mCb.onNext(packageName, pid, uid);
            } catch (RemoteException e) {
                Log.e(TAG, "Remote failure in next.", e);
                Slog.e(TAG, "Remote failure in next.", e);
            }
        }

@@ -1547,7 +1590,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR
                        pid, uid, packageName, reason);
                mCb.onPrevious(packageName, pid, uid);
            } catch (RemoteException e) {
                Log.e(TAG, "Remote failure in previous.", e);
                Slog.e(TAG, "Remote failure in previous.", e);
            }
        }

@@ -1558,7 +1601,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR
                        pid, uid, packageName, reason);
                mCb.onFastForward(packageName, pid, uid);
            } catch (RemoteException e) {
                Log.e(TAG, "Remote failure in fastForward.", e);
                Slog.e(TAG, "Remote failure in fastForward.", e);
            }
        }

@@ -1569,7 +1612,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR
                        pid, uid, packageName, reason);
                mCb.onRewind(packageName, pid, uid);
            } catch (RemoteException e) {
                Log.e(TAG, "Remote failure in rewind.", e);
                Slog.e(TAG, "Remote failure in rewind.", e);
            }
        }

@@ -1580,7 +1623,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR
                        pid, uid, packageName, reason);
                mCb.onSeekTo(packageName, pid, uid, pos);
            } catch (RemoteException e) {
                Log.e(TAG, "Remote failure in seekTo.", e);
                Slog.e(TAG, "Remote failure in seekTo.", e);
            }
        }

@@ -1591,7 +1634,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR
                        pid, uid, packageName, reason);
                mCb.onRate(packageName, pid, uid, rating);
            } catch (RemoteException e) {
                Log.e(TAG, "Remote failure in rate.", e);
                Slog.e(TAG, "Remote failure in rate.", e);
            }
        }

@@ -1602,7 +1645,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR
                        pid, uid, packageName, reason);
                mCb.onSetPlaybackSpeed(packageName, pid, uid, speed);
            } catch (RemoteException e) {
                Log.e(TAG, "Remote failure in setPlaybackSpeed.", e);
                Slog.e(TAG, "Remote failure in setPlaybackSpeed.", e);
            }
        }

@@ -1619,7 +1662,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR
                    mCb.onAdjustVolume(packageName, pid, uid, direction);
                }
            } catch (RemoteException e) {
                Log.e(TAG, "Remote failure in adjustVolume.", e);
                Slog.e(TAG, "Remote failure in adjustVolume.", e);
            }
        }

@@ -1630,7 +1673,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR
                        pid, uid, packageName, reason);
                mCb.onSetVolumeTo(packageName, pid, uid, value);
            } catch (RemoteException e) {
                Log.e(TAG, "Remote failure in setVolumeTo.", e);
                Slog.e(TAG, "Remote failure in setVolumeTo.", e);
            }
        }

@@ -1673,8 +1716,10 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR
                        cb, packageName, Binder.getCallingUid(), () -> unregisterCallback(cb));
                    mControllerCallbackHolders.add(holder);
                    if (DEBUG) {
                        Log.d(TAG, "registering controller callback " + cb + " from controller"
                                + packageName);
                        Slog.d(
                                TAG,
                                "registering controller callback " + cb
                                        + " from controller" + packageName);
                    }
                    // Avoid callback leaks
                    try {
@@ -1683,7 +1728,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR
                        cb.asBinder().linkToDeath(holder.mDeathMonitor, 0);
                    } catch (RemoteException e) {
                        unregisterCallback(cb);
                        Log.w(TAG, "registerCallback failed to linkToDeath", e);
                        Slog.w(TAG, "registerCallback failed to linkToDeath", e);
                    }
                }
            }
@@ -1698,12 +1743,12 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR
                        cb.asBinder().unlinkToDeath(
                          mControllerCallbackHolders.get(index).mDeathMonitor, 0);
                    } catch (NoSuchElementException e) {
                        Log.w(TAG, "error unlinking to binder death", e);
                        Slog.w(TAG, "error unlinking to binder death", e);
                    }
                    mControllerCallbackHolders.remove(index);
                }
                if (DEBUG) {
                    Log.d(TAG, "unregistering callback " + cb.asBinder());
                    Slog.d(TAG, "unregistering callback " + cb.asBinder());
                }
            }
        }