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

Commit 49bd548e authored by Santiago Seifert's avatar Santiago Seifert Committed by Josh Hou
Browse files

Replace Handler with Executor

This change addresses API council feedback around the new
setOnRtpRxNoticeListener method.

Bug: 168585020
Test: Manually built the tree.
Test: Tests pending as per b/169965769.
Change-Id: Ie8291df9b10960f78bdfdd5986767e896a953abf
Merged-In: Ie8291df9b10960f78bdfdd5986767e896a953abf
parent caf9ae8b
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -5097,7 +5097,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.