Loading src/com/android/server/telecom/CallAudioModeStateMachine.java +18 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.server.telecom; import android.media.AudioManager; import android.os.Looper; import android.os.Message; import android.telecom.Log; import android.telecom.Logging.Runnable; Loading Loading @@ -504,6 +505,23 @@ public class CallAudioModeStateMachine extends StateMachine { mSystemStateHelper = systemStateHelper; mMostRecentMode = AudioManager.MODE_NORMAL; createStates(); } /** * Used for testing */ public CallAudioModeStateMachine(SystemStateHelper systemStateHelper, AudioManager audioManager, Looper looper) { super(CallAudioModeStateMachine.class.getSimpleName(), looper); mAudioManager = audioManager; mSystemStateHelper = systemStateHelper; mMostRecentMode = AudioManager.MODE_NORMAL; createStates(); } private void createStates() { addState(mUnfocusedState); addState(mRingingFocusState); addState(mSimCallFocusState); Loading src/com/android/server/telecom/CallAudioRouteStateMachine.java +40 −11 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import android.media.AudioDeviceInfo; import android.media.AudioManager; import android.media.IAudioService; import android.os.Binder; import android.os.Looper; import android.os.Message; import android.os.RemoteException; import android.os.UserHandle; Loading Loading @@ -1316,7 +1317,7 @@ public class CallAudioRouteStateMachine extends StateMachine { private final WiredHeadsetManager mWiredHeadsetManager; private final StatusBarNotifier mStatusBarNotifier; private final CallAudioManager.AudioServiceFactory mAudioServiceFactory; private final boolean mDoesDeviceSupportEarpieceRoute; private boolean mDoesDeviceSupportEarpieceRoute; private final TelecomSystem.SyncRoot mLock; private boolean mHasUserExplicitlyLeftBluetooth = false; Loading @@ -1339,16 +1340,28 @@ public class CallAudioRouteStateMachine extends StateMachine { CallAudioManager.AudioServiceFactory audioServiceFactory, int earpieceControl) { super(NAME); addState(mActiveEarpieceRoute); addState(mActiveHeadsetRoute); addState(mActiveBluetoothRoute); addState(mActiveSpeakerRoute); addState(mRingingBluetoothRoute); addState(mQuiescentEarpieceRoute); addState(mQuiescentHeadsetRoute); addState(mQuiescentBluetoothRoute); addState(mQuiescentSpeakerRoute); mContext = context; mCallsManager = callsManager; mAudioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE); mBluetoothRouteManager = bluetoothManager; mWiredHeadsetManager = wiredHeadsetManager; mStatusBarNotifier = statusBarNotifier; mAudioServiceFactory = audioServiceFactory; mLock = callsManager.getLock(); createStates(earpieceControl); } /** Used for testing only */ public CallAudioRouteStateMachine( Context context, CallsManager callsManager, BluetoothRouteManager bluetoothManager, WiredHeadsetManager wiredHeadsetManager, StatusBarNotifier statusBarNotifier, CallAudioManager.AudioServiceFactory audioServiceFactory, int earpieceControl, Looper looper) { super(NAME, looper); mContext = context; mCallsManager = callsManager; mAudioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE); Loading @@ -1356,6 +1369,12 @@ public class CallAudioRouteStateMachine extends StateMachine { mWiredHeadsetManager = wiredHeadsetManager; mStatusBarNotifier = statusBarNotifier; mAudioServiceFactory = audioServiceFactory; mLock = callsManager.getLock(); createStates(earpieceControl); } private void createStates(int earpieceControl) { switch (earpieceControl) { case EARPIECE_FORCE_DISABLED: mDoesDeviceSupportEarpieceRoute = false; Loading @@ -1366,7 +1385,17 @@ public class CallAudioRouteStateMachine extends StateMachine { default: mDoesDeviceSupportEarpieceRoute = checkForEarpieceSupport(); } mLock = callsManager.getLock(); addState(mActiveEarpieceRoute); addState(mActiveHeadsetRoute); addState(mActiveBluetoothRoute); addState(mActiveSpeakerRoute); addState(mRingingBluetoothRoute); addState(mQuiescentEarpieceRoute); addState(mQuiescentHeadsetRoute); addState(mQuiescentBluetoothRoute); addState(mQuiescentSpeakerRoute); mStateNameToRouteCode = new HashMap<>(8); mStateNameToRouteCode.put(mQuiescentEarpieceRoute.getName(), ROUTE_EARPIECE); Loading src/com/android/server/telecom/CallsManager.java +7 −3 Original line number Diff line number Diff line Loading @@ -313,6 +313,7 @@ public class CallsManager extends Call.ListenerBase private final MissedCallNotifier mMissedCallNotifier; private IncomingCallNotifier mIncomingCallNotifier; private final CallerInfoLookupHelper mCallerInfoLookupHelper; private final IncomingCallFilter.Factory mIncomingCallFilterFactory; private final DefaultDialerCache mDefaultDialerCache; private final Timeouts.Adapter mTimeoutsAdapter; private final PhoneNumberUtilsAdapter mPhoneNumberUtilsAdapter; Loading Loading @@ -436,7 +437,8 @@ public class CallsManager extends Call.ListenerBase CallAudioRouteStateMachine.Factory callAudioRouteStateMachineFactory, CallAudioModeStateMachine.Factory callAudioModeStateMachineFactory, InCallControllerFactory inCallControllerFactory, RoleManagerAdapter roleManagerAdapter) { RoleManagerAdapter roleManagerAdapter, IncomingCallFilter.Factory incomingCallFilterFactory) { mContext = context; mLock = lock; mPhoneNumberUtilsAdapter = phoneNumberUtilsAdapter; Loading @@ -452,6 +454,7 @@ public class CallsManager extends Call.ListenerBase mTimeoutsAdapter = timeoutsAdapter; mEmergencyCallHelper = emergencyCallHelper; mCallerInfoLookupHelper = callerInfoLookupHelper; mIncomingCallFilterFactory = incomingCallFilterFactory; mDtmfLocalTonePlayer = new DtmfLocalTonePlayer(new DtmfLocalTonePlayer.ToneGeneratorProxy()); Loading Loading @@ -634,7 +637,7 @@ public class CallsManager extends Call.ListenerBase return null; } })); new IncomingCallFilter(mContext, this, incomingCall, mLock, mIncomingCallFilterFactory.create(mContext, this, incomingCall, mLock, mTimeoutsAdapter, filters).performFiltering(); } Loading Loading @@ -1031,7 +1034,8 @@ public class CallsManager extends Call.ListenerBase mListeners.add(listener); } void removeListener(CallsManagerListener listener) { @VisibleForTesting public void removeListener(CallsManagerListener listener) { mListeners.remove(listener); } Loading src/com/android/server/telecom/ContactsAsyncHelper.java +11 −0 Original line number Diff line number Diff line Loading @@ -40,6 +40,12 @@ import java.io.InputStream; public class ContactsAsyncHelper { private static final String LOG_TAG = ContactsAsyncHelper.class.getSimpleName(); public static class Factory { public ContactsAsyncHelper create(ContentResolverAdapter adapter) { return new ContactsAsyncHelper(adapter); } } /** * Interface for a WorkerHandler result return. */ Loading Loading @@ -77,6 +83,11 @@ public class ContactsAsyncHelper { mContentResolverAdapter = contentResolverAdapter; } public ContactsAsyncHelper(ContentResolverAdapter contentResolverAdapter, Looper looper) { mContentResolverAdapter = contentResolverAdapter; mThreadHandler = new WorkerHandler(looper); } private static final class WorkerArgs { public Context context; public Uri displayPhotoUri; Loading src/com/android/server/telecom/InCallController.java +7 −2 Original line number Diff line number Diff line Loading @@ -731,6 +731,7 @@ public class InCallController extends CallsManagerListenerBase { private final Timeouts.Adapter mTimeoutsAdapter; private final DefaultDialerCache mDefaultDialerCache; private final EmergencyCallHelper mEmergencyCallHelper; private final Handler mHandler = new Handler(Looper.getMainLooper()); private CarSwappingInCallServiceConnection mInCallServiceConnection; private NonUIInCallServiceConnectionCollection mNonUIInCallServiceConnections; Loading Loading @@ -817,8 +818,7 @@ public class InCallController extends CallsManagerListenerBase { /** Let's add a 2 second delay before we send unbind to the services to hopefully * give them enough time to process all the pending messages. */ Handler handler = new Handler(Looper.getMainLooper()); handler.postDelayed(new Runnable("ICC.oCR", mLock) { mHandler.postDelayed(new Runnable("ICC.oCR", mLock) { @Override public void loggedRun() { // Check again to make sure there are no active calls. Loading Loading @@ -1597,4 +1597,9 @@ public class InCallController extends CallsManagerListenerBase { childCalls.addAll(parentCalls); return childCalls; } @VisibleForTesting public Handler getHandler() { return mHandler; } } Loading
src/com/android/server/telecom/CallAudioModeStateMachine.java +18 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.server.telecom; import android.media.AudioManager; import android.os.Looper; import android.os.Message; import android.telecom.Log; import android.telecom.Logging.Runnable; Loading Loading @@ -504,6 +505,23 @@ public class CallAudioModeStateMachine extends StateMachine { mSystemStateHelper = systemStateHelper; mMostRecentMode = AudioManager.MODE_NORMAL; createStates(); } /** * Used for testing */ public CallAudioModeStateMachine(SystemStateHelper systemStateHelper, AudioManager audioManager, Looper looper) { super(CallAudioModeStateMachine.class.getSimpleName(), looper); mAudioManager = audioManager; mSystemStateHelper = systemStateHelper; mMostRecentMode = AudioManager.MODE_NORMAL; createStates(); } private void createStates() { addState(mUnfocusedState); addState(mRingingFocusState); addState(mSimCallFocusState); Loading
src/com/android/server/telecom/CallAudioRouteStateMachine.java +40 −11 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import android.media.AudioDeviceInfo; import android.media.AudioManager; import android.media.IAudioService; import android.os.Binder; import android.os.Looper; import android.os.Message; import android.os.RemoteException; import android.os.UserHandle; Loading Loading @@ -1316,7 +1317,7 @@ public class CallAudioRouteStateMachine extends StateMachine { private final WiredHeadsetManager mWiredHeadsetManager; private final StatusBarNotifier mStatusBarNotifier; private final CallAudioManager.AudioServiceFactory mAudioServiceFactory; private final boolean mDoesDeviceSupportEarpieceRoute; private boolean mDoesDeviceSupportEarpieceRoute; private final TelecomSystem.SyncRoot mLock; private boolean mHasUserExplicitlyLeftBluetooth = false; Loading @@ -1339,16 +1340,28 @@ public class CallAudioRouteStateMachine extends StateMachine { CallAudioManager.AudioServiceFactory audioServiceFactory, int earpieceControl) { super(NAME); addState(mActiveEarpieceRoute); addState(mActiveHeadsetRoute); addState(mActiveBluetoothRoute); addState(mActiveSpeakerRoute); addState(mRingingBluetoothRoute); addState(mQuiescentEarpieceRoute); addState(mQuiescentHeadsetRoute); addState(mQuiescentBluetoothRoute); addState(mQuiescentSpeakerRoute); mContext = context; mCallsManager = callsManager; mAudioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE); mBluetoothRouteManager = bluetoothManager; mWiredHeadsetManager = wiredHeadsetManager; mStatusBarNotifier = statusBarNotifier; mAudioServiceFactory = audioServiceFactory; mLock = callsManager.getLock(); createStates(earpieceControl); } /** Used for testing only */ public CallAudioRouteStateMachine( Context context, CallsManager callsManager, BluetoothRouteManager bluetoothManager, WiredHeadsetManager wiredHeadsetManager, StatusBarNotifier statusBarNotifier, CallAudioManager.AudioServiceFactory audioServiceFactory, int earpieceControl, Looper looper) { super(NAME, looper); mContext = context; mCallsManager = callsManager; mAudioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE); Loading @@ -1356,6 +1369,12 @@ public class CallAudioRouteStateMachine extends StateMachine { mWiredHeadsetManager = wiredHeadsetManager; mStatusBarNotifier = statusBarNotifier; mAudioServiceFactory = audioServiceFactory; mLock = callsManager.getLock(); createStates(earpieceControl); } private void createStates(int earpieceControl) { switch (earpieceControl) { case EARPIECE_FORCE_DISABLED: mDoesDeviceSupportEarpieceRoute = false; Loading @@ -1366,7 +1385,17 @@ public class CallAudioRouteStateMachine extends StateMachine { default: mDoesDeviceSupportEarpieceRoute = checkForEarpieceSupport(); } mLock = callsManager.getLock(); addState(mActiveEarpieceRoute); addState(mActiveHeadsetRoute); addState(mActiveBluetoothRoute); addState(mActiveSpeakerRoute); addState(mRingingBluetoothRoute); addState(mQuiescentEarpieceRoute); addState(mQuiescentHeadsetRoute); addState(mQuiescentBluetoothRoute); addState(mQuiescentSpeakerRoute); mStateNameToRouteCode = new HashMap<>(8); mStateNameToRouteCode.put(mQuiescentEarpieceRoute.getName(), ROUTE_EARPIECE); Loading
src/com/android/server/telecom/CallsManager.java +7 −3 Original line number Diff line number Diff line Loading @@ -313,6 +313,7 @@ public class CallsManager extends Call.ListenerBase private final MissedCallNotifier mMissedCallNotifier; private IncomingCallNotifier mIncomingCallNotifier; private final CallerInfoLookupHelper mCallerInfoLookupHelper; private final IncomingCallFilter.Factory mIncomingCallFilterFactory; private final DefaultDialerCache mDefaultDialerCache; private final Timeouts.Adapter mTimeoutsAdapter; private final PhoneNumberUtilsAdapter mPhoneNumberUtilsAdapter; Loading Loading @@ -436,7 +437,8 @@ public class CallsManager extends Call.ListenerBase CallAudioRouteStateMachine.Factory callAudioRouteStateMachineFactory, CallAudioModeStateMachine.Factory callAudioModeStateMachineFactory, InCallControllerFactory inCallControllerFactory, RoleManagerAdapter roleManagerAdapter) { RoleManagerAdapter roleManagerAdapter, IncomingCallFilter.Factory incomingCallFilterFactory) { mContext = context; mLock = lock; mPhoneNumberUtilsAdapter = phoneNumberUtilsAdapter; Loading @@ -452,6 +454,7 @@ public class CallsManager extends Call.ListenerBase mTimeoutsAdapter = timeoutsAdapter; mEmergencyCallHelper = emergencyCallHelper; mCallerInfoLookupHelper = callerInfoLookupHelper; mIncomingCallFilterFactory = incomingCallFilterFactory; mDtmfLocalTonePlayer = new DtmfLocalTonePlayer(new DtmfLocalTonePlayer.ToneGeneratorProxy()); Loading Loading @@ -634,7 +637,7 @@ public class CallsManager extends Call.ListenerBase return null; } })); new IncomingCallFilter(mContext, this, incomingCall, mLock, mIncomingCallFilterFactory.create(mContext, this, incomingCall, mLock, mTimeoutsAdapter, filters).performFiltering(); } Loading Loading @@ -1031,7 +1034,8 @@ public class CallsManager extends Call.ListenerBase mListeners.add(listener); } void removeListener(CallsManagerListener listener) { @VisibleForTesting public void removeListener(CallsManagerListener listener) { mListeners.remove(listener); } Loading
src/com/android/server/telecom/ContactsAsyncHelper.java +11 −0 Original line number Diff line number Diff line Loading @@ -40,6 +40,12 @@ import java.io.InputStream; public class ContactsAsyncHelper { private static final String LOG_TAG = ContactsAsyncHelper.class.getSimpleName(); public static class Factory { public ContactsAsyncHelper create(ContentResolverAdapter adapter) { return new ContactsAsyncHelper(adapter); } } /** * Interface for a WorkerHandler result return. */ Loading Loading @@ -77,6 +83,11 @@ public class ContactsAsyncHelper { mContentResolverAdapter = contentResolverAdapter; } public ContactsAsyncHelper(ContentResolverAdapter contentResolverAdapter, Looper looper) { mContentResolverAdapter = contentResolverAdapter; mThreadHandler = new WorkerHandler(looper); } private static final class WorkerArgs { public Context context; public Uri displayPhotoUri; Loading
src/com/android/server/telecom/InCallController.java +7 −2 Original line number Diff line number Diff line Loading @@ -731,6 +731,7 @@ public class InCallController extends CallsManagerListenerBase { private final Timeouts.Adapter mTimeoutsAdapter; private final DefaultDialerCache mDefaultDialerCache; private final EmergencyCallHelper mEmergencyCallHelper; private final Handler mHandler = new Handler(Looper.getMainLooper()); private CarSwappingInCallServiceConnection mInCallServiceConnection; private NonUIInCallServiceConnectionCollection mNonUIInCallServiceConnections; Loading Loading @@ -817,8 +818,7 @@ public class InCallController extends CallsManagerListenerBase { /** Let's add a 2 second delay before we send unbind to the services to hopefully * give them enough time to process all the pending messages. */ Handler handler = new Handler(Looper.getMainLooper()); handler.postDelayed(new Runnable("ICC.oCR", mLock) { mHandler.postDelayed(new Runnable("ICC.oCR", mLock) { @Override public void loggedRun() { // Check again to make sure there are no active calls. Loading Loading @@ -1597,4 +1597,9 @@ public class InCallController extends CallsManagerListenerBase { childCalls.addAll(parentCalls); return childCalls; } @VisibleForTesting public Handler getHandler() { return mHandler; } }