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

Commit 53863bbc authored by Josh Hou's avatar Josh Hou Committed by Android (Google) Code Review
Browse files

Merge "Replace Handler with Executor" into sc-dev

parents c3406718 49bd548e
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -5072,7 +5072,7 @@ package android.media {
  }
  public class MediaPlayer implements android.media.AudioRouting android.media.VolumeAutomation {
    method @RequiresPermission(android.Manifest.permission.BIND_IMS_SERVICE) public void setOnRtpRxNoticeListener(@NonNull android.content.Context, @NonNull android.media.MediaPlayer.OnRtpRxNoticeListener, @Nullable android.os.Handler);
    method @RequiresPermission(android.Manifest.permission.BIND_IMS_SERVICE) public void setOnRtpRxNoticeListener(@NonNull android.content.Context, @NonNull java.util.concurrent.Executor, @NonNull android.media.MediaPlayer.OnRtpRxNoticeListener);
  }
  public static interface MediaPlayer.OnRtpRxNoticeListener {
+12 −18
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package android.media;
import static android.Manifest.permission.BIND_IMS_SERVICE;
import static android.content.pm.PackageManager.PERMISSION_GRANTED;

import android.annotation.CallbackExecutor;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -91,6 +92,7 @@ import java.util.Scanner;
import java.util.Set;
import java.util.UUID;
import java.util.Vector;
import java.util.concurrent.Executor;


/**
@@ -2172,7 +2174,7 @@ public class MediaPlayer extends PlayerBase
        mOnVideoSizeChangedListener = null;
        mOnTimedTextListener = null;
        mOnRtpRxNoticeListener = null;
        mOnRtpRxNoticeHandler = null;
        mOnRtpRxNoticeExecutor = null;
        synchronized (mTimeProviderLock) {
            if (mTimeProvider != null) {
                mTimeProvider.close();
@@ -3711,7 +3713,6 @@ public class MediaPlayer extends PlayerBase

            case MEDIA_RTP_RX_NOTICE:
                final OnRtpRxNoticeListener rtpRxNoticeListener = mOnRtpRxNoticeListener;
                final Handler rtpRxNoticeHandler = mOnRtpRxNoticeHandler;
                if (rtpRxNoticeListener == null) {
                    return;
                }
@@ -3730,15 +3731,10 @@ public class MediaPlayer extends PlayerBase
                    } finally {
                        parcel.recycle();
                    }
                    if (rtpRxNoticeHandler == null) {
                        rtpRxNoticeListener.onRtpRxNotice(mMediaPlayer, noticeType, data);
                    } else {
                        rtpRxNoticeHandler.post(
                                () ->
                    mOnRtpRxNoticeExecutor.execute(() ->
                            rtpRxNoticeListener
                                    .onRtpRxNotice(mMediaPlayer, noticeType, data));
                }
                }
                return;

            default:
@@ -4305,28 +4301,26 @@ public class MediaPlayer extends PlayerBase
     *
     * @see OnRtpRxNoticeListener
     *
     * @param listener the listener called after a notice from RTP Rx
     * @param handler the {@link Handler} that receives RTP Tx events. If null is passed,
     *                notifications will be posted on the thread that created this MediaPlayer
     *                instance. If the creating thread does not have a {@link Looper}, then
     *                notifications will be posted on the main thread.
     * @param listener the listener called after a notice from RTP Rx.
     * @param executor the {@link Executor} on which to post RTP Tx events.
     * @hide
     */
    @SystemApi
    @RequiresPermission(BIND_IMS_SERVICE)
    public void setOnRtpRxNoticeListener(
            @NonNull Context context,
            @NonNull OnRtpRxNoticeListener listener, @Nullable Handler handler) {
            @NonNull @CallbackExecutor Executor executor,
            @NonNull OnRtpRxNoticeListener listener) {
        Objects.requireNonNull(context);
        Preconditions.checkArgument(
                context.checkSelfPermission(BIND_IMS_SERVICE) == PERMISSION_GRANTED,
                BIND_IMS_SERVICE + " permission not granted.");
        mOnRtpRxNoticeListener = Objects.requireNonNull(listener);
        mOnRtpRxNoticeHandler = handler;
        mOnRtpRxNoticeExecutor = Objects.requireNonNull(executor);
    }

    private OnRtpRxNoticeListener mOnRtpRxNoticeListener;
    private Handler mOnRtpRxNoticeHandler;
    private Executor mOnRtpRxNoticeExecutor;

    /**
     * Register a callback to be invoked when a selected track has timed metadata available.