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

Commit a5f9ef59 authored by Sungsoo Lim's avatar Sungsoo Lim
Browse files

Ensure switchVolumeDevice() be called

When volumeDeviceSwitched() called after deviceConnected(),
switchVolumeDevice() is not called.
This CL ensures switchVolumeDevice() is called in that case.

Bug: 261887806
Test: atest BluetoothInstrumentationTests:AvrcpVolumeManagerTest
Change-Id: I12eba0e0e8cee84e279d0f51f31cebfa7cba5e9e
parent 081d4fb0
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -272,8 +272,12 @@ class AvrcpVolumeManager extends AudioDeviceCallback {
            return;
        }

        // Wait until AudioManager informs us that the new device is connected
        mCurrentDevice = device;
        if (!mDeviceMap.containsKey(device)) {
            // Wait until AudioManager informs us that the new device is connected
            return;
        }
        switchVolumeDevice(device);
    }

    synchronized void deviceDisconnected(@NonNull BluetoothDevice device) {
+20 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import static com.android.bluetooth.avrcp.AvrcpVolumeManager.AVRCP_MAX_VOL;

import static com.google.common.truth.Truth.assertThat;

import static org.mockito.Mockito.any;
import static org.mockito.Mockito.anyInt;
import static org.mockito.Mockito.eq;
import static org.mockito.Mockito.verify;
@@ -39,6 +40,7 @@ import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;

@SmallTest
@@ -101,4 +103,22 @@ public class AvrcpVolumeManagerTest {
        verify(mAudioManager).setStreamVolume(eq(AudioManager.STREAM_MUSIC),
                eq(TEST_DEVICE_MAX_VOUME), anyInt());
    }

    @Test
    public void switchVolumeDevice() {
        mAvrcpVolumeManager.volumeDeviceSwitched(mRemoteDevice);
        mAvrcpVolumeManager.deviceConnected(mRemoteDevice, true);

        // verify whether switchVolumeDevice is called by checking
        // mAudioManager.setDeviceVolumeBehavior().
        verify(mAudioManager).setDeviceVolumeBehavior(any(), anyInt());

        Mockito.clearInvocations(mAudioManager);
        mAvrcpVolumeManager.deviceDisconnected(mRemoteDevice);
        // verify one more time when deviceConnected event comes first.
        mAvrcpVolumeManager.deviceConnected(mRemoteDevice, true);
        mAvrcpVolumeManager.volumeDeviceSwitched(mRemoteDevice);

        verify(mAudioManager).setDeviceVolumeBehavior(any(), anyInt());
    }
}