Loading src/com/android/server/telecom/CallsManager.java +2 −1 Original line number Original line Diff line number Diff line Loading @@ -733,7 +733,8 @@ public class CallsManager extends Call.ListenerBase audioManager.generateAudioSessionId())); audioManager.generateAudioSessionId())); InCallTonePlayer.Factory playerFactory = new InCallTonePlayer.Factory( InCallTonePlayer.Factory playerFactory = new InCallTonePlayer.Factory( callAudioRoutePeripheralAdapter, lock, toneGeneratorFactory, mediaPlayerFactory, callAudioRoutePeripheralAdapter, lock, toneGeneratorFactory, mediaPlayerFactory, () -> audioManager.getStreamVolume(AudioManager.STREAM_RING) > 0, featureFlags); () -> audioManager.getStreamVolume(AudioManager.STREAM_RING) > 0, featureFlags, Looper.getMainLooper()); SystemSettingsUtil systemSettingsUtil = new SystemSettingsUtil(); SystemSettingsUtil systemSettingsUtil = new SystemSettingsUtil(); RingtoneFactory ringtoneFactory = new RingtoneFactory(this, context, featureFlags); RingtoneFactory ringtoneFactory = new RingtoneFactory(this, context, featureFlags); Loading src/com/android/server/telecom/InCallTonePlayer.java +8 −4 Original line number Original line Diff line number Diff line Loading @@ -56,17 +56,19 @@ public class InCallTonePlayer extends Thread { private final MediaPlayerFactory mMediaPlayerFactory; private final MediaPlayerFactory mMediaPlayerFactory; private final AudioManagerAdapter mAudioManagerAdapter; private final AudioManagerAdapter mAudioManagerAdapter; private final FeatureFlags mFeatureFlags; private final FeatureFlags mFeatureFlags; private final Looper mLooper; public Factory(CallAudioRoutePeripheralAdapter callAudioRoutePeripheralAdapter, public Factory(CallAudioRoutePeripheralAdapter callAudioRoutePeripheralAdapter, TelecomSystem.SyncRoot lock, ToneGeneratorFactory toneGeneratorFactory, TelecomSystem.SyncRoot lock, ToneGeneratorFactory toneGeneratorFactory, MediaPlayerFactory mediaPlayerFactory, AudioManagerAdapter audioManagerAdapter, MediaPlayerFactory mediaPlayerFactory, AudioManagerAdapter audioManagerAdapter, FeatureFlags flags) { FeatureFlags flags, Looper looper) { mCallAudioRoutePeripheralAdapter = callAudioRoutePeripheralAdapter; mCallAudioRoutePeripheralAdapter = callAudioRoutePeripheralAdapter; mLock = lock; mLock = lock; mToneGeneratorFactory = toneGeneratorFactory; mToneGeneratorFactory = toneGeneratorFactory; mMediaPlayerFactory = mediaPlayerFactory; mMediaPlayerFactory = mediaPlayerFactory; mAudioManagerAdapter = audioManagerAdapter; mAudioManagerAdapter = audioManagerAdapter; mFeatureFlags = flags; mFeatureFlags = flags; mLooper = looper; } } public void setCallAudioManager(CallAudioManager callAudioManager) { public void setCallAudioManager(CallAudioManager callAudioManager) { Loading @@ -76,7 +78,7 @@ public class InCallTonePlayer extends Thread { public InCallTonePlayer createPlayer(Call call, int tone) { public InCallTonePlayer createPlayer(Call call, int tone) { return new InCallTonePlayer(call, tone, mCallAudioManager, return new InCallTonePlayer(call, tone, mCallAudioManager, mCallAudioRoutePeripheralAdapter, mLock, mToneGeneratorFactory, mCallAudioRoutePeripheralAdapter, mLock, mToneGeneratorFactory, mMediaPlayerFactory, mAudioManagerAdapter, mFeatureFlags); mMediaPlayerFactory, mAudioManagerAdapter, mFeatureFlags, mLooper); } } } } Loading Loading @@ -199,7 +201,7 @@ public class InCallTonePlayer extends Thread { private final CallAudioManager mCallAudioManager; private final CallAudioManager mCallAudioManager; private final CallAudioRoutePeripheralAdapter mCallAudioRoutePeripheralAdapter; private final CallAudioRoutePeripheralAdapter mCallAudioRoutePeripheralAdapter; private final Handler mMainThreadHandler = new Handler(Looper.getMainLooper()); private final Handler mMainThreadHandler; /** The ID of the tone to play. */ /** The ID of the tone to play. */ private final int mToneId; private final int mToneId; Loading Loading @@ -242,7 +244,8 @@ public class InCallTonePlayer extends Thread { ToneGeneratorFactory toneGeneratorFactory, ToneGeneratorFactory toneGeneratorFactory, MediaPlayerFactory mediaPlayerFactor, MediaPlayerFactory mediaPlayerFactor, AudioManagerAdapter audioManagerAdapter, AudioManagerAdapter audioManagerAdapter, FeatureFlags flags) { FeatureFlags flags, Looper looper) { mCall = call; mCall = call; mState = STATE_OFF; mState = STATE_OFF; mToneId = toneId; mToneId = toneId; Loading @@ -253,6 +256,7 @@ public class InCallTonePlayer extends Thread { mMediaPlayerFactory = mediaPlayerFactor; mMediaPlayerFactory = mediaPlayerFactor; mAudioManagerAdapter = audioManagerAdapter; mAudioManagerAdapter = audioManagerAdapter; mFeatureFlags = flags; mFeatureFlags = flags; mMainThreadHandler = new Handler(looper); } } /** {@inheritDoc} */ /** {@inheritDoc} */ Loading tests/src/com/android/server/telecom/tests/InCallTonePlayerTest.java +6 −2 Original line number Original line Diff line number Diff line Loading @@ -127,7 +127,8 @@ public class InCallTonePlayerTest extends TelecomTestCase { mCallAudioRouteStateMachine, mBluetoothRouteManager, mWiredHeadsetManager, mCallAudioRouteStateMachine, mBluetoothRouteManager, mWiredHeadsetManager, mDockManager, mRingtonePlayer); mDockManager, mRingtonePlayer); mFactory = new InCallTonePlayer.Factory(mCallAudioRoutePeripheralAdapter, mLock, mFactory = new InCallTonePlayer.Factory(mCallAudioRoutePeripheralAdapter, mLock, mToneGeneratorFactory, mMediaPlayerFactory, mAudioManagerAdapter, mFeatureFlags); mToneGeneratorFactory, mMediaPlayerFactory, mAudioManagerAdapter, mFeatureFlags, getLooper()); mFactory.setCallAudioManager(mCallAudioManager); mFactory.setCallAudioManager(mCallAudioManager); mInCallTonePlayer = mFactory.createPlayer(mCall, InCallTonePlayer.TONE_CALL_ENDED); mInCallTonePlayer = mFactory.createPlayer(mCall, InCallTonePlayer.TONE_CALL_ENDED); } } Loading @@ -136,7 +137,10 @@ public class InCallTonePlayerTest extends TelecomTestCase { @After @After public void tearDown() throws Exception { public void tearDown() throws Exception { super.tearDown(); super.tearDown(); if (mInCallTonePlayer != null) { mInCallTonePlayer.cleanup(); mInCallTonePlayer.cleanup(); mInCallTonePlayer = null; } } } @SmallTest @SmallTest Loading tests/src/com/android/server/telecom/tests/TelecomTestCase.java +16 −0 Original line number Original line Diff line number Diff line Loading @@ -18,6 +18,8 @@ package com.android.server.telecom.tests; import android.content.Context; import android.content.Context; import android.os.Handler; import android.os.Handler; import android.os.HandlerThread; import android.os.Looper; import android.telecom.Log; import android.telecom.Log; import androidx.test.InstrumentationRegistry; import androidx.test.InstrumentationRegistry; Loading @@ -38,6 +40,7 @@ public abstract class TelecomTestCase { protected Context mContext; protected Context mContext; @Mock @Mock FeatureFlags mFeatureFlags; FeatureFlags mFeatureFlags; private HandlerThread mHandlerThread; MockitoHelper mMockitoHelper = new MockitoHelper(); MockitoHelper mMockitoHelper = new MockitoHelper(); ComponentContextFixture mComponentContextFixture; ComponentContextFixture mComponentContextFixture; Loading @@ -57,12 +60,25 @@ public abstract class TelecomTestCase { } } public void tearDown() throws Exception { public void tearDown() throws Exception { if (mHandlerThread != null) { mHandlerThread.quit(); mHandlerThread.join(); mHandlerThread = null; } mComponentContextFixture.destroy(); mComponentContextFixture.destroy(); mComponentContextFixture = null; mComponentContextFixture = null; mMockitoHelper.tearDown(); mMockitoHelper.tearDown(); Mockito.framework().clearInlineMocks(); Mockito.framework().clearInlineMocks(); } } protected Looper getLooper() { if (mHandlerThread == null) { mHandlerThread = new HandlerThread("TelecomTestCase"); mHandlerThread.start(); } return mHandlerThread.getLooper(); } protected static void waitForHandlerAction(Handler h, long timeoutMillis) { protected static void waitForHandlerAction(Handler h, long timeoutMillis) { final CountDownLatch lock = new CountDownLatch(1); final CountDownLatch lock = new CountDownLatch(1); h.post(lock::countDown); h.post(lock::countDown); Loading Loading
src/com/android/server/telecom/CallsManager.java +2 −1 Original line number Original line Diff line number Diff line Loading @@ -733,7 +733,8 @@ public class CallsManager extends Call.ListenerBase audioManager.generateAudioSessionId())); audioManager.generateAudioSessionId())); InCallTonePlayer.Factory playerFactory = new InCallTonePlayer.Factory( InCallTonePlayer.Factory playerFactory = new InCallTonePlayer.Factory( callAudioRoutePeripheralAdapter, lock, toneGeneratorFactory, mediaPlayerFactory, callAudioRoutePeripheralAdapter, lock, toneGeneratorFactory, mediaPlayerFactory, () -> audioManager.getStreamVolume(AudioManager.STREAM_RING) > 0, featureFlags); () -> audioManager.getStreamVolume(AudioManager.STREAM_RING) > 0, featureFlags, Looper.getMainLooper()); SystemSettingsUtil systemSettingsUtil = new SystemSettingsUtil(); SystemSettingsUtil systemSettingsUtil = new SystemSettingsUtil(); RingtoneFactory ringtoneFactory = new RingtoneFactory(this, context, featureFlags); RingtoneFactory ringtoneFactory = new RingtoneFactory(this, context, featureFlags); Loading
src/com/android/server/telecom/InCallTonePlayer.java +8 −4 Original line number Original line Diff line number Diff line Loading @@ -56,17 +56,19 @@ public class InCallTonePlayer extends Thread { private final MediaPlayerFactory mMediaPlayerFactory; private final MediaPlayerFactory mMediaPlayerFactory; private final AudioManagerAdapter mAudioManagerAdapter; private final AudioManagerAdapter mAudioManagerAdapter; private final FeatureFlags mFeatureFlags; private final FeatureFlags mFeatureFlags; private final Looper mLooper; public Factory(CallAudioRoutePeripheralAdapter callAudioRoutePeripheralAdapter, public Factory(CallAudioRoutePeripheralAdapter callAudioRoutePeripheralAdapter, TelecomSystem.SyncRoot lock, ToneGeneratorFactory toneGeneratorFactory, TelecomSystem.SyncRoot lock, ToneGeneratorFactory toneGeneratorFactory, MediaPlayerFactory mediaPlayerFactory, AudioManagerAdapter audioManagerAdapter, MediaPlayerFactory mediaPlayerFactory, AudioManagerAdapter audioManagerAdapter, FeatureFlags flags) { FeatureFlags flags, Looper looper) { mCallAudioRoutePeripheralAdapter = callAudioRoutePeripheralAdapter; mCallAudioRoutePeripheralAdapter = callAudioRoutePeripheralAdapter; mLock = lock; mLock = lock; mToneGeneratorFactory = toneGeneratorFactory; mToneGeneratorFactory = toneGeneratorFactory; mMediaPlayerFactory = mediaPlayerFactory; mMediaPlayerFactory = mediaPlayerFactory; mAudioManagerAdapter = audioManagerAdapter; mAudioManagerAdapter = audioManagerAdapter; mFeatureFlags = flags; mFeatureFlags = flags; mLooper = looper; } } public void setCallAudioManager(CallAudioManager callAudioManager) { public void setCallAudioManager(CallAudioManager callAudioManager) { Loading @@ -76,7 +78,7 @@ public class InCallTonePlayer extends Thread { public InCallTonePlayer createPlayer(Call call, int tone) { public InCallTonePlayer createPlayer(Call call, int tone) { return new InCallTonePlayer(call, tone, mCallAudioManager, return new InCallTonePlayer(call, tone, mCallAudioManager, mCallAudioRoutePeripheralAdapter, mLock, mToneGeneratorFactory, mCallAudioRoutePeripheralAdapter, mLock, mToneGeneratorFactory, mMediaPlayerFactory, mAudioManagerAdapter, mFeatureFlags); mMediaPlayerFactory, mAudioManagerAdapter, mFeatureFlags, mLooper); } } } } Loading Loading @@ -199,7 +201,7 @@ public class InCallTonePlayer extends Thread { private final CallAudioManager mCallAudioManager; private final CallAudioManager mCallAudioManager; private final CallAudioRoutePeripheralAdapter mCallAudioRoutePeripheralAdapter; private final CallAudioRoutePeripheralAdapter mCallAudioRoutePeripheralAdapter; private final Handler mMainThreadHandler = new Handler(Looper.getMainLooper()); private final Handler mMainThreadHandler; /** The ID of the tone to play. */ /** The ID of the tone to play. */ private final int mToneId; private final int mToneId; Loading Loading @@ -242,7 +244,8 @@ public class InCallTonePlayer extends Thread { ToneGeneratorFactory toneGeneratorFactory, ToneGeneratorFactory toneGeneratorFactory, MediaPlayerFactory mediaPlayerFactor, MediaPlayerFactory mediaPlayerFactor, AudioManagerAdapter audioManagerAdapter, AudioManagerAdapter audioManagerAdapter, FeatureFlags flags) { FeatureFlags flags, Looper looper) { mCall = call; mCall = call; mState = STATE_OFF; mState = STATE_OFF; mToneId = toneId; mToneId = toneId; Loading @@ -253,6 +256,7 @@ public class InCallTonePlayer extends Thread { mMediaPlayerFactory = mediaPlayerFactor; mMediaPlayerFactory = mediaPlayerFactor; mAudioManagerAdapter = audioManagerAdapter; mAudioManagerAdapter = audioManagerAdapter; mFeatureFlags = flags; mFeatureFlags = flags; mMainThreadHandler = new Handler(looper); } } /** {@inheritDoc} */ /** {@inheritDoc} */ Loading
tests/src/com/android/server/telecom/tests/InCallTonePlayerTest.java +6 −2 Original line number Original line Diff line number Diff line Loading @@ -127,7 +127,8 @@ public class InCallTonePlayerTest extends TelecomTestCase { mCallAudioRouteStateMachine, mBluetoothRouteManager, mWiredHeadsetManager, mCallAudioRouteStateMachine, mBluetoothRouteManager, mWiredHeadsetManager, mDockManager, mRingtonePlayer); mDockManager, mRingtonePlayer); mFactory = new InCallTonePlayer.Factory(mCallAudioRoutePeripheralAdapter, mLock, mFactory = new InCallTonePlayer.Factory(mCallAudioRoutePeripheralAdapter, mLock, mToneGeneratorFactory, mMediaPlayerFactory, mAudioManagerAdapter, mFeatureFlags); mToneGeneratorFactory, mMediaPlayerFactory, mAudioManagerAdapter, mFeatureFlags, getLooper()); mFactory.setCallAudioManager(mCallAudioManager); mFactory.setCallAudioManager(mCallAudioManager); mInCallTonePlayer = mFactory.createPlayer(mCall, InCallTonePlayer.TONE_CALL_ENDED); mInCallTonePlayer = mFactory.createPlayer(mCall, InCallTonePlayer.TONE_CALL_ENDED); } } Loading @@ -136,7 +137,10 @@ public class InCallTonePlayerTest extends TelecomTestCase { @After @After public void tearDown() throws Exception { public void tearDown() throws Exception { super.tearDown(); super.tearDown(); if (mInCallTonePlayer != null) { mInCallTonePlayer.cleanup(); mInCallTonePlayer.cleanup(); mInCallTonePlayer = null; } } } @SmallTest @SmallTest Loading
tests/src/com/android/server/telecom/tests/TelecomTestCase.java +16 −0 Original line number Original line Diff line number Diff line Loading @@ -18,6 +18,8 @@ package com.android.server.telecom.tests; import android.content.Context; import android.content.Context; import android.os.Handler; import android.os.Handler; import android.os.HandlerThread; import android.os.Looper; import android.telecom.Log; import android.telecom.Log; import androidx.test.InstrumentationRegistry; import androidx.test.InstrumentationRegistry; Loading @@ -38,6 +40,7 @@ public abstract class TelecomTestCase { protected Context mContext; protected Context mContext; @Mock @Mock FeatureFlags mFeatureFlags; FeatureFlags mFeatureFlags; private HandlerThread mHandlerThread; MockitoHelper mMockitoHelper = new MockitoHelper(); MockitoHelper mMockitoHelper = new MockitoHelper(); ComponentContextFixture mComponentContextFixture; ComponentContextFixture mComponentContextFixture; Loading @@ -57,12 +60,25 @@ public abstract class TelecomTestCase { } } public void tearDown() throws Exception { public void tearDown() throws Exception { if (mHandlerThread != null) { mHandlerThread.quit(); mHandlerThread.join(); mHandlerThread = null; } mComponentContextFixture.destroy(); mComponentContextFixture.destroy(); mComponentContextFixture = null; mComponentContextFixture = null; mMockitoHelper.tearDown(); mMockitoHelper.tearDown(); Mockito.framework().clearInlineMocks(); Mockito.framework().clearInlineMocks(); } } protected Looper getLooper() { if (mHandlerThread == null) { mHandlerThread = new HandlerThread("TelecomTestCase"); mHandlerThread.start(); } return mHandlerThread.getLooper(); } protected static void waitForHandlerAction(Handler h, long timeoutMillis) { protected static void waitForHandlerAction(Handler h, long timeoutMillis) { final CountDownLatch lock = new CountDownLatch(1); final CountDownLatch lock = new CountDownLatch(1); h.post(lock::countDown); h.post(lock::countDown); Loading