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

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

Merge "[Output Switcher] Allow subtext and flags on System Route"

parents 78be599d 4fd6ffdc
Loading
Loading
Loading
Loading
+16 −1
Original line number Diff line number Diff line
@@ -15,6 +15,8 @@
 */
package com.android.settingslib.media;

import static com.android.settingslib.media.MediaDevice.SelectionBehavior.SELECTION_BEHAVIOR_TRANSFER;

import android.bluetooth.BluetoothClass;
import android.bluetooth.BluetoothDevice;
import android.content.Context;
@@ -22,6 +24,7 @@ import android.graphics.drawable.Drawable;
import android.media.AudioManager;
import android.media.MediaRoute2Info;
import android.media.MediaRouter2Manager;
import android.media.RouteListingPreference;

import com.android.settingslib.R;
import com.android.settingslib.bluetooth.BluetoothUtils;
@@ -39,7 +42,13 @@ public class BluetoothMediaDevice extends MediaDevice {

    BluetoothMediaDevice(Context context, CachedBluetoothDevice device,
            MediaRouter2Manager routerManager, MediaRoute2Info info, String packageName) {
        super(context, routerManager, info, packageName, null);
        this(context, device, routerManager, info, packageName, null);
    }

    BluetoothMediaDevice(Context context, CachedBluetoothDevice device,
            MediaRouter2Manager routerManager, MediaRoute2Info info, String packageName,
            RouteListingPreference.Item item) {
        super(context, routerManager, info, packageName, item);
        mCachedDevice = device;
        mAudioManager = context.getSystemService(AudioManager.class);
        initDeviceRecord();
@@ -57,6 +66,12 @@ public class BluetoothMediaDevice extends MediaDevice {
                : mContext.getString(R.string.bluetooth_disconnected);
    }

    @Override
    public int getSelectionBehavior() {
        // We don't allow apps to override the selection behavior of system routes.
        return SELECTION_BEHAVIOR_TRANSFER;
    }

    @Override
    public Drawable getIcon() {
        return BluetoothUtils.isAdvancedUntetheredDevice(mCachedDevice.getDevice())
+8 −4
Original line number Diff line number Diff line
@@ -174,11 +174,13 @@ public abstract class InfoMediaManager extends MediaManager {
            MediaRoute2Info route, RouteListingPreference.Item routeListingPreferenceItem);

    @NonNull
    protected abstract PhoneMediaDevice createPhoneMediaDevice(MediaRoute2Info route);
    protected abstract PhoneMediaDevice createPhoneMediaDevice(MediaRoute2Info route,
            RouteListingPreference.Item routeListingPreferenceItem);

    @NonNull
    protected abstract BluetoothMediaDevice createBluetoothMediaDevice(
            MediaRoute2Info route, CachedBluetoothDevice cachedDevice);
            MediaRoute2Info route, CachedBluetoothDevice cachedDevice,
            RouteListingPreference.Item routeListingPreferenceItem);

    protected final void rebuildDeviceList() {
        mMediaDevices.clear();
@@ -593,7 +595,8 @@ public abstract class InfoMediaManager extends MediaManager {
            case TYPE_HDMI:
            case TYPE_WIRED_HEADSET:
            case TYPE_WIRED_HEADPHONES:
                mediaDevice = createPhoneMediaDevice(route);
                mediaDevice = createPhoneMediaDevice(route,
                        mPreferenceItemMap.getOrDefault(route.getId(), null));
                break;
            case TYPE_HEARING_AID:
            case TYPE_BLUETOOTH_A2DP:
@@ -603,7 +606,8 @@ public abstract class InfoMediaManager extends MediaManager {
                final CachedBluetoothDevice cachedDevice =
                        mBluetoothManager.getCachedDeviceManager().findDevice(device);
                if (cachedDevice != null) {
                    mediaDevice = createBluetoothMediaDevice(route, cachedDevice);
                    mediaDevice = createBluetoothMediaDevice(route, cachedDevice,
                            mPreferenceItemMap.getOrDefault(route.getId(), null));
                }
                break;
            case TYPE_REMOTE_AUDIO_VIDEO_RECEIVER:
+8 −4
Original line number Diff line number Diff line
@@ -185,16 +185,20 @@ public class ManagerInfoMediaManager extends InfoMediaManager {

    @Override
    @NonNull
    protected PhoneMediaDevice createPhoneMediaDevice(MediaRoute2Info route) {
        return new PhoneMediaDevice(mContext, mRouterManager, route, mPackageName);
    protected PhoneMediaDevice createPhoneMediaDevice(MediaRoute2Info route,
            RouteListingPreference.Item routeListingPreferenceItem) {
        return new PhoneMediaDevice(mContext, mRouterManager, route, mPackageName,
                routeListingPreferenceItem);
    }

    @Override
    @NonNull
    protected BluetoothMediaDevice createBluetoothMediaDevice(
            MediaRoute2Info route, CachedBluetoothDevice cachedDevice) {
            MediaRoute2Info route, CachedBluetoothDevice cachedDevice,
            RouteListingPreference.Item routeListingPreferenceItem) {
        return new BluetoothMediaDevice(
                mContext, cachedDevice, mRouterManager, route, mPackageName);
                mContext, cachedDevice, mRouterManager, route, mPackageName,
                routeListingPreferenceItem);
    }

    @VisibleForTesting
+15 −1
Original line number Diff line number Diff line
@@ -24,10 +24,13 @@ import static android.media.MediaRoute2Info.TYPE_USB_HEADSET;
import static android.media.MediaRoute2Info.TYPE_WIRED_HEADPHONES;
import static android.media.MediaRoute2Info.TYPE_WIRED_HEADSET;

import static com.android.settingslib.media.MediaDevice.SelectionBehavior.SELECTION_BEHAVIOR_TRANSFER;

import android.content.Context;
import android.graphics.drawable.Drawable;
import android.media.MediaRoute2Info;
import android.media.MediaRouter2Manager;
import android.media.RouteListingPreference;

import androidx.annotation.VisibleForTesting;

@@ -51,7 +54,12 @@ public class PhoneMediaDevice extends MediaDevice {

    PhoneMediaDevice(Context context, MediaRouter2Manager routerManager, MediaRoute2Info info,
            String packageName) {
        super(context, routerManager, info, packageName, null);
        this(context, routerManager, info, packageName, null);
    }

    PhoneMediaDevice(Context context, MediaRouter2Manager routerManager, MediaRoute2Info info,
            String packageName, RouteListingPreference.Item item) {
        super(context, routerManager, info, packageName, item);
        mDeviceIconUtil = new DeviceIconUtil();
        initDeviceRecord();
    }
@@ -85,6 +93,12 @@ public class PhoneMediaDevice extends MediaDevice {
        return name.toString();
    }

    @Override
    public int getSelectionBehavior() {
        // We don't allow apps to override the selection behavior of system routes.
        return SELECTION_BEHAVIOR_TRANSFER;
    }

    @Override
    public String getSummary() {
        return mSummary;
+23 −0
Original line number Diff line number Diff line
@@ -19,6 +19,9 @@ import static android.media.MediaRoute2Info.TYPE_BLUETOOTH_A2DP;
import static android.media.MediaRoute2Info.TYPE_BUILTIN_SPEAKER;
import static android.media.MediaRoute2Info.TYPE_REMOTE_SPEAKER;
import static android.media.MediaRoute2Info.TYPE_WIRED_HEADPHONES;
import static android.media.RouteListingPreference.Item.SELECTION_BEHAVIOR_GO_TO_APP;

import static com.android.settingslib.media.MediaDevice.SelectionBehavior.SELECTION_BEHAVIOR_TRANSFER;

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

@@ -32,6 +35,7 @@ import android.content.Context;
import android.media.MediaRoute2Info;
import android.media.MediaRouter2Manager;
import android.media.NearbyDevice;
import android.media.RouteListingPreference;
import android.os.Parcel;

import com.android.settingslib.bluetooth.A2dpProfile;
@@ -110,6 +114,8 @@ public class MediaDeviceTest {
    @Mock
    private MediaRouter2Manager mMediaRouter2Manager;

    private RouteListingPreference.Item mItem;

    private BluetoothMediaDevice mBluetoothMediaDevice1;
    private BluetoothMediaDevice mBluetoothMediaDevice2;
    private BluetoothMediaDevice mBluetoothMediaDevice3;
@@ -497,4 +503,21 @@ public class MediaDeviceTest {

        assertThat(mBluetoothMediaDevice1.getFeatures().size()).isEqualTo(0);
    }

    @Test
    public void getSelectionBehavior_setItemWithSelectionBehaviorOnSystemRoute_returnTransfer() {
        mItem = new RouteListingPreference.Item.Builder(DEVICE_ADDRESS_1)
                .setSelectionBehavior(SELECTION_BEHAVIOR_GO_TO_APP)
                .build();
        mBluetoothMediaDevice1 = new BluetoothMediaDevice(mContext, mCachedDevice1,
                mMediaRouter2Manager, null /* MediaRoute2Info */, TEST_PACKAGE_NAME, mItem);
        mPhoneMediaDevice =
                new PhoneMediaDevice(mContext, mMediaRouter2Manager, mPhoneRouteInfo,
                        TEST_PACKAGE_NAME, mItem);

        assertThat(mBluetoothMediaDevice1.getSelectionBehavior()).isEqualTo(
                SELECTION_BEHAVIOR_TRANSFER);
        assertThat(mPhoneMediaDevice.getSelectionBehavior()).isEqualTo(
                SELECTION_BEHAVIOR_TRANSFER);
    }
}