Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ae1f3b4f authored by Yiyi Shen's avatar Yiyi Shen Committed by Android (Google) Code Review
Browse files

Merge "[Audiosharing] Show broadcast volume bar when preview enabled" into main

parents 1102afa6 94fdea29
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -221,6 +221,7 @@ class AudioSharingRepositoryImpl(
    override suspend fun audioSharingAvailable(): Boolean {
        return withContext(backgroundCoroutineContext) {
            BluetoothUtils.isAudioSharingEnabled()
                    || BluetoothUtils.isAudioSharingPreviewEnabled(contentResolver)
        }
    }

+2 −0
Original line number Diff line number Diff line
@@ -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
+4 −0
Original line number Diff line number Diff line
@@ -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
+21 −11
Original line number Diff line number Diff line
@@ -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;
@@ -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;
@@ -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;
@@ -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
@@ -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
@@ -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,
@@ -155,8 +162,9 @@ public class VolumeDialogControllerImplTest extends SysuiTestCase {
                        mUserTracker,
                        mDumpManager,
                        mCallback,
                        mAudioSharingInteractor,
                        mJavaAdapter);
                        mFakeAudioSharingInteractor,
                        mJavaAdapter,
                        mVolumeLogger);
        mVolumeController.setEnableDialogs(true, true);
    }

@@ -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 {
@@ -336,7 +344,8 @@ public class VolumeDialogControllerImplTest extends SysuiTestCase {
                DumpManager dumpManager,
                C callback,
                AudioSharingInteractor audioSharingInteractor,
                JavaAdapter javaAdapter) {
                JavaAdapter javaAdapter,
                VolumeLogger volumeLogger) {
            super(
                    context,
                    broadcastDispatcher,
@@ -355,7 +364,8 @@ public class VolumeDialogControllerImplTest extends SysuiTestCase {
                    userTracker,
                    dumpManager,
                    audioSharingInteractor,
                    javaAdapter);
                    javaAdapter,
                    volumeLogger);
            mCallbacks = callback;

            ArgumentCaptor<WakefulnessLifecycle.Observer> observerCaptor =
+11 −2
Original line number Diff line number Diff line
@@ -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
@@ -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
@@ -87,6 +91,8 @@ class VolumeDialogControllerImplTestKt : SysuiTestCase() {
            threadFactory =
                FakeThreadFactory(FakeExecutor(fakeSystemClock)).apply { setLooper(looper) }
            broadcastDispatcherContext = testableContext
            fakeAudioSharingInteractor.setAudioSharingVolumeBarAvailable(true)

            underTest =
                VolumeDialogControllerImpl(
                        applicationContext,
@@ -108,7 +114,8 @@ class VolumeDialogControllerImplTestKt : SysuiTestCase() {
                        activityManager,
                        mock { on { userContext }.thenReturn(applicationContext) },
                        dumpManager,
                        audioSharingInteractor,
                        fakeAudioSharingInteractor,
                        javaAdapter,
                        mock {},
                    )
                    .apply {
@@ -129,6 +136,7 @@ class VolumeDialogControllerImplTestKt : SysuiTestCase() {
                    },
                )
                testableLooper.processAllMessages()
                testScheduler.advanceUntilIdle()

                verify(callbacks) { 1 * { onStateChanged(any()) } }
            }
@@ -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