diff options
-rw-r--r-- | packages/SettingsLib/src/com/android/settingslib/media/InputRouteManager.java | 18 | ||||
-rw-r--r-- | packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InputRouteManagerTest.java | 57 |
2 files changed, 10 insertions, 65 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/media/InputRouteManager.java b/packages/SettingsLib/src/com/android/settingslib/media/InputRouteManager.java index 63661f698f4e..4f315a2a2486 100644 --- a/packages/SettingsLib/src/com/android/settingslib/media/InputRouteManager.java +++ b/packages/SettingsLib/src/com/android/settingslib/media/InputRouteManager.java @@ -74,23 +74,7 @@ public final class InputRouteManager { new AudioDeviceCallback() { @Override public void onAudioDevicesAdded(@NonNull AudioDeviceInfo[] addedDevices) { - // Activate the last hot plugged valid input device, to match the output device - // behavior. - @AudioDeviceType int deviceTypeToActivate = mSelectedInputDeviceType; - for (AudioDeviceInfo info : addedDevices) { - if (InputMediaDevice.isSupportedInputDevice(info.getType())) { - deviceTypeToActivate = info.getType(); - } - } - - // Only activate if we find a different valid input device. e.g. if none of the - // addedDevices is supported input device, we don't need to activate anything. - if (mSelectedInputDeviceType != deviceTypeToActivate) { - mSelectedInputDeviceType = deviceTypeToActivate; - AudioDeviceAttributes deviceAttributes = - createInputDeviceAttributes(mSelectedInputDeviceType); - setPreferredDeviceForAllPresets(deviceAttributes); - } + applyDefaultSelectedTypeToAllPresets(); } @Override diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InputRouteManagerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InputRouteManagerTest.java index d808a25ebc04..782cee23fb42 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InputRouteManagerTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InputRouteManagerTest.java @@ -24,7 +24,6 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.atLeast; import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -139,18 +138,6 @@ public class InputRouteManagerTest { /* address= */ ""); } - private AudioDeviceAttributes getUsbHeadsetDeviceAttributes() { - return new AudioDeviceAttributes( - AudioDeviceAttributes.ROLE_INPUT, - AudioDeviceInfo.TYPE_USB_HEADSET, - /* address= */ ""); - } - - private AudioDeviceAttributes getHdmiDeviceAttributes() { - return new AudioDeviceAttributes( - AudioDeviceAttributes.ROLE_INPUT, AudioDeviceInfo.TYPE_HDMI, /* address= */ ""); - } - private void onPreferredDevicesForCapturePresetChanged(InputRouteManager inputRouteManager) { final List<AudioDeviceAttributes> audioDeviceAttributesList = new ArrayList<AudioDeviceAttributes>(); @@ -316,47 +303,21 @@ public class InputRouteManagerTest { } @Test - public void onAudioDevicesAdded_shouldActivateAddedDevice() { - final AudioManager audioManager = mock(AudioManager.class); - InputRouteManager inputRouteManager = new InputRouteManager(mContext, audioManager); - AudioDeviceInfo[] devices = {mockWiredHeadsetInfo()}; - inputRouteManager.mAudioDeviceCallback.onAudioDevicesAdded(devices); - - // The only added wired headset will be activated. - for (@MediaRecorder.Source int preset : PRESETS) { - verify(audioManager, atLeast(1)) - .setPreferredDeviceForCapturePreset(preset, getWiredHeadsetDeviceAttributes()); - } - } - - @Test - public void onAudioDevicesAdded_shouldActivateLastAddedDevice() { + public void onAudioDevicesAdded_shouldApplyDefaultSelectedDeviceToAllPresets() { final AudioManager audioManager = mock(AudioManager.class); - InputRouteManager inputRouteManager = new InputRouteManager(mContext, audioManager); - AudioDeviceInfo[] devices = {mockWiredHeadsetInfo(), mockUsbHeadsetInfo()}; - inputRouteManager.mAudioDeviceCallback.onAudioDevicesAdded(devices); - - // When adding multiple valid input devices, the last added device (usb headset in this - // case) will be activated. - for (@MediaRecorder.Source int preset : PRESETS) { - verify(audioManager, never()) - .setPreferredDeviceForCapturePreset(preset, getWiredHeadsetDeviceAttributes()); - verify(audioManager, atLeast(1)) - .setPreferredDeviceForCapturePreset(preset, getUsbHeadsetDeviceAttributes()); - } - } + AudioDeviceAttributes wiredHeadsetDeviceAttributes = getWiredHeadsetDeviceAttributes(); + when(audioManager.getDevicesForAttributes(INPUT_ATTRIBUTES)) + .thenReturn(Collections.singletonList(wiredHeadsetDeviceAttributes)); - @Test - public void onAudioDevicesAdded_doNotActivateInvalidAddedDevice() { - final AudioManager audioManager = mock(AudioManager.class); InputRouteManager inputRouteManager = new InputRouteManager(mContext, audioManager); - AudioDeviceInfo[] devices = {mockHdmiInfo()}; + AudioDeviceInfo[] devices = {mockWiredHeadsetInfo()}; inputRouteManager.mAudioDeviceCallback.onAudioDevicesAdded(devices); - // Do not activate since HDMI is not a valid input device. + // Called twice, one after initiation, the other after onAudioDevicesAdded call. + verify(audioManager, atLeast(2)).getDevicesForAttributes(INPUT_ATTRIBUTES); for (@MediaRecorder.Source int preset : PRESETS) { - verify(audioManager, never()) - .setPreferredDeviceForCapturePreset(preset, getHdmiDeviceAttributes()); + verify(audioManager, atLeast(2)) + .setPreferredDeviceForCapturePreset(preset, wiredHeadsetDeviceAttributes); } } |