Loading src/com/android/settings/notification/CallVolumePreference.kt +12 −16 Original line number Diff line number Diff line Loading @@ -44,13 +44,16 @@ import com.android.settingslib.metadata.SensitivityLevel import com.android.settingslib.preference.PreferenceBinding // LINT.IfChange open class CallVolumePreference : open class CallVolumePreference(private val audioHelper: AudioHelper) : IntRangeValuePreference, PreferenceBinding, PreferenceActionMetricsProvider, PreferenceAvailabilityProvider, PreferenceIconProvider, PreferenceRestrictionMixin { constructor(context: Context) : this(AudioHelper(context)) override val key: String get() = KEY Loading @@ -65,26 +68,23 @@ open class CallVolumePreference : override fun getIcon(context: Context) = R.drawable.ic_local_phone_24_lib override fun isAvailable(context: Context) = context.resources.getBoolean(R.bool.config_show_call_volume) && !createAudioHelper(context).isSingleVolume context.resources.getBoolean(R.bool.config_show_call_volume) && !audioHelper.isSingleVolume override fun isEnabled(context: Context) = super<PreferenceRestrictionMixin>.isEnabled(context) override val restrictionKeys get() = arrayOf(UserManager.DISALLOW_ADJUST_VOLUME) override fun storage(context: Context): KeyValueStore { val helper = createAudioHelper(context) return object : NoOpKeyedObservable<String>(), KeyValueStore { override fun storage(context: Context): KeyValueStore = object : NoOpKeyedObservable<String>(), KeyValueStore { override fun contains(key: String) = key == KEY @Suppress("UNCHECKED_CAST") override fun <T : Any> getValue(key: String, valueType: Class<T>) = helper.getStreamVolume(getAudioStream(context)) as T audioHelper.getStreamVolume(getAudioStream(context)) as T override fun <T : Any> setValue(key: String, valueType: Class<T>, value: T?) { helper.setStreamVolume(getAudioStream(context), value as Int) } audioHelper.setStreamVolume(getAudioStream(context), value as Int) } } Loading @@ -107,11 +107,9 @@ open class CallVolumePreference : override val sensitivityLevel get() = SensitivityLevel.NO_SENSITIVITY override fun getMinValue(context: Context) = createAudioHelper(context).getMinVolume(getAudioStream(context)) override fun getMinValue(context: Context) = audioHelper.getMinVolume(getAudioStream(context)) override fun getMaxValue(context: Context) = createAudioHelper(context).getMaxVolume(getAudioStream(context)) override fun getMaxValue(context: Context) = audioHelper.getMaxVolume(getAudioStream(context)) override fun createWidget(context: Context) = VolumeSeekBarPreference(context) Loading @@ -120,11 +118,9 @@ open class CallVolumePreference : (preference as VolumeSeekBarPreference).setStream(getAudioStream(preference.context)) } open fun createAudioHelper(context: Context) = AudioHelper(context) @Suppress("DEPRECATION") fun getAudioStream(context: Context): Int { val audioManager = context.getSystemService(AudioManager::class.java) val audioManager = context.getSystemService(AudioManager::class.java)!! return when { audioManager.isBluetoothScoOn() -> STREAM_BLUETOOTH_SCO else -> STREAM_VOICE_CALL Loading src/com/android/settings/notification/MediaVolumePreference.kt +10 −13 Original line number Diff line number Diff line Loading @@ -41,13 +41,16 @@ import com.android.settingslib.metadata.SensitivityLevel import com.android.settingslib.preference.PreferenceBinding // LINT.IfChange open class MediaVolumePreference : open class MediaVolumePreference(private val audioHelper: AudioHelper) : IntRangeValuePreference, PreferenceBinding, PreferenceActionMetricsProvider, PreferenceAvailabilityProvider, PreferenceIconProvider, PreferenceRestrictionMixin { constructor(context: Context) : this(AudioHelper(context)) override val key: String get() = KEY Loading @@ -73,18 +76,16 @@ open class MediaVolumePreference : override val restrictionKeys get() = arrayOf(UserManager.DISALLOW_ADJUST_VOLUME) override fun storage(context: Context): KeyValueStore { val helper = createAudioHelper(context) return object : NoOpKeyedObservable<String>(), KeyValueStore { override fun storage(context: Context): KeyValueStore = object : NoOpKeyedObservable<String>(), KeyValueStore { override fun contains(key: String) = key == KEY @Suppress("UNCHECKED_CAST") override fun <T : Any> getValue(key: String, valueType: Class<T>) = helper.getStreamVolume(STREAM_MUSIC) as T audioHelper.getStreamVolume(STREAM_MUSIC) as T override fun <T : Any> setValue(key: String, valueType: Class<T>, value: T?) { helper.setStreamVolume(STREAM_MUSIC, value as Int) } audioHelper.setStreamVolume(STREAM_MUSIC, value as Int) } } Loading @@ -107,11 +108,9 @@ open class MediaVolumePreference : override val sensitivityLevel get() = SensitivityLevel.NO_SENSITIVITY override fun getMinValue(context: Context) = createAudioHelper(context).getMinVolume(STREAM_MUSIC) override fun getMinValue(context: Context) = audioHelper.getMinVolume(STREAM_MUSIC) override fun getMaxValue(context: Context) = createAudioHelper(context).getMaxVolume(STREAM_MUSIC) override fun getMaxValue(context: Context) = audioHelper.getMaxVolume(STREAM_MUSIC) override fun createWidget(context: Context) = VolumeSeekBarPreference(context) Loading @@ -124,8 +123,6 @@ open class MediaVolumePreference : } } open fun createAudioHelper(context: Context) = AudioHelper(context) private fun updateContentDescription(preference: VolumeSeekBarPreference) { when { preference.isMuted -> Loading src/com/android/settings/notification/SeparateRingVolumePreference.kt +13 −17 Original line number Diff line number Diff line Loading @@ -59,7 +59,7 @@ import com.android.settingslib.metadata.SensitivityLevel import com.android.settingslib.preference.PreferenceBinding // LINT.IfChange open class SeparateRingVolumePreference : open class SeparateRingVolumePreference(private val audioHelper: AudioHelper) : IntRangeValuePreference, PreferenceBinding, PreferenceActionMetricsProvider, Loading @@ -68,6 +68,8 @@ open class SeparateRingVolumePreference : PreferenceLifecycleProvider, PreferenceRestrictionMixin { constructor(context: Context) : this(AudioHelper(context)) private var broadcastReceiver: BroadcastReceiver? = null override val key: String Loading @@ -83,25 +85,23 @@ open class SeparateRingVolumePreference : override fun getIcon(context: Context) = context.getIconRes() override fun isAvailable(context: Context) = !createAudioHelper(context).isSingleVolume override fun isAvailable(context: Context) = !audioHelper.isSingleVolume override fun isEnabled(context: Context) = super<PreferenceRestrictionMixin>.isEnabled(context) override val restrictionKeys get() = arrayOf(UserManager.DISALLOW_ADJUST_VOLUME) override fun storage(context: Context): KeyValueStore { val helper = createAudioHelper(context) return object : NoOpKeyedObservable<String>(), KeyValueStore { override fun storage(context: Context): KeyValueStore = object : NoOpKeyedObservable<String>(), KeyValueStore { override fun contains(key: String) = key == KEY @Suppress("UNCHECKED_CAST") override fun <T : Any> getValue(key: String, valueType: Class<T>) = helper.getStreamVolume(STREAM_RING) as T audioHelper.getStreamVolume(STREAM_RING) as T override fun <T : Any> setValue(key: String, valueType: Class<T>, value: T?) { helper.setStreamVolume(STREAM_RING, value as Int) } audioHelper.setStreamVolume(STREAM_RING, value as Int) } } Loading @@ -124,11 +124,9 @@ open class SeparateRingVolumePreference : override val sensitivityLevel get() = SensitivityLevel.NO_SENSITIVITY override fun getMinValue(context: Context) = createAudioHelper(context).getMinVolume(STREAM_RING) override fun getMinValue(context: Context) = audioHelper.getMinVolume(STREAM_RING) override fun getMaxValue(context: Context) = createAudioHelper(context).getMaxVolume(STREAM_RING) override fun getMaxValue(context: Context) = audioHelper.getMaxVolume(STREAM_RING) override fun createWidget(context: Context) = VolumeSeekBarPreference(context) Loading Loading @@ -166,14 +164,12 @@ open class SeparateRingVolumePreference : broadcastReceiver?.let { context.unregisterReceiver(it) } } open fun createAudioHelper(context: Context) = AudioHelper(context) companion object { const val KEY = "separate_ring_volume" } } fun Context.getContentDescription() = fun Context.getContentDescription(): String = when (getEffectiveRingerMode()) { RINGER_MODE_VIBRATE -> getString(R.string.ringer_content_description_vibrate_mode) RINGER_MODE_SILENT -> getString(R.string.ringer_content_description_silent_mode) Loading @@ -188,9 +184,9 @@ fun Context.getIconRes() = } fun Context.getEffectiveRingerMode(): Int { val hasVibrator = getSystemService(Vibrator::class.java)?.hasVibrator() ?: false val hasVibrator = getSystemService(Vibrator::class.java)?.hasVibrator() == true val ringerMode = getSystemService(AudioManager::class.java)?.getRingerModeInternal() ?: RINGER_MODE_NORMAL getSystemService(AudioManager::class.java)?.ringerModeInternal ?: RINGER_MODE_NORMAL return when { !hasVibrator && ringerMode == RINGER_MODE_VIBRATE -> RINGER_MODE_SILENT else -> ringerMode Loading src/com/android/settings/notification/SoundScreen.kt +4 −3 Original line number Diff line number Diff line Loading @@ -55,9 +55,10 @@ class SoundScreen : PreferenceScreenCreator, PreferenceIconProvider { override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(context, this) { +MediaVolumePreference() order -180 +CallVolumePreference() order -170 +SeparateRingVolumePreference() order -155 val audioHelper = AudioHelper(context) +MediaVolumePreference(audioHelper) order -180 +CallVolumePreference(audioHelper) order -170 +SeparateRingVolumePreference(audioHelper) order -155 +MediaControlsScreen.KEY order -100 +DialPadTonePreference() order -50 } Loading tests/robotests/src/com/android/settings/notification/CallVolumePreferenceTest.kt +20 −24 Original line number Diff line number Diff line Loading @@ -16,7 +16,6 @@ package com.android.settings.notification import android.content.Context import android.content.ContextWrapper import android.content.res.Resources import android.media.AudioManager Loading @@ -30,22 +29,20 @@ import org.junit.runner.RunWith import org.mockito.ArgumentMatchers.anyInt import org.mockito.kotlin.doReturn import org.mockito.kotlin.mock import org.mockito.kotlin.spy import org.mockito.kotlin.stub // LINT.IfChange @RunWith(AndroidJUnit4::class) class CallVolumePreferenceTest { private var audioHelper = mock<AudioHelper>() private var mockResources = mock<Resources>() private val mockResources = mock<Resources>() private var audioManager: AudioManager? = null private val audioManager = mock<AudioManager>() private var callVolumePreference = CallVolumePreference() private val context = object : ContextWrapper(ApplicationProvider.getApplicationContext()) { private val context = object : ContextWrapper(ApplicationProvider.getApplicationContext()) { override fun getSystemService(name: String): Any? = when (name) { Context.AUDIO_SERVICE -> audioManager AUDIO_SERVICE -> audioManager else -> super.getSystemService(name) } Loading @@ -55,10 +52,8 @@ class CallVolumePreferenceTest { @Test fun isAvailable_configTrueAndNoSingleVolume_shouldReturnTrue() { mockResources.stub { on { getBoolean(anyInt()) } doReturn true } audioHelper = mock { on { isSingleVolume } doReturn false } callVolumePreference = spy(callVolumePreference).stub { onGeneric { createAudioHelper(context) } doReturn audioHelper } val audioHelper = mock<AudioHelper> { on { isSingleVolume } doReturn false } val callVolumePreference = CallVolumePreference(audioHelper) assertThat(callVolumePreference.isAvailable(context)).isTrue() } Loading @@ -66,10 +61,8 @@ class CallVolumePreferenceTest { @Test fun isAvailable_configTrueAndSingleVolume_shouldReturnFalse() { mockResources.stub { on { getBoolean(anyInt()) } doReturn true } audioHelper = mock { on { isSingleVolume } doReturn true } callVolumePreference = spy(callVolumePreference).stub { onGeneric { createAudioHelper(context) } doReturn audioHelper } val audioHelper = mock<AudioHelper> { on { isSingleVolume } doReturn true } val callVolumePreference = CallVolumePreference(audioHelper) assertThat(callVolumePreference.isAvailable(context)).isFalse() } Loading @@ -77,6 +70,7 @@ class CallVolumePreferenceTest { @Test fun isAvailable_configFalse_shouldReturnFalse() { mockResources.stub { on { getBoolean(anyInt()) } doReturn false } val callVolumePreference = CallVolumePreference(context) assertThat(callVolumePreference.isAvailable(context)).isFalse() } Loading @@ -84,7 +78,8 @@ class CallVolumePreferenceTest { @Test @Suppress("DEPRECATION") fun getAudioStream_onBluetoothScoOn_shouldEqualToStreamBluetoothSco() { audioManager = mock { on { isBluetoothScoOn } doReturn true } audioManager.stub { on { isBluetoothScoOn } doReturn true } val callVolumePreference = CallVolumePreference(context) assertThat(callVolumePreference.getAudioStream(context)).isEqualTo(STREAM_BLUETOOTH_SCO) } Loading @@ -92,7 +87,8 @@ class CallVolumePreferenceTest { @Test @Suppress("DEPRECATION") fun getAudioStream_onBluetoothScoOff_shouldEqualToStreamVoiceCall() { audioManager = mock { on { isBluetoothScoOn } doReturn false } audioManager.stub { on { isBluetoothScoOn } doReturn false } val callVolumePreference = CallVolumePreference(context) assertThat(callVolumePreference.getAudioStream(context)).isEqualTo(STREAM_VOICE_CALL) } Loading Loading
src/com/android/settings/notification/CallVolumePreference.kt +12 −16 Original line number Diff line number Diff line Loading @@ -44,13 +44,16 @@ import com.android.settingslib.metadata.SensitivityLevel import com.android.settingslib.preference.PreferenceBinding // LINT.IfChange open class CallVolumePreference : open class CallVolumePreference(private val audioHelper: AudioHelper) : IntRangeValuePreference, PreferenceBinding, PreferenceActionMetricsProvider, PreferenceAvailabilityProvider, PreferenceIconProvider, PreferenceRestrictionMixin { constructor(context: Context) : this(AudioHelper(context)) override val key: String get() = KEY Loading @@ -65,26 +68,23 @@ open class CallVolumePreference : override fun getIcon(context: Context) = R.drawable.ic_local_phone_24_lib override fun isAvailable(context: Context) = context.resources.getBoolean(R.bool.config_show_call_volume) && !createAudioHelper(context).isSingleVolume context.resources.getBoolean(R.bool.config_show_call_volume) && !audioHelper.isSingleVolume override fun isEnabled(context: Context) = super<PreferenceRestrictionMixin>.isEnabled(context) override val restrictionKeys get() = arrayOf(UserManager.DISALLOW_ADJUST_VOLUME) override fun storage(context: Context): KeyValueStore { val helper = createAudioHelper(context) return object : NoOpKeyedObservable<String>(), KeyValueStore { override fun storage(context: Context): KeyValueStore = object : NoOpKeyedObservable<String>(), KeyValueStore { override fun contains(key: String) = key == KEY @Suppress("UNCHECKED_CAST") override fun <T : Any> getValue(key: String, valueType: Class<T>) = helper.getStreamVolume(getAudioStream(context)) as T audioHelper.getStreamVolume(getAudioStream(context)) as T override fun <T : Any> setValue(key: String, valueType: Class<T>, value: T?) { helper.setStreamVolume(getAudioStream(context), value as Int) } audioHelper.setStreamVolume(getAudioStream(context), value as Int) } } Loading @@ -107,11 +107,9 @@ open class CallVolumePreference : override val sensitivityLevel get() = SensitivityLevel.NO_SENSITIVITY override fun getMinValue(context: Context) = createAudioHelper(context).getMinVolume(getAudioStream(context)) override fun getMinValue(context: Context) = audioHelper.getMinVolume(getAudioStream(context)) override fun getMaxValue(context: Context) = createAudioHelper(context).getMaxVolume(getAudioStream(context)) override fun getMaxValue(context: Context) = audioHelper.getMaxVolume(getAudioStream(context)) override fun createWidget(context: Context) = VolumeSeekBarPreference(context) Loading @@ -120,11 +118,9 @@ open class CallVolumePreference : (preference as VolumeSeekBarPreference).setStream(getAudioStream(preference.context)) } open fun createAudioHelper(context: Context) = AudioHelper(context) @Suppress("DEPRECATION") fun getAudioStream(context: Context): Int { val audioManager = context.getSystemService(AudioManager::class.java) val audioManager = context.getSystemService(AudioManager::class.java)!! return when { audioManager.isBluetoothScoOn() -> STREAM_BLUETOOTH_SCO else -> STREAM_VOICE_CALL Loading
src/com/android/settings/notification/MediaVolumePreference.kt +10 −13 Original line number Diff line number Diff line Loading @@ -41,13 +41,16 @@ import com.android.settingslib.metadata.SensitivityLevel import com.android.settingslib.preference.PreferenceBinding // LINT.IfChange open class MediaVolumePreference : open class MediaVolumePreference(private val audioHelper: AudioHelper) : IntRangeValuePreference, PreferenceBinding, PreferenceActionMetricsProvider, PreferenceAvailabilityProvider, PreferenceIconProvider, PreferenceRestrictionMixin { constructor(context: Context) : this(AudioHelper(context)) override val key: String get() = KEY Loading @@ -73,18 +76,16 @@ open class MediaVolumePreference : override val restrictionKeys get() = arrayOf(UserManager.DISALLOW_ADJUST_VOLUME) override fun storage(context: Context): KeyValueStore { val helper = createAudioHelper(context) return object : NoOpKeyedObservable<String>(), KeyValueStore { override fun storage(context: Context): KeyValueStore = object : NoOpKeyedObservable<String>(), KeyValueStore { override fun contains(key: String) = key == KEY @Suppress("UNCHECKED_CAST") override fun <T : Any> getValue(key: String, valueType: Class<T>) = helper.getStreamVolume(STREAM_MUSIC) as T audioHelper.getStreamVolume(STREAM_MUSIC) as T override fun <T : Any> setValue(key: String, valueType: Class<T>, value: T?) { helper.setStreamVolume(STREAM_MUSIC, value as Int) } audioHelper.setStreamVolume(STREAM_MUSIC, value as Int) } } Loading @@ -107,11 +108,9 @@ open class MediaVolumePreference : override val sensitivityLevel get() = SensitivityLevel.NO_SENSITIVITY override fun getMinValue(context: Context) = createAudioHelper(context).getMinVolume(STREAM_MUSIC) override fun getMinValue(context: Context) = audioHelper.getMinVolume(STREAM_MUSIC) override fun getMaxValue(context: Context) = createAudioHelper(context).getMaxVolume(STREAM_MUSIC) override fun getMaxValue(context: Context) = audioHelper.getMaxVolume(STREAM_MUSIC) override fun createWidget(context: Context) = VolumeSeekBarPreference(context) Loading @@ -124,8 +123,6 @@ open class MediaVolumePreference : } } open fun createAudioHelper(context: Context) = AudioHelper(context) private fun updateContentDescription(preference: VolumeSeekBarPreference) { when { preference.isMuted -> Loading
src/com/android/settings/notification/SeparateRingVolumePreference.kt +13 −17 Original line number Diff line number Diff line Loading @@ -59,7 +59,7 @@ import com.android.settingslib.metadata.SensitivityLevel import com.android.settingslib.preference.PreferenceBinding // LINT.IfChange open class SeparateRingVolumePreference : open class SeparateRingVolumePreference(private val audioHelper: AudioHelper) : IntRangeValuePreference, PreferenceBinding, PreferenceActionMetricsProvider, Loading @@ -68,6 +68,8 @@ open class SeparateRingVolumePreference : PreferenceLifecycleProvider, PreferenceRestrictionMixin { constructor(context: Context) : this(AudioHelper(context)) private var broadcastReceiver: BroadcastReceiver? = null override val key: String Loading @@ -83,25 +85,23 @@ open class SeparateRingVolumePreference : override fun getIcon(context: Context) = context.getIconRes() override fun isAvailable(context: Context) = !createAudioHelper(context).isSingleVolume override fun isAvailable(context: Context) = !audioHelper.isSingleVolume override fun isEnabled(context: Context) = super<PreferenceRestrictionMixin>.isEnabled(context) override val restrictionKeys get() = arrayOf(UserManager.DISALLOW_ADJUST_VOLUME) override fun storage(context: Context): KeyValueStore { val helper = createAudioHelper(context) return object : NoOpKeyedObservable<String>(), KeyValueStore { override fun storage(context: Context): KeyValueStore = object : NoOpKeyedObservable<String>(), KeyValueStore { override fun contains(key: String) = key == KEY @Suppress("UNCHECKED_CAST") override fun <T : Any> getValue(key: String, valueType: Class<T>) = helper.getStreamVolume(STREAM_RING) as T audioHelper.getStreamVolume(STREAM_RING) as T override fun <T : Any> setValue(key: String, valueType: Class<T>, value: T?) { helper.setStreamVolume(STREAM_RING, value as Int) } audioHelper.setStreamVolume(STREAM_RING, value as Int) } } Loading @@ -124,11 +124,9 @@ open class SeparateRingVolumePreference : override val sensitivityLevel get() = SensitivityLevel.NO_SENSITIVITY override fun getMinValue(context: Context) = createAudioHelper(context).getMinVolume(STREAM_RING) override fun getMinValue(context: Context) = audioHelper.getMinVolume(STREAM_RING) override fun getMaxValue(context: Context) = createAudioHelper(context).getMaxVolume(STREAM_RING) override fun getMaxValue(context: Context) = audioHelper.getMaxVolume(STREAM_RING) override fun createWidget(context: Context) = VolumeSeekBarPreference(context) Loading Loading @@ -166,14 +164,12 @@ open class SeparateRingVolumePreference : broadcastReceiver?.let { context.unregisterReceiver(it) } } open fun createAudioHelper(context: Context) = AudioHelper(context) companion object { const val KEY = "separate_ring_volume" } } fun Context.getContentDescription() = fun Context.getContentDescription(): String = when (getEffectiveRingerMode()) { RINGER_MODE_VIBRATE -> getString(R.string.ringer_content_description_vibrate_mode) RINGER_MODE_SILENT -> getString(R.string.ringer_content_description_silent_mode) Loading @@ -188,9 +184,9 @@ fun Context.getIconRes() = } fun Context.getEffectiveRingerMode(): Int { val hasVibrator = getSystemService(Vibrator::class.java)?.hasVibrator() ?: false val hasVibrator = getSystemService(Vibrator::class.java)?.hasVibrator() == true val ringerMode = getSystemService(AudioManager::class.java)?.getRingerModeInternal() ?: RINGER_MODE_NORMAL getSystemService(AudioManager::class.java)?.ringerModeInternal ?: RINGER_MODE_NORMAL return when { !hasVibrator && ringerMode == RINGER_MODE_VIBRATE -> RINGER_MODE_SILENT else -> ringerMode Loading
src/com/android/settings/notification/SoundScreen.kt +4 −3 Original line number Diff line number Diff line Loading @@ -55,9 +55,10 @@ class SoundScreen : PreferenceScreenCreator, PreferenceIconProvider { override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(context, this) { +MediaVolumePreference() order -180 +CallVolumePreference() order -170 +SeparateRingVolumePreference() order -155 val audioHelper = AudioHelper(context) +MediaVolumePreference(audioHelper) order -180 +CallVolumePreference(audioHelper) order -170 +SeparateRingVolumePreference(audioHelper) order -155 +MediaControlsScreen.KEY order -100 +DialPadTonePreference() order -50 } Loading
tests/robotests/src/com/android/settings/notification/CallVolumePreferenceTest.kt +20 −24 Original line number Diff line number Diff line Loading @@ -16,7 +16,6 @@ package com.android.settings.notification import android.content.Context import android.content.ContextWrapper import android.content.res.Resources import android.media.AudioManager Loading @@ -30,22 +29,20 @@ import org.junit.runner.RunWith import org.mockito.ArgumentMatchers.anyInt import org.mockito.kotlin.doReturn import org.mockito.kotlin.mock import org.mockito.kotlin.spy import org.mockito.kotlin.stub // LINT.IfChange @RunWith(AndroidJUnit4::class) class CallVolumePreferenceTest { private var audioHelper = mock<AudioHelper>() private var mockResources = mock<Resources>() private val mockResources = mock<Resources>() private var audioManager: AudioManager? = null private val audioManager = mock<AudioManager>() private var callVolumePreference = CallVolumePreference() private val context = object : ContextWrapper(ApplicationProvider.getApplicationContext()) { private val context = object : ContextWrapper(ApplicationProvider.getApplicationContext()) { override fun getSystemService(name: String): Any? = when (name) { Context.AUDIO_SERVICE -> audioManager AUDIO_SERVICE -> audioManager else -> super.getSystemService(name) } Loading @@ -55,10 +52,8 @@ class CallVolumePreferenceTest { @Test fun isAvailable_configTrueAndNoSingleVolume_shouldReturnTrue() { mockResources.stub { on { getBoolean(anyInt()) } doReturn true } audioHelper = mock { on { isSingleVolume } doReturn false } callVolumePreference = spy(callVolumePreference).stub { onGeneric { createAudioHelper(context) } doReturn audioHelper } val audioHelper = mock<AudioHelper> { on { isSingleVolume } doReturn false } val callVolumePreference = CallVolumePreference(audioHelper) assertThat(callVolumePreference.isAvailable(context)).isTrue() } Loading @@ -66,10 +61,8 @@ class CallVolumePreferenceTest { @Test fun isAvailable_configTrueAndSingleVolume_shouldReturnFalse() { mockResources.stub { on { getBoolean(anyInt()) } doReturn true } audioHelper = mock { on { isSingleVolume } doReturn true } callVolumePreference = spy(callVolumePreference).stub { onGeneric { createAudioHelper(context) } doReturn audioHelper } val audioHelper = mock<AudioHelper> { on { isSingleVolume } doReturn true } val callVolumePreference = CallVolumePreference(audioHelper) assertThat(callVolumePreference.isAvailable(context)).isFalse() } Loading @@ -77,6 +70,7 @@ class CallVolumePreferenceTest { @Test fun isAvailable_configFalse_shouldReturnFalse() { mockResources.stub { on { getBoolean(anyInt()) } doReturn false } val callVolumePreference = CallVolumePreference(context) assertThat(callVolumePreference.isAvailable(context)).isFalse() } Loading @@ -84,7 +78,8 @@ class CallVolumePreferenceTest { @Test @Suppress("DEPRECATION") fun getAudioStream_onBluetoothScoOn_shouldEqualToStreamBluetoothSco() { audioManager = mock { on { isBluetoothScoOn } doReturn true } audioManager.stub { on { isBluetoothScoOn } doReturn true } val callVolumePreference = CallVolumePreference(context) assertThat(callVolumePreference.getAudioStream(context)).isEqualTo(STREAM_BLUETOOTH_SCO) } Loading @@ -92,7 +87,8 @@ class CallVolumePreferenceTest { @Test @Suppress("DEPRECATION") fun getAudioStream_onBluetoothScoOff_shouldEqualToStreamVoiceCall() { audioManager = mock { on { isBluetoothScoOn } doReturn false } audioManager.stub { on { isBluetoothScoOn } doReturn false } val callVolumePreference = CallVolumePreference(context) assertThat(callVolumePreference.getAudioStream(context)).isEqualTo(STREAM_VOICE_CALL) } Loading