Loading packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java +32 −14 Original line number Diff line number Diff line Loading @@ -40,15 +40,16 @@ public class InfoMediaManager extends MediaManager { final Executor mExecutor = Executors.newSingleThreadExecutor(); @VisibleForTesting MediaRouter2Manager mRouterManager; @VisibleForTesting String mPackageName; private String mPackageName; private MediaDevice mCurrentConnectedDevice; public InfoMediaManager(Context context, String packageName, Notification notification) { super(context, notification); mRouterManager = MediaRouter2Manager.getInstance(context); if (packageName != null) { if (!TextUtils.isEmpty(packageName)) { mPackageName = packageName; } } Loading @@ -57,6 +58,7 @@ public class InfoMediaManager extends MediaManager { public void startScan() { mMediaDevices.clear(); mRouterManager.registerCallback(mExecutor, mMediaRouterCallback); refreshDevices(); } @VisibleForTesting Loading @@ -79,11 +81,26 @@ public class InfoMediaManager extends MediaManager { return mCurrentConnectedDevice; } class RouterManagerCallback extends MediaRouter2Manager.Callback { private void refreshDevices() { mMediaDevices.clear(); mCurrentConnectedDevice = null; if (TextUtils.isEmpty(mPackageName)) { buildAllRoutes(); } else { buildAvailableRoutes(); } dispatchDeviceListAdded(); } private void buildAllRoutes() { for (MediaRoute2Info route : mRouterManager.getAllRoutes()) { final MediaDevice device = new InfoMediaDevice(mContext, mRouterManager, route, mPackageName); mMediaDevices.add(device); } } private void buildAvailableRoutes() { for (MediaRoute2Info route : mRouterManager.getAvailableRoutes(mPackageName)) { final MediaDevice device = new InfoMediaDevice(mContext, mRouterManager, route, mPackageName); Loading @@ -92,9 +109,10 @@ public class InfoMediaManager extends MediaManager { } mMediaDevices.add(device); } dispatchDeviceListAdded(); } class RouterManagerCallback extends MediaRouter2Manager.Callback { @Override public void onRoutesAdded(List<MediaRoute2Info> routes) { refreshDevices(); Loading packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java +4 −9 Original line number Diff line number Diff line Loading @@ -18,7 +18,6 @@ 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; Loading Loading @@ -162,11 +161,9 @@ public class LocalMediaManager implements BluetoothCallback { mMediaDevices.clear(); mBluetoothMediaManager.registerCallback(mMediaDeviceCallback); mBluetoothMediaManager.startScan(); if (!TextUtils.isEmpty(mPackageName)) { mInfoMediaManager.registerCallback(mMediaDeviceCallback); mInfoMediaManager.startScan(); } } private void addPhoneDeviceIfNecessary() { // add phone device to list if there have any Bluetooth device and cast device. Loading Loading @@ -208,11 +205,9 @@ public class LocalMediaManager implements BluetoothCallback { public void stopScan() { mBluetoothMediaManager.unregisterCallback(mMediaDeviceCallback); mBluetoothMediaManager.stopScan(); if (!TextUtils.isEmpty(mPackageName)) { mInfoMediaManager.unregisterCallback(mMediaDeviceCallback); mInfoMediaManager.stopScan(); } } /** * Find the MediaDevice through id. Loading packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java +22 −1 Original line number Diff line number Diff line Loading @@ -74,7 +74,7 @@ public class InfoMediaManagerTest { } @Test public void onRouteAdded_shouldAddMediaDevice() { public void onRouteAdded_getAvailableRoutes_shouldAddMediaDevice() { final MediaRoute2Info info = mock(MediaRoute2Info.class); when(info.getId()).thenReturn(TEST_ID); when(info.getClientPackageName()).thenReturn(TEST_PACKAGE_NAME); Loading @@ -94,6 +94,27 @@ public class InfoMediaManagerTest { assertThat(mInfoMediaManager.mMediaDevices).hasSize(routes.size()); } @Test public void onRouteAdded_buildAllRoutes_shouldAddMediaDevice() { final MediaRoute2Info info = mock(MediaRoute2Info.class); when(info.getId()).thenReturn(TEST_ID); when(info.getClientPackageName()).thenReturn(TEST_PACKAGE_NAME); final List<MediaRoute2Info> routes = new ArrayList<>(); routes.add(info); when(mRouterManager.getAllRoutes()).thenReturn(routes); final MediaDevice mediaDevice = mInfoMediaManager.findMediaDevice(TEST_ID); assertThat(mediaDevice).isNull(); mInfoMediaManager.mPackageName = ""; mInfoMediaManager.mMediaRouterCallback.onRoutesAdded(routes); final MediaDevice infoDevice = mInfoMediaManager.mMediaDevices.get(0); assertThat(infoDevice.getId()).isEqualTo(TEST_ID); assertThat(mInfoMediaManager.mMediaDevices).hasSize(routes.size()); } @Test public void onControlCategoriesChanged_samePackageName_shouldAddMediaDevice() { final MediaRoute2Info info = mock(MediaRoute2Info.class); Loading Loading
packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java +32 −14 Original line number Diff line number Diff line Loading @@ -40,15 +40,16 @@ public class InfoMediaManager extends MediaManager { final Executor mExecutor = Executors.newSingleThreadExecutor(); @VisibleForTesting MediaRouter2Manager mRouterManager; @VisibleForTesting String mPackageName; private String mPackageName; private MediaDevice mCurrentConnectedDevice; public InfoMediaManager(Context context, String packageName, Notification notification) { super(context, notification); mRouterManager = MediaRouter2Manager.getInstance(context); if (packageName != null) { if (!TextUtils.isEmpty(packageName)) { mPackageName = packageName; } } Loading @@ -57,6 +58,7 @@ public class InfoMediaManager extends MediaManager { public void startScan() { mMediaDevices.clear(); mRouterManager.registerCallback(mExecutor, mMediaRouterCallback); refreshDevices(); } @VisibleForTesting Loading @@ -79,11 +81,26 @@ public class InfoMediaManager extends MediaManager { return mCurrentConnectedDevice; } class RouterManagerCallback extends MediaRouter2Manager.Callback { private void refreshDevices() { mMediaDevices.clear(); mCurrentConnectedDevice = null; if (TextUtils.isEmpty(mPackageName)) { buildAllRoutes(); } else { buildAvailableRoutes(); } dispatchDeviceListAdded(); } private void buildAllRoutes() { for (MediaRoute2Info route : mRouterManager.getAllRoutes()) { final MediaDevice device = new InfoMediaDevice(mContext, mRouterManager, route, mPackageName); mMediaDevices.add(device); } } private void buildAvailableRoutes() { for (MediaRoute2Info route : mRouterManager.getAvailableRoutes(mPackageName)) { final MediaDevice device = new InfoMediaDevice(mContext, mRouterManager, route, mPackageName); Loading @@ -92,9 +109,10 @@ public class InfoMediaManager extends MediaManager { } mMediaDevices.add(device); } dispatchDeviceListAdded(); } class RouterManagerCallback extends MediaRouter2Manager.Callback { @Override public void onRoutesAdded(List<MediaRoute2Info> routes) { refreshDevices(); Loading
packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java +4 −9 Original line number Diff line number Diff line Loading @@ -18,7 +18,6 @@ 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; Loading Loading @@ -162,11 +161,9 @@ public class LocalMediaManager implements BluetoothCallback { mMediaDevices.clear(); mBluetoothMediaManager.registerCallback(mMediaDeviceCallback); mBluetoothMediaManager.startScan(); if (!TextUtils.isEmpty(mPackageName)) { mInfoMediaManager.registerCallback(mMediaDeviceCallback); mInfoMediaManager.startScan(); } } private void addPhoneDeviceIfNecessary() { // add phone device to list if there have any Bluetooth device and cast device. Loading Loading @@ -208,11 +205,9 @@ public class LocalMediaManager implements BluetoothCallback { public void stopScan() { mBluetoothMediaManager.unregisterCallback(mMediaDeviceCallback); mBluetoothMediaManager.stopScan(); if (!TextUtils.isEmpty(mPackageName)) { mInfoMediaManager.unregisterCallback(mMediaDeviceCallback); mInfoMediaManager.stopScan(); } } /** * Find the MediaDevice through id. Loading
packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java +22 −1 Original line number Diff line number Diff line Loading @@ -74,7 +74,7 @@ public class InfoMediaManagerTest { } @Test public void onRouteAdded_shouldAddMediaDevice() { public void onRouteAdded_getAvailableRoutes_shouldAddMediaDevice() { final MediaRoute2Info info = mock(MediaRoute2Info.class); when(info.getId()).thenReturn(TEST_ID); when(info.getClientPackageName()).thenReturn(TEST_PACKAGE_NAME); Loading @@ -94,6 +94,27 @@ public class InfoMediaManagerTest { assertThat(mInfoMediaManager.mMediaDevices).hasSize(routes.size()); } @Test public void onRouteAdded_buildAllRoutes_shouldAddMediaDevice() { final MediaRoute2Info info = mock(MediaRoute2Info.class); when(info.getId()).thenReturn(TEST_ID); when(info.getClientPackageName()).thenReturn(TEST_PACKAGE_NAME); final List<MediaRoute2Info> routes = new ArrayList<>(); routes.add(info); when(mRouterManager.getAllRoutes()).thenReturn(routes); final MediaDevice mediaDevice = mInfoMediaManager.findMediaDevice(TEST_ID); assertThat(mediaDevice).isNull(); mInfoMediaManager.mPackageName = ""; mInfoMediaManager.mMediaRouterCallback.onRoutesAdded(routes); final MediaDevice infoDevice = mInfoMediaManager.mMediaDevices.get(0); assertThat(infoDevice.getId()).isEqualTo(TEST_ID); assertThat(mInfoMediaManager.mMediaDevices).hasSize(routes.size()); } @Test public void onControlCategoriesChanged_samePackageName_shouldAddMediaDevice() { final MediaRoute2Info info = mock(MediaRoute2Info.class); Loading