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

Commit 81fbe15f authored by Tyler Gunn's avatar Tyler Gunn Committed by android-build-merger
Browse files

Change InCallTonePlayerTest to use mock MediaPlayer. am: a2e4a7f1

am: c81871ca

Change-Id: Ib5cc69899c86f6bd4984d28c1268d6a06cc25958
parents c08eb9a0 c81871ca
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