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

Commit c1e2fcfd authored by Alex Shabalin's avatar Alex Shabalin
Browse files

Respect CONNECTING device state from the MediaRouter.

This allows the Output Switcher and the Suggested device chip to show
the loading spinner for a device when it's in the active connecting
state.

Fix: 425777190
Flag: EXEMPT bugfix
Test: on a physical device, atest InfoMediaManagerTest
Change-Id: Id990d39784a05aa505811a80b6b32b9d91a5997b
parent ff0e10f2
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@
 */
package com.android.settingslib.media;

import static android.media.MediaRoute2Info.CONNECTION_STATE_CONNECTING;
import static android.media.MediaRoute2Info.TYPE_AUX_LINE;
import static android.media.MediaRoute2Info.TYPE_BLE_HEADSET;
import static android.media.MediaRoute2Info.TYPE_BLUETOOTH_A2DP;
@@ -947,6 +948,8 @@ public abstract class InfoMediaManager {
        if (mediaDevice != null) {
            if (mediaDevice.isSelected()) {
                mediaDevice.setState(STATE_SELECTED);
            } else if (route.getConnectionState() == CONNECTION_STATE_CONNECTING) {
                mediaDevice.setState(STATE_CONNECTING);
            }
            mMediaDevices.add(mediaDevice);
        }
+13 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.settingslib.media;

import static android.media.MediaRoute2Info.CONNECTION_STATE_CONNECTING;
import static android.media.MediaRoute2Info.TYPE_BLE_HEADSET;
import static android.media.MediaRoute2Info.TYPE_BLUETOOTH_A2DP;
import static android.media.MediaRoute2Info.TYPE_BUILTIN_SPEAKER;
@@ -27,6 +28,7 @@ import static android.media.MediaRoute2Info.TYPE_WIRED_HEADSET;
import static android.media.MediaRoute2ProviderService.REASON_NETWORK_ERROR;
import static android.media.MediaRoute2ProviderService.REASON_UNKNOWN_ERROR;

import static com.android.settingslib.media.LocalMediaManager.MediaDeviceState.STATE_CONNECTING;
import static com.android.settingslib.media.LocalMediaManager.MediaDeviceState.STATE_SELECTED;

import static com.google.common.truth.Truth.assertThat;
@@ -896,6 +898,17 @@ public class InfoMediaManagerTest {
        assertThat(mInfoMediaManager.mMediaDevices.get(0) instanceof PhoneMediaDevice).isTrue();
    }

    @Test
    public void addMediaDevice_routeInConnectingState_setsConnectingToDevice() {
        final MediaRoute2Info route2Info = mock(MediaRoute2Info.class);
        when(route2Info.getConnectionState()).thenReturn(CONNECTION_STATE_CONNECTING);
        when(route2Info.getType()).thenReturn(TYPE_REMOTE_SPEAKER);
        when(route2Info.getId()).thenReturn(TEST_ID);
        mInfoMediaManager.addMediaDeviceLocked(route2Info, TEST_SYSTEM_ROUTING_SESSION);

        assertThat(mInfoMediaManager.mMediaDevices.get(0).getState()).isEqualTo(STATE_CONNECTING);
    }

    @Test
    public void addMediaDevice_cachedBluetoothDeviceIsNull_shouldNotAdded() {
        final MediaRoute2Info route2Info = mock(MediaRoute2Info.class);