Loading packages/SettingsLib/src/com/android/settingslib/volume/data/repository/AudioSharingRepository.kt +1 −0 Original line number Diff line number Diff line Loading @@ -221,6 +221,7 @@ class AudioSharingRepositoryImpl( override suspend fun audioSharingAvailable(): Boolean { return withContext(backgroundCoroutineContext) { BluetoothUtils.isAudioSharingEnabled() || BluetoothUtils.isAudioSharingPreviewEnabled(contentResolver) } } Loading packages/SettingsLib/src/com/android/settingslib/volume/shared/AudioSharingLogger.kt +2 −0 Original line number Diff line number Diff line Loading @@ -26,4 +26,6 @@ interface AudioSharingLogger { fun onVolumeMapChanged(map: Map<Int, Int>) fun onSetDeviceVolumeRequested(volume: Int) fun onAudioSharingAvailabilityRequestedError(requestFrom: String, e: String) } No newline at end of file packages/SettingsLib/tests/integ/src/com/android/settingslib/volume/data/repository/FakeAudioSharingRepositoryLogger.kt +4 −0 Original line number Diff line number Diff line Loading @@ -43,4 +43,8 @@ class FakeAudioSharingRepositoryLogger : AudioSharingLogger { override fun onSetDeviceVolumeRequested(volume: Int) { mutableLogs.add("onSetVolumeRequested volume=$volume") } override fun onAudioSharingAvailabilityRequestedError(requestFrom: String, e: String) { mutableLogs.add("onAudioSharingAvailabilityRequestedError, requestFrom=$requestFrom") } } No newline at end of file packages/SystemUI/multivalentTests/src/com/android/systemui/volume/VolumeDialogControllerImplTest.java +21 −11 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; Loading @@ -39,14 +40,13 @@ import android.media.IAudioService; import android.media.session.MediaSession; import android.os.Handler; import android.os.Process; import android.platform.test.annotations.EnableFlags; import android.testing.TestableLooper; import android.view.accessibility.AccessibilityManager; import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.filters.SmallTest; import com.android.settingslib.flags.Flags; import com.android.keyguard.TestScopeProvider; import com.android.systemui.SysuiTestCase; import com.android.systemui.SysuiTestCaseExtKt; import com.android.systemui.broadcast.BroadcastDispatcher; Loading @@ -64,6 +64,10 @@ import com.android.systemui.util.concurrency.ThreadFactory; import com.android.systemui.util.kotlin.JavaAdapter; import com.android.systemui.util.time.FakeSystemClock; import com.android.systemui.volume.domain.interactor.AudioSharingInteractor; import com.android.systemui.volume.domain.interactor.FakeAudioSharingInteractor; import com.android.systemui.volume.shared.VolumeLogger; import kotlinx.coroutines.test.TestScope; import org.junit.Before; import org.junit.Test; Loading Loading @@ -94,6 +98,9 @@ public class VolumeDialogControllerImplTest extends SysuiTestCase { private RingerModeLiveData mRingerModeInternalLiveData; private final FakeThreadFactory mThreadFactory = new FakeThreadFactory( new FakeExecutor(new FakeSystemClock())); private final TestScope mTestScope = TestScopeProvider.getTestScope(); private final JavaAdapter mJavaAdapter = new JavaAdapter(mTestScope); private FakeAudioSharingInteractor mFakeAudioSharingInteractor; @Mock private AudioManager mAudioManager; @Mock Loading @@ -117,9 +124,7 @@ public class VolumeDialogControllerImplTest extends SysuiTestCase { @Mock private DumpManager mDumpManager; @Mock private AudioSharingInteractor mAudioSharingInteractor; @Mock private JavaAdapter mJavaAdapter; private VolumeLogger mVolumeLogger; @Before Loading @@ -136,6 +141,8 @@ public class VolumeDialogControllerImplTest extends SysuiTestCase { mCallback = mock(VolumeDialogControllerImpl.C.class); mThreadFactory.setLooper(TestableLooper.get(this).getLooper()); mFakeAudioSharingInteractor = spy(new FakeAudioSharingInteractor()); mFakeAudioSharingInteractor.setAudioSharingVolumeBarAvailable(true); mVolumeController = new TestableVolumeDialogControllerImpl( mContext, Loading @@ -155,8 +162,9 @@ public class VolumeDialogControllerImplTest extends SysuiTestCase { mUserTracker, mDumpManager, mCallback, mAudioSharingInteractor, mJavaAdapter); mFakeAudioSharingInteractor, mJavaAdapter, mVolumeLogger); mVolumeController.setEnableDialogs(true, true); } Loading Loading @@ -305,13 +313,13 @@ public class VolumeDialogControllerImplTest extends SysuiTestCase { } @Test @EnableFlags(Flags.FLAG_VOLUME_DIALOG_AUDIO_SHARING_FIX) public void testSetStreamVolume_setSecondaryDeviceVolume() { mVolumeController.setStreamVolume( VolumeDialogControllerImpl.DYNAMIC_STREAM_BROADCAST, /* level= */ 100); Objects.requireNonNull(TestableLooper.get(this)).processAllMessages(); mTestScope.getTestScheduler().advanceUntilIdle(); verify(mAudioSharingInteractor).setStreamVolume(100); verify(mFakeAudioSharingInteractor).setStreamVolume(100); } static class TestableVolumeDialogControllerImpl extends VolumeDialogControllerImpl { Loading @@ -336,7 +344,8 @@ public class VolumeDialogControllerImplTest extends SysuiTestCase { DumpManager dumpManager, C callback, AudioSharingInteractor audioSharingInteractor, JavaAdapter javaAdapter) { JavaAdapter javaAdapter, VolumeLogger volumeLogger) { super( context, broadcastDispatcher, Loading @@ -355,7 +364,8 @@ public class VolumeDialogControllerImplTest extends SysuiTestCase { userTracker, dumpManager, audioSharingInteractor, javaAdapter); javaAdapter, volumeLogger); mCallbacks = callback; ArgumentCaptor<WakefulnessLifecycle.Observer> observerCaptor = Loading packages/SystemUI/multivalentTests/src/com/android/systemui/volume/VolumeDialogControllerImplTestKt.kt +11 −2 Original line number Diff line number Diff line Loading @@ -49,9 +49,10 @@ import com.android.systemui.testKosmos import com.android.systemui.util.RingerModeLiveData import com.android.systemui.util.concurrency.FakeExecutor import com.android.systemui.util.concurrency.FakeThreadFactory import com.android.systemui.util.kotlin.JavaAdapter import com.android.systemui.util.time.fakeSystemClock import com.android.systemui.volume.data.repository.audioRepository import com.android.systemui.volume.domain.interactor.audioSharingInteractor import com.android.systemui.volume.domain.interactor.FakeAudioSharingInteractor import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.runCurrent import kotlinx.coroutines.test.runTest Loading @@ -76,6 +77,9 @@ class VolumeDialogControllerImplTestKt : SysuiTestCase() { private val kosmos: Kosmos = testKosmos() private val audioManager: AudioManager = mock {} private val callbacks: VolumeDialogController.Callbacks = mock {} private val javaAdapter: JavaAdapter = JavaAdapter(kosmos.testScope) private val fakeAudioSharingInteractor: FakeAudioSharingInteractor = FakeAudioSharingInteractor() private lateinit var threadFactory: FakeThreadFactory private lateinit var underTest: VolumeDialogControllerImpl Loading @@ -87,6 +91,8 @@ class VolumeDialogControllerImplTestKt : SysuiTestCase() { threadFactory = FakeThreadFactory(FakeExecutor(fakeSystemClock)).apply { setLooper(looper) } broadcastDispatcherContext = testableContext fakeAudioSharingInteractor.setAudioSharingVolumeBarAvailable(true) underTest = VolumeDialogControllerImpl( applicationContext, Loading @@ -108,7 +114,8 @@ class VolumeDialogControllerImplTestKt : SysuiTestCase() { activityManager, mock { on { userContext }.thenReturn(applicationContext) }, dumpManager, audioSharingInteractor, fakeAudioSharingInteractor, javaAdapter, mock {}, ) .apply { Loading @@ -129,6 +136,7 @@ class VolumeDialogControllerImplTestKt : SysuiTestCase() { }, ) testableLooper.processAllMessages() testScheduler.advanceUntilIdle() verify(callbacks) { 1 * { onStateChanged(any()) } } } Loading Loading @@ -163,6 +171,7 @@ class VolumeDialogControllerImplTestKt : SysuiTestCase() { emitVolumeChange(AudioManager.STREAM_SYSTEM, AudioManager.FLAG_SHOW_UI) runCurrent() TestableLooper.get(this@VolumeDialogControllerImplTestKt).processAllMessages() testScheduler.advanceUntilIdle() verify(callbacks) { 1 * { onShowRequested(any(), any(), any()) } } } Loading Loading
packages/SettingsLib/src/com/android/settingslib/volume/data/repository/AudioSharingRepository.kt +1 −0 Original line number Diff line number Diff line Loading @@ -221,6 +221,7 @@ class AudioSharingRepositoryImpl( override suspend fun audioSharingAvailable(): Boolean { return withContext(backgroundCoroutineContext) { BluetoothUtils.isAudioSharingEnabled() || BluetoothUtils.isAudioSharingPreviewEnabled(contentResolver) } } Loading
packages/SettingsLib/src/com/android/settingslib/volume/shared/AudioSharingLogger.kt +2 −0 Original line number Diff line number Diff line Loading @@ -26,4 +26,6 @@ interface AudioSharingLogger { fun onVolumeMapChanged(map: Map<Int, Int>) fun onSetDeviceVolumeRequested(volume: Int) fun onAudioSharingAvailabilityRequestedError(requestFrom: String, e: String) } No newline at end of file
packages/SettingsLib/tests/integ/src/com/android/settingslib/volume/data/repository/FakeAudioSharingRepositoryLogger.kt +4 −0 Original line number Diff line number Diff line Loading @@ -43,4 +43,8 @@ class FakeAudioSharingRepositoryLogger : AudioSharingLogger { override fun onSetDeviceVolumeRequested(volume: Int) { mutableLogs.add("onSetVolumeRequested volume=$volume") } override fun onAudioSharingAvailabilityRequestedError(requestFrom: String, e: String) { mutableLogs.add("onAudioSharingAvailabilityRequestedError, requestFrom=$requestFrom") } } No newline at end of file
packages/SystemUI/multivalentTests/src/com/android/systemui/volume/VolumeDialogControllerImplTest.java +21 −11 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; Loading @@ -39,14 +40,13 @@ import android.media.IAudioService; import android.media.session.MediaSession; import android.os.Handler; import android.os.Process; import android.platform.test.annotations.EnableFlags; import android.testing.TestableLooper; import android.view.accessibility.AccessibilityManager; import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.filters.SmallTest; import com.android.settingslib.flags.Flags; import com.android.keyguard.TestScopeProvider; import com.android.systemui.SysuiTestCase; import com.android.systemui.SysuiTestCaseExtKt; import com.android.systemui.broadcast.BroadcastDispatcher; Loading @@ -64,6 +64,10 @@ import com.android.systemui.util.concurrency.ThreadFactory; import com.android.systemui.util.kotlin.JavaAdapter; import com.android.systemui.util.time.FakeSystemClock; import com.android.systemui.volume.domain.interactor.AudioSharingInteractor; import com.android.systemui.volume.domain.interactor.FakeAudioSharingInteractor; import com.android.systemui.volume.shared.VolumeLogger; import kotlinx.coroutines.test.TestScope; import org.junit.Before; import org.junit.Test; Loading Loading @@ -94,6 +98,9 @@ public class VolumeDialogControllerImplTest extends SysuiTestCase { private RingerModeLiveData mRingerModeInternalLiveData; private final FakeThreadFactory mThreadFactory = new FakeThreadFactory( new FakeExecutor(new FakeSystemClock())); private final TestScope mTestScope = TestScopeProvider.getTestScope(); private final JavaAdapter mJavaAdapter = new JavaAdapter(mTestScope); private FakeAudioSharingInteractor mFakeAudioSharingInteractor; @Mock private AudioManager mAudioManager; @Mock Loading @@ -117,9 +124,7 @@ public class VolumeDialogControllerImplTest extends SysuiTestCase { @Mock private DumpManager mDumpManager; @Mock private AudioSharingInteractor mAudioSharingInteractor; @Mock private JavaAdapter mJavaAdapter; private VolumeLogger mVolumeLogger; @Before Loading @@ -136,6 +141,8 @@ public class VolumeDialogControllerImplTest extends SysuiTestCase { mCallback = mock(VolumeDialogControllerImpl.C.class); mThreadFactory.setLooper(TestableLooper.get(this).getLooper()); mFakeAudioSharingInteractor = spy(new FakeAudioSharingInteractor()); mFakeAudioSharingInteractor.setAudioSharingVolumeBarAvailable(true); mVolumeController = new TestableVolumeDialogControllerImpl( mContext, Loading @@ -155,8 +162,9 @@ public class VolumeDialogControllerImplTest extends SysuiTestCase { mUserTracker, mDumpManager, mCallback, mAudioSharingInteractor, mJavaAdapter); mFakeAudioSharingInteractor, mJavaAdapter, mVolumeLogger); mVolumeController.setEnableDialogs(true, true); } Loading Loading @@ -305,13 +313,13 @@ public class VolumeDialogControllerImplTest extends SysuiTestCase { } @Test @EnableFlags(Flags.FLAG_VOLUME_DIALOG_AUDIO_SHARING_FIX) public void testSetStreamVolume_setSecondaryDeviceVolume() { mVolumeController.setStreamVolume( VolumeDialogControllerImpl.DYNAMIC_STREAM_BROADCAST, /* level= */ 100); Objects.requireNonNull(TestableLooper.get(this)).processAllMessages(); mTestScope.getTestScheduler().advanceUntilIdle(); verify(mAudioSharingInteractor).setStreamVolume(100); verify(mFakeAudioSharingInteractor).setStreamVolume(100); } static class TestableVolumeDialogControllerImpl extends VolumeDialogControllerImpl { Loading @@ -336,7 +344,8 @@ public class VolumeDialogControllerImplTest extends SysuiTestCase { DumpManager dumpManager, C callback, AudioSharingInteractor audioSharingInteractor, JavaAdapter javaAdapter) { JavaAdapter javaAdapter, VolumeLogger volumeLogger) { super( context, broadcastDispatcher, Loading @@ -355,7 +364,8 @@ public class VolumeDialogControllerImplTest extends SysuiTestCase { userTracker, dumpManager, audioSharingInteractor, javaAdapter); javaAdapter, volumeLogger); mCallbacks = callback; ArgumentCaptor<WakefulnessLifecycle.Observer> observerCaptor = Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/volume/VolumeDialogControllerImplTestKt.kt +11 −2 Original line number Diff line number Diff line Loading @@ -49,9 +49,10 @@ import com.android.systemui.testKosmos import com.android.systemui.util.RingerModeLiveData import com.android.systemui.util.concurrency.FakeExecutor import com.android.systemui.util.concurrency.FakeThreadFactory import com.android.systemui.util.kotlin.JavaAdapter import com.android.systemui.util.time.fakeSystemClock import com.android.systemui.volume.data.repository.audioRepository import com.android.systemui.volume.domain.interactor.audioSharingInteractor import com.android.systemui.volume.domain.interactor.FakeAudioSharingInteractor import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.runCurrent import kotlinx.coroutines.test.runTest Loading @@ -76,6 +77,9 @@ class VolumeDialogControllerImplTestKt : SysuiTestCase() { private val kosmos: Kosmos = testKosmos() private val audioManager: AudioManager = mock {} private val callbacks: VolumeDialogController.Callbacks = mock {} private val javaAdapter: JavaAdapter = JavaAdapter(kosmos.testScope) private val fakeAudioSharingInteractor: FakeAudioSharingInteractor = FakeAudioSharingInteractor() private lateinit var threadFactory: FakeThreadFactory private lateinit var underTest: VolumeDialogControllerImpl Loading @@ -87,6 +91,8 @@ class VolumeDialogControllerImplTestKt : SysuiTestCase() { threadFactory = FakeThreadFactory(FakeExecutor(fakeSystemClock)).apply { setLooper(looper) } broadcastDispatcherContext = testableContext fakeAudioSharingInteractor.setAudioSharingVolumeBarAvailable(true) underTest = VolumeDialogControllerImpl( applicationContext, Loading @@ -108,7 +114,8 @@ class VolumeDialogControllerImplTestKt : SysuiTestCase() { activityManager, mock { on { userContext }.thenReturn(applicationContext) }, dumpManager, audioSharingInteractor, fakeAudioSharingInteractor, javaAdapter, mock {}, ) .apply { Loading @@ -129,6 +136,7 @@ class VolumeDialogControllerImplTestKt : SysuiTestCase() { }, ) testableLooper.processAllMessages() testScheduler.advanceUntilIdle() verify(callbacks) { 1 * { onStateChanged(any()) } } } Loading Loading @@ -163,6 +171,7 @@ class VolumeDialogControllerImplTestKt : SysuiTestCase() { emitVolumeChange(AudioManager.STREAM_SYSTEM, AudioManager.FLAG_SHOW_UI) runCurrent() TestableLooper.get(this@VolumeDialogControllerImplTestKt).processAllMessages() testScheduler.advanceUntilIdle() verify(callbacks) { 1 * { onShowRequested(any(), any(), any()) } } } Loading