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

Commit 9801b8e3 authored by Tyler Gunn's avatar Tyler Gunn Committed by Android (Google) Code Review
Browse files

Merge "Change InCallTonePlayerTest to use mock MediaPlayer."

parents 741980d5 dca37667
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -436,8 +436,10 @@ public class CallsManager extends Call.ListenerBase

        AudioManager audioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
        InCallTonePlayer.MediaPlayerFactory mediaPlayerFactory =
                (resourceId, attributes) -> MediaPlayer.create(mContext, resourceId, attributes,
                        audioManager.generateAudioSessionId());
                (resourceId, attributes) ->
                        new InCallTonePlayer.MediaPlayerAdapterImpl(
                                MediaPlayer.create(mContext, resourceId, attributes,
                                        audioManager.generateAudioSessionId()));
        InCallTonePlayer.Factory playerFactory = new InCallTonePlayer.Factory(
                callAudioRoutePeripheralAdapter, lock, toneGeneratorFactory, mediaPlayerFactory,
                () -> audioManager.getStreamVolume(AudioManager.STREAM_RING) > 0);
+43 −2
Original line number Diff line number Diff line
@@ -76,8 +76,49 @@ public class InCallTonePlayer extends Thread {
        ToneGenerator get (int streamType, int volume);
    }

    public interface MediaPlayerAdapter {
        void setLooping(boolean isLooping);
        void setOnCompletionListener(MediaPlayer.OnCompletionListener listener);
        void start();
        void release();
        int getDuration();
    }

    public static class MediaPlayerAdapterImpl implements MediaPlayerAdapter {
        private MediaPlayer mMediaPlayer;

        public MediaPlayerAdapterImpl(MediaPlayer mediaPlayer) {
            mMediaPlayer = mediaPlayer;
        }

        @Override
        public void setLooping(boolean isLooping) {
            mMediaPlayer.setLooping(isLooping);
        }

        @Override
        public void setOnCompletionListener(MediaPlayer.OnCompletionListener listener) {
            mMediaPlayer.setOnCompletionListener(listener);
        }

        @Override
        public void start() {
            mMediaPlayer.start();
        }

        @Override
        public void release() {
            mMediaPlayer.release();
        }

        @Override
        public int getDuration() {
            return mMediaPlayer.getDuration();
        }
    }

    public interface MediaPlayerFactory {
        MediaPlayer get (int resourceId, AudioAttributes attributes);
        MediaPlayerAdapter get (int resourceId, AudioAttributes attributes);
    }

    public interface AudioManagerAdapter {
@@ -136,7 +177,7 @@ public class InCallTonePlayer extends Thread {
    private int mState;

    /** For tones which are not generated using ToneGenerator. */
    private MediaPlayer mToneMediaPlayer = null;
    private MediaPlayerAdapter mToneMediaPlayer = null;

    /** Telecom lock object. */
    private final TelecomSystem.SyncRoot mLock;
+35 −7
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.server.telecom.tests;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.timeout;
import static org.mockito.Mockito.verify;
@@ -56,7 +57,35 @@ public class InCallTonePlayerTest extends TelecomTestCase {
    @Mock
    private InCallTonePlayer.ToneGeneratorFactory mToneGeneratorFactory;

    private MediaPlayer mMediaPlayer;
    private InCallTonePlayer.MediaPlayerAdapter mMediaPlayerAdapter =
            new InCallTonePlayer.MediaPlayerAdapter() {
        private MediaPlayer.OnCompletionListener mListener;

        @Override
        public void setLooping(boolean isLooping) {
            // Do nothing.
        }

        @Override
        public void setOnCompletionListener(MediaPlayer.OnCompletionListener listener) {
            mListener = listener;
        }

        @Override
        public void start() {
            mListener.onCompletion(null);
        }

        @Override
        public void release() {
            // Do nothing.
        }

        @Override
        public int getDuration() {
            return 0;
        }
    };

    @Mock
    private InCallTonePlayer.MediaPlayerFactory mMediaPlayerFactory;
@@ -71,14 +100,13 @@ public class InCallTonePlayerTest extends TelecomTestCase {
    @Before
    public void setUp() throws Exception {
        super.setUp();
        mFactory = new InCallTonePlayer.Factory(mCallAudioRoutePeripheralAdapter, mLock,
                mToneGeneratorFactory, mMediaPlayerFactory, mAudioManagerAdapter);
        mFactory.setCallAudioManager(mCallAudioManager);

        when(mToneGeneratorFactory.get(anyInt(), anyInt())).thenReturn(mToneGenerator);
        when(mMediaPlayerFactory.get(anyInt(), any())).thenReturn(mMediaPlayerAdapter);

        mMediaPlayer = new MediaPlayer();
        when(mMediaPlayerFactory.get(anyInt(), any())).thenReturn(mMediaPlayer);
        mFactory = new InCallTonePlayer.Factory(mCallAudioRoutePeripheralAdapter, mLock,
                mToneGeneratorFactory, mMediaPlayerFactory, mAudioManagerAdapter);
        mFactory.setCallAudioManager(mCallAudioManager);
    }

    @SmallTest