From e6a4f48ae926c51377127aa769bd3c7100ccebaa Mon Sep 17 00:00:00 2001 From: hughchen Date: Fri, 18 Oct 2019 17:34:15 +0800 Subject: [PATCH] Use new media router2 api to get info media device list 1. Use new media router2 api to get info device list 2. Use new media router2 api to tranfer media to info device Bug: 144535188 Test: make -j50 RunSettingsLibRoboTests Change-Id: I682dc53f659180cdef434b2063668ee0fcd1f9c3 --- .../settingslib/media/InfoMediaDevice.java | 26 ++--- .../settingslib/media/InfoMediaManager.java | 80 +++++++++------ .../settingslib/media/LocalMediaManager.java | 21 +++- .../settingslib/media/MediaDeviceUtils.java | 11 +-- .../media/InfoMediaDeviceTest.java | 98 +++++++++++++++++++ .../media/InfoMediaManagerTest.java | 90 ++++++++--------- .../settingslib/media/MediaDeviceTest.java | 23 +++-- .../media/MediaDeviceUtilsTest.java | 5 +- 8 files changed, 239 insertions(+), 115 deletions(-) create mode 100644 packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaDeviceTest.java diff --git a/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaDevice.java b/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaDevice.java index 732e8dba3e44b..99c7dcf52818a 100644 --- a/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaDevice.java +++ b/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaDevice.java @@ -17,9 +17,8 @@ package com.android.settingslib.media; import android.content.Context; import android.graphics.drawable.Drawable; -import android.widget.Toast; - -import androidx.mediarouter.media.MediaRouter; +import android.media.MediaRoute2Info; +import android.media.MediaRouter2Manager; import com.android.settingslib.R; import com.android.settingslib.bluetooth.BluetoothUtils; @@ -31,22 +30,28 @@ public class InfoMediaDevice extends MediaDevice { private static final String TAG = "InfoMediaDevice"; - private MediaRouter.RouteInfo mRouteInfo; + private final MediaRoute2Info mRouteInfo; + private final MediaRouter2Manager mRouterManager; + private final String mPackageName; - InfoMediaDevice(Context context, MediaRouter.RouteInfo info) { + InfoMediaDevice(Context context, MediaRouter2Manager routerManager, MediaRoute2Info info, + String packageName) { super(context, MediaDeviceType.TYPE_CAST_DEVICE); + mRouterManager = routerManager; mRouteInfo = info; + mPackageName = packageName; initDeviceRecord(); } @Override public String getName() { - return mRouteInfo.getName(); + return mRouteInfo.getName().toString(); } @Override public String getSummary() { - return null; + return mRouteInfo.getClientPackageName() != null + ? mContext.getString(R.string.bluetooth_active_no_battery_level) : null; } @Override @@ -63,15 +68,14 @@ public class InfoMediaDevice extends MediaDevice { @Override public boolean connect() { - //TODO(b/121083246): use SystemApi to transfer media setConnectedRecord(); - Toast.makeText(mContext, "This is cast device !", Toast.LENGTH_SHORT).show(); - return false; + mRouterManager.selectRoute(mPackageName, mRouteInfo); + return true; } @Override public void disconnect() { - //TODO(b/121083246): disconnected last select device + //TODO(b/144535188): disconnected last select device } @Override diff --git a/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java b/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java index bc8e2c35291d3..e008cd038317a 100644 --- a/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java +++ b/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java @@ -17,13 +17,16 @@ package com.android.settingslib.media; import android.app.Notification; import android.content.Context; -import android.util.Log; - -import androidx.mediarouter.media.MediaRouteSelector; -import androidx.mediarouter.media.MediaRouter; +import android.media.MediaRoute2Info; +import android.media.MediaRouter2Manager; +import android.text.TextUtils; import com.android.internal.annotations.VisibleForTesting; +import java.util.List; +import java.util.concurrent.Executor; +import java.util.concurrent.Executors; + /** * InfoMediaManager provide interface to get InfoMediaDevice list. */ @@ -32,62 +35,75 @@ public class InfoMediaManager extends MediaManager { private static final String TAG = "InfoMediaManager"; @VisibleForTesting - final MediaRouterCallback mMediaRouterCallback = new MediaRouterCallback(); + final RouterManagerCallback mMediaRouterCallback = new RouterManagerCallback(); @VisibleForTesting - MediaRouteSelector mSelector; + final Executor mExecutor = Executors.newSingleThreadExecutor(); @VisibleForTesting - MediaRouter mMediaRouter; + MediaRouter2Manager mRouterManager; private String mPackageName; + private MediaDevice mCurrentConnectedDevice; - InfoMediaManager(Context context, String packageName, Notification notification) { + public InfoMediaManager(Context context, String packageName, Notification notification) { super(context, notification); - mMediaRouter = MediaRouter.getInstance(context); - mPackageName = packageName; - mSelector = new MediaRouteSelector.Builder() - .addControlCategory(getControlCategoryByPackageName(mPackageName)) - .build(); + mRouterManager = MediaRouter2Manager.getInstance(context); + if (packageName != null) { + mPackageName = packageName; + } } @Override public void startScan() { mMediaDevices.clear(); - mMediaRouter.addCallback(mSelector, mMediaRouterCallback, - MediaRouter.CALLBACK_FLAG_REQUEST_DISCOVERY); + mRouterManager.registerCallback(mExecutor, mMediaRouterCallback); } @VisibleForTesting String getControlCategoryByPackageName(String packageName) { //TODO(b/117129183): Use package name to get ControlCategory. //Since api not ready, return fixed ControlCategory for prototype. - return "com.google.android.gms.cast.CATEGORY_CAST/4F8B3483"; + return "com.google.android.gms.cast.CATEGORY_CAST"; } @Override public void stopScan() { - mMediaRouter.removeCallback(mMediaRouterCallback); + mRouterManager.unregisterCallback(mMediaRouterCallback); } - class MediaRouterCallback extends MediaRouter.Callback { - @Override - public void onRouteAdded(MediaRouter router, MediaRouter.RouteInfo route) { - MediaDevice mediaDevice = findMediaDevice(MediaDeviceUtils.getId(route)); - if (mediaDevice == null) { - mediaDevice = new InfoMediaDevice(mContext, route); - Log.d(TAG, "onRouteAdded() route : " + route.getName()); - mMediaDevices.add(mediaDevice); - dispatchDeviceAdded(mediaDevice); + /** + * Get current device that played media. + * @return MediaDevice + */ + public MediaDevice getCurrentConnectedDevice() { + return mCurrentConnectedDevice; + } + + class RouterManagerCallback extends MediaRouter2Manager.Callback { + + private void refreshDevices() { + mMediaDevices.clear(); + mCurrentConnectedDevice = null; + for (MediaRoute2Info route : mRouterManager.getAvailableRoutes(mPackageName)) { + final MediaDevice device = new InfoMediaDevice(mContext, mRouterManager, route, + mPackageName); + if (TextUtils.equals(route.getClientPackageName(), mPackageName)) { + mCurrentConnectedDevice = device; + } + mMediaDevices.add(device); } + dispatchDeviceListAdded(); } @Override - public void onRouteRemoved(MediaRouter router, MediaRouter.RouteInfo route) { - final MediaDevice mediaDevice = findMediaDevice(MediaDeviceUtils.getId(route)); - if (mediaDevice != null) { - Log.d(TAG, "onRouteRemoved() route : " + route.getName()); - mMediaDevices.remove(mediaDevice); - dispatchDeviceRemoved(mediaDevice); + public void onRoutesAdded(List routes) { + refreshDevices(); + } + + @Override + public void onControlCategoriesChanged(String packageName, List controlCategories) { + if (TextUtils.equals(mPackageName, packageName)) { + refreshDevices(); } } } diff --git a/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java b/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java index 4e16c66d736ba..5b4ef3a473864 100644 --- a/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java +++ b/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java @@ -18,6 +18,7 @@ package com.android.settingslib.media; import android.app.Notification; import android.bluetooth.BluetoothProfile; import android.content.Context; +import android.text.TextUtils; import android.util.Log; import androidx.annotation.IntDef; @@ -59,6 +60,8 @@ public class LocalMediaManager implements BluetoothCallback { private Context mContext; private BluetoothMediaManager mBluetoothMediaManager; private LocalBluetoothManager mLocalBluetoothManager; + private InfoMediaManager mInfoMediaManager; + private String mPackageName; @VisibleForTesting List mMediaDevices = new ArrayList<>(); @@ -87,6 +90,7 @@ public class LocalMediaManager implements BluetoothCallback { public LocalMediaManager(Context context, String packageName, Notification notification) { mContext = context; + mPackageName = packageName; mLocalBluetoothManager = LocalBluetoothManager.getInstance(context, /* onInitCallback= */ null); if (mLocalBluetoothManager == null) { @@ -96,6 +100,7 @@ public class LocalMediaManager implements BluetoothCallback { mBluetoothMediaManager = new BluetoothMediaManager(context, mLocalBluetoothManager, notification); + mInfoMediaManager = new InfoMediaManager(context, packageName, notification); } @VisibleForTesting @@ -104,6 +109,7 @@ public class LocalMediaManager implements BluetoothCallback { mContext = context; mLocalBluetoothManager = localBluetoothManager; mBluetoothMediaManager = bluetoothMediaManager; + mInfoMediaManager = infoMediaManager; } /** @@ -126,8 +132,7 @@ public class LocalMediaManager implements BluetoothCallback { return; } - //TODO(b/121083246): Update it once remote media API is ready. - if (mCurrentConnectedDevice != null && !(connectDevice instanceof InfoMediaDevice)) { + if (mCurrentConnectedDevice != null) { mCurrentConnectedDevice.disconnect(); } @@ -157,6 +162,10 @@ public class LocalMediaManager implements BluetoothCallback { mMediaDevices.clear(); mBluetoothMediaManager.registerCallback(mMediaDeviceCallback); mBluetoothMediaManager.startScan(); + if (!TextUtils.isEmpty(mPackageName)) { + mInfoMediaManager.registerCallback(mMediaDeviceCallback); + mInfoMediaManager.startScan(); + } } private void addPhoneDeviceIfNecessary() { @@ -191,6 +200,10 @@ public class LocalMediaManager implements BluetoothCallback { public void stopScan() { mBluetoothMediaManager.unregisterCallback(mMediaDeviceCallback); mBluetoothMediaManager.stopScan(); + if (!TextUtils.isEmpty(mPackageName)) { + mInfoMediaManager.unregisterCallback(mMediaDeviceCallback); + mInfoMediaManager.stopScan(); + } } /** @@ -253,7 +266,9 @@ public class LocalMediaManager implements BluetoothCallback { } } addPhoneDeviceIfNecessary(); - mCurrentConnectedDevice = updateCurrentConnectedDevice(); + final MediaDevice infoMediaDevice = mInfoMediaManager.getCurrentConnectedDevice(); + mCurrentConnectedDevice = infoMediaDevice != null + ? infoMediaDevice : updateCurrentConnectedDevice(); updatePhoneMediaDeviceSummary(); dispatchDeviceListUpdate(); } diff --git a/packages/SettingsLib/src/com/android/settingslib/media/MediaDeviceUtils.java b/packages/SettingsLib/src/com/android/settingslib/media/MediaDeviceUtils.java index 4b8e706c0d0ca..df6929e114eea 100644 --- a/packages/SettingsLib/src/com/android/settingslib/media/MediaDeviceUtils.java +++ b/packages/SettingsLib/src/com/android/settingslib/media/MediaDeviceUtils.java @@ -16,8 +16,7 @@ package com.android.settingslib.media; import android.bluetooth.BluetoothDevice; - -import androidx.mediarouter.media.MediaRouter; +import android.media.MediaRoute2Info; import com.android.settingslib.bluetooth.CachedBluetoothDevice; @@ -49,12 +48,12 @@ public class MediaDeviceUtils { } /** - * Use RouteInfo id to represent unique id + * Use MediaRoute2Info id to represent unique id * - * @param route the RouteInfo - * @return RouteInfo id + * @param route the MediaRoute2Info + * @return MediaRoute2Info id */ - public static String getId(MediaRouter.RouteInfo route) { + public static String getId(MediaRoute2Info route) { return route.getId(); } } diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaDeviceTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaDeviceTest.java new file mode 100644 index 0000000000000..c9db0d13a7e7e --- /dev/null +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaDeviceTest.java @@ -0,0 +1,98 @@ +/* + * Copyright 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.settingslib.media; + +import static com.google.common.truth.Truth.assertThat; + +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import android.content.Context; +import android.media.MediaRoute2Info; +import android.media.MediaRouter2Manager; + +import com.android.settingslib.R; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.robolectric.RobolectricTestRunner; +import org.robolectric.RuntimeEnvironment; + +@RunWith(RobolectricTestRunner.class) +public class InfoMediaDeviceTest { + + private static final String TEST_PACKAGE_NAME = "com.test.packagename"; + private static final String TEST_ID = "test_id"; + private static final String TEST_NAME = "test_name"; + + @Mock + private MediaRouter2Manager mRouterManager; + @Mock + private MediaRoute2Info mRouteInfo; + + + private Context mContext; + private InfoMediaDevice mInfoMediaDevice; + + @Before + public void setUp() { + MockitoAnnotations.initMocks(this); + mContext = RuntimeEnvironment.application; + + mInfoMediaDevice = new InfoMediaDevice(mContext, mRouterManager, mRouteInfo, + TEST_PACKAGE_NAME); + } + + @Test + public void getName_shouldReturnName() { + when(mRouteInfo.getName()).thenReturn(TEST_NAME); + + assertThat(mInfoMediaDevice.getName()).isEqualTo(TEST_NAME); + } + + @Test + public void getSummary_clientPackageNameIsNull_returnNull() { + when(mRouteInfo.getClientPackageName()).thenReturn(null); + + assertThat(mInfoMediaDevice.getSummary()).isEqualTo(null); + } + + @Test + public void getSummary_clientPackageNameIsNotNull_returnActive() { + when(mRouteInfo.getClientPackageName()).thenReturn(TEST_PACKAGE_NAME); + + assertThat(mInfoMediaDevice.getSummary()) + .isEqualTo(mContext.getString(R.string.bluetooth_active_no_battery_level)); + } + + @Test + public void getId_shouldReturnId() { + when(mRouteInfo.getId()).thenReturn(TEST_ID); + + assertThat(mInfoMediaDevice.getId()).isEqualTo(TEST_ID); + } + + @Test + public void connect_shouldSelectRoute() { + mInfoMediaDevice.connect(); + + verify(mRouterManager).selectRoute(TEST_PACKAGE_NAME, mRouteInfo); + } +} diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java index b11cf69b04f46..67f6dd9038411 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java @@ -23,9 +23,8 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.content.Context; - -import androidx.mediarouter.media.MediaRouteSelector; -import androidx.mediarouter.media.MediaRouter; +import android.media.MediaRoute2Info; +import android.media.MediaRouter2Manager; import org.junit.Before; import org.junit.Test; @@ -35,6 +34,9 @@ import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; +import java.util.ArrayList; +import java.util.List; + @RunWith(RobolectricTestRunner.class) public class InfoMediaManagerTest { @@ -42,9 +44,7 @@ public class InfoMediaManagerTest { private static final String TEST_ID = "test_id"; @Mock - private MediaRouter mMediaRouter; - @Mock - private MediaRouteSelector mSelector; + private MediaRouter2Manager mRouterManager; private InfoMediaManager mInfoMediaManager; private Context mContext; @@ -55,82 +55,70 @@ public class InfoMediaManagerTest { mContext = RuntimeEnvironment.application; mInfoMediaManager = new InfoMediaManager(mContext, TEST_PACKAGE_NAME, null); - mInfoMediaManager.mMediaRouter = mMediaRouter; - mInfoMediaManager.mSelector = mSelector; + mInfoMediaManager.mRouterManager = mRouterManager; } @Test public void stopScan_shouldRemoveCallback() { mInfoMediaManager.stopScan(); - verify(mMediaRouter).removeCallback(mInfoMediaManager.mMediaRouterCallback); + verify(mRouterManager).unregisterCallback(mInfoMediaManager.mMediaRouterCallback); } @Test public void startScan_shouldAddCallback() { mInfoMediaManager.startScan(); - verify(mMediaRouter).addCallback(mSelector, mInfoMediaManager.mMediaRouterCallback, - MediaRouter.CALLBACK_FLAG_REQUEST_DISCOVERY); + verify(mRouterManager).registerCallback(mInfoMediaManager.mExecutor, + mInfoMediaManager.mMediaRouterCallback); } @Test - public void onRouteAdded_mediaDeviceNotExistInList_addMediaDevice() { - final MediaRouter.RouteInfo info = mock(MediaRouter.RouteInfo.class); + public void onRouteAdded_shouldAddMediaDevice() { + final MediaRoute2Info info = mock(MediaRoute2Info.class); when(info.getId()).thenReturn(TEST_ID); + when(info.getClientPackageName()).thenReturn(TEST_PACKAGE_NAME); + + final List routes = new ArrayList<>(); + routes.add(info); + when(mRouterManager.getAvailableRoutes(TEST_PACKAGE_NAME)).thenReturn(routes); final MediaDevice mediaDevice = mInfoMediaManager.findMediaDevice(TEST_ID); assertThat(mediaDevice).isNull(); - mInfoMediaManager.mMediaRouterCallback.onRouteAdded(mMediaRouter, info); + mInfoMediaManager.mMediaRouterCallback.onRoutesAdded(routes); final MediaDevice infoDevice = mInfoMediaManager.mMediaDevices.get(0); assertThat(infoDevice.getId()).isEqualTo(TEST_ID); + assertThat(mInfoMediaManager.getCurrentConnectedDevice()).isEqualTo(infoDevice); + assertThat(mInfoMediaManager.mMediaDevices).hasSize(routes.size()); } @Test - public void onRouteAdded_mediaDeviceExistInList_doNothing() { - final MediaRouter.RouteInfo info = mock(MediaRouter.RouteInfo.class); + public void onControlCategoriesChanged_samePackageName_shouldAddMediaDevice() { + final MediaRoute2Info info = mock(MediaRoute2Info.class); when(info.getId()).thenReturn(TEST_ID); - final InfoMediaDevice infoDevice = new InfoMediaDevice(mContext, info); - mInfoMediaManager.mMediaDevices.add(infoDevice); + when(info.getClientPackageName()).thenReturn(TEST_PACKAGE_NAME); + + final List routes = new ArrayList<>(); + routes.add(info); + when(mRouterManager.getAvailableRoutes(TEST_PACKAGE_NAME)).thenReturn(routes); final MediaDevice mediaDevice = mInfoMediaManager.findMediaDevice(TEST_ID); - final int size = mInfoMediaManager.mMediaDevices.size(); - assertThat(mediaDevice).isNotNull(); - - mInfoMediaManager.mMediaRouterCallback.onRouteAdded(mMediaRouter, info); - - assertThat(mInfoMediaManager.mMediaDevices).hasSize(size); - } - - @Test - public void onRouteRemoved_mediaDeviceExistInList_removeMediaDevice() { - final MediaRouter.RouteInfo info = mock(MediaRouter.RouteInfo.class); - when(info.getId()).thenReturn(TEST_ID); - final InfoMediaDevice infoDevice = new InfoMediaDevice(mContext, info); - mInfoMediaManager.mMediaDevices.add(infoDevice); - - final MediaDevice mediaDevice = mInfoMediaManager.findMediaDevice(TEST_ID); - assertThat(mediaDevice).isNotNull(); - assertThat(mInfoMediaManager.mMediaDevices).hasSize(1); - - mInfoMediaManager.mMediaRouterCallback.onRouteRemoved(mMediaRouter, info); - - assertThat(mInfoMediaManager.mMediaDevices).isEmpty(); - } - - @Test - public void onRouteRemoved_mediaDeviceNotExistInList_doNothing() { - final MediaRouter.RouteInfo info = mock(MediaRouter.RouteInfo.class); - when(info.getId()).thenReturn(TEST_ID); - - final MediaDevice mediaDevice = mInfoMediaManager.findMediaDevice(TEST_ID); - final int size = mInfoMediaManager.mMediaDevices.size(); assertThat(mediaDevice).isNull(); - mInfoMediaManager.mMediaRouterCallback.onRouteRemoved(mMediaRouter, info); + mInfoMediaManager.mMediaRouterCallback.onControlCategoriesChanged(TEST_PACKAGE_NAME, null); - assertThat(mInfoMediaManager.mMediaDevices).hasSize(size); + final MediaDevice infoDevice = mInfoMediaManager.mMediaDevices.get(0); + assertThat(infoDevice.getId()).isEqualTo(TEST_ID); + assertThat(mInfoMediaManager.getCurrentConnectedDevice()).isEqualTo(infoDevice); + assertThat(mInfoMediaManager.mMediaDevices).hasSize(routes.size()); + } + + @Test + public void onControlCategoriesChanged_differentPackageName_doNothing() { + mInfoMediaManager.mMediaRouterCallback.onControlCategoriesChanged("com.fake.play", null); + + assertThat(mInfoMediaManager.mMediaDevices).hasSize(0); } } diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/MediaDeviceTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/MediaDeviceTest.java index 23d2c74218cc4..02cb83e0281a1 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/MediaDeviceTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/MediaDeviceTest.java @@ -22,8 +22,8 @@ import static org.mockito.Mockito.when; import android.bluetooth.BluetoothClass; import android.bluetooth.BluetoothDevice; import android.content.Context; - -import androidx.mediarouter.media.MediaRouter; +import android.media.MediaRoute2Info; +import android.media.MediaRouter2Manager; import com.android.settingslib.bluetooth.A2dpProfile; import com.android.settingslib.bluetooth.CachedBluetoothDevice; @@ -56,6 +56,7 @@ public class MediaDeviceTest { private static final String ROUTER_ID_1 = "RouterId_1"; private static final String ROUTER_ID_2 = "RouterId_2"; private static final String ROUTER_ID_3 = "RouterId_3"; + private static final String TEST_PACKAGE_NAME = "com.test.playmusic"; private final BluetoothClass mHeadreeClass = new BluetoothClass(BluetoothClass.Device.AUDIO_VIDEO_HEADPHONES); private final BluetoothClass mCarkitClass = @@ -76,11 +77,11 @@ public class MediaDeviceTest { @Mock private LocalBluetoothManager mLocalBluetoothManager; @Mock - private MediaRouter.RouteInfo mRouteInfo1; + private MediaRoute2Info mRouteInfo1; @Mock - private MediaRouter.RouteInfo mRouteInfo2; + private MediaRoute2Info mRouteInfo2; @Mock - private MediaRouter.RouteInfo mRouteInfo3; + private MediaRoute2Info mRouteInfo3; @Mock private LocalBluetoothProfileManager mProfileManager; @Mock @@ -99,6 +100,7 @@ public class MediaDeviceTest { private InfoMediaDevice mInfoMediaDevice3; private List mMediaDevices = new ArrayList<>(); private PhoneMediaDevice mPhoneMediaDevice; + private MediaRouter2Manager mMediaRouter2Manager; @Before public void setUp() { @@ -134,9 +136,13 @@ public class MediaDeviceTest { mBluetoothMediaDevice1 = new BluetoothMediaDevice(mContext, mCachedDevice1); mBluetoothMediaDevice2 = new BluetoothMediaDevice(mContext, mCachedDevice2); mBluetoothMediaDevice3 = new BluetoothMediaDevice(mContext, mCachedDevice3); - mInfoMediaDevice1 = new InfoMediaDevice(mContext, mRouteInfo1); - mInfoMediaDevice2 = new InfoMediaDevice(mContext, mRouteInfo2); - mInfoMediaDevice3 = new InfoMediaDevice(mContext, mRouteInfo3); + mMediaRouter2Manager = MediaRouter2Manager.getInstance(mContext); + mInfoMediaDevice1 = new InfoMediaDevice(mContext, mMediaRouter2Manager, mRouteInfo1, + TEST_PACKAGE_NAME); + mInfoMediaDevice2 = new InfoMediaDevice(mContext, mMediaRouter2Manager, mRouteInfo2, + TEST_PACKAGE_NAME); + mInfoMediaDevice3 = new InfoMediaDevice(mContext, mMediaRouter2Manager, mRouteInfo3, + TEST_PACKAGE_NAME); mPhoneMediaDevice = new PhoneMediaDevice(mContext, mLocalBluetoothManager); } @@ -364,5 +370,4 @@ public class MediaDeviceTest { assertThat(mMediaDevices.get(5)).isEqualTo(mBluetoothMediaDevice1); assertThat(mMediaDevices.get(6)).isEqualTo(mBluetoothMediaDevice2); } - } diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/MediaDeviceUtilsTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/MediaDeviceUtilsTest.java index 1e5545f8539fb..30a6ad2576dbf 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/MediaDeviceUtilsTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/MediaDeviceUtilsTest.java @@ -21,8 +21,7 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.when; import android.bluetooth.BluetoothDevice; - -import androidx.mediarouter.media.MediaRouter; +import android.media.MediaRoute2Info; import com.android.settingslib.bluetooth.CachedBluetoothDevice; @@ -44,7 +43,7 @@ public class MediaDeviceUtilsTest { @Mock private BluetoothDevice mBluetoothDevice; @Mock - private MediaRouter.RouteInfo mRouteInfo; + private MediaRoute2Info mRouteInfo; @Before public void setUp() {