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

Commit 34b4c21a authored by Iván Budnik's avatar Iván Budnik
Browse files

Push mMediaDevices and findMediaDevice() down into InfoMediaManager

This is a non-functional change.

Bug: 327195340
Test: atest com.android.settingslib.media
Change-Id: I0eb97bb459ea1984e35e719fc27c207eadbc5f1a
parent 45444c9f
Loading
Loading
Loading
Loading
+13 −1
Original line number Diff line number Diff line
@@ -74,6 +74,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@@ -84,6 +85,7 @@ public abstract class InfoMediaManager extends MediaManager {

    private static final String TAG = "InfoMediaManager";
    private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
    protected final List<MediaDevice> mMediaDevices = new CopyOnWriteArrayList<>();

    /** Checked exception that signals the specified package is not present in the system. */
    public static class PackageNotAvailableException extends Exception {
@@ -227,6 +229,16 @@ public abstract class InfoMediaManager extends MediaManager {
        Api34Impl.onRouteListingPreferenceUpdated(routeListingPreference, mPreferenceItemMap);
    }

    protected final MediaDevice findMediaDevice(@NonNull String id) {
        for (MediaDevice mediaDevice : mMediaDevices) {
            if (mediaDevice.getId().equals(id)) {
                return mediaDevice;
            }
        }
        Log.e(TAG, "findMediaDevice() can't find device with id: " + id);
        return null;
    }

    /**
     * Get current device that played media.
     * @return MediaDevice
@@ -433,7 +445,7 @@ public abstract class InfoMediaManager extends MediaManager {

    protected final synchronized void refreshDevices() {
        rebuildDeviceList();
        dispatchDeviceListAdded();
        dispatchDeviceListAdded(mMediaDevices);
    }

    // MediaRoute2Info.getType was made public on API 34, but exists since API 30.
+3 −16
Original line number Diff line number Diff line
@@ -15,9 +15,9 @@
 */
package com.android.settingslib.media;

import android.annotation.NonNull;
import android.app.Notification;
import android.content.Context;
import android.util.Log;

import java.util.ArrayList;
import java.util.Collection;
@@ -29,10 +29,7 @@ import java.util.concurrent.CopyOnWriteArrayList;
 */
public abstract class MediaManager {

    private static final String TAG = "MediaManager";

    protected final Collection<MediaDeviceCallback> mCallbacks = new CopyOnWriteArrayList<>();
    protected final List<MediaDevice> mMediaDevices = new CopyOnWriteArrayList<>();

    protected Context mContext;
    protected Notification mNotification;
@@ -54,19 +51,9 @@ public abstract class MediaManager {
        }
    }

    protected MediaDevice findMediaDevice(String id) {
        for (MediaDevice mediaDevice : mMediaDevices) {
            if (mediaDevice.getId().equals(id)) {
                return mediaDevice;
            }
        }
        Log.e(TAG, "findMediaDevice() can't found device");
        return null;
    }

    protected void dispatchDeviceListAdded() {
    protected void dispatchDeviceListAdded(@NonNull List<MediaDevice> devices) {
        for (MediaDeviceCallback callback : getCallbacks()) {
            callback.onDeviceListAdded(new ArrayList<>(mMediaDevices));
            callback.onDeviceListAdded(new ArrayList<>(devices));
        }
    }

+5 −22
Original line number Diff line number Diff line
@@ -16,7 +16,6 @@

package com.android.settingslib.media;

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

import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.verify;
@@ -32,6 +31,8 @@ import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;

import java.util.Collections;

@RunWith(RobolectricTestRunner.class)
public class MediaManagerTest {

@@ -59,7 +60,7 @@ public class MediaManagerTest {
    public void dispatchDeviceListAdded_registerCallback_shouldDispatchCallback() {
        mMediaManager.registerCallback(mCallback);

        mMediaManager.dispatchDeviceListAdded();
        mMediaManager.dispatchDeviceListAdded(Collections.emptyList());

        verify(mCallback).onDeviceListAdded(any());
    }
@@ -68,9 +69,9 @@ public class MediaManagerTest {
    public void dispatchDeviceListRemoved_registerCallback_shouldDispatchCallback() {
        mMediaManager.registerCallback(mCallback);

        mMediaManager.dispatchDeviceListRemoved(mMediaManager.mMediaDevices);
        mMediaManager.dispatchDeviceListRemoved(Collections.emptyList());

        verify(mCallback).onDeviceListRemoved(mMediaManager.mMediaDevices);
        verify(mCallback).onDeviceListRemoved(Collections.emptyList());
    }

    @Test
@@ -82,24 +83,6 @@ public class MediaManagerTest {
        verify(mCallback).onConnectedDeviceChanged(TEST_ID);
    }

    @Test
    public void findMediaDevice_idExist_shouldReturnMediaDevice() {
        mMediaManager.mMediaDevices.add(mDevice);

        final MediaDevice device = mMediaManager.findMediaDevice(TEST_ID);

        assertThat(device.getId()).isEqualTo(mDevice.getId());
    }

    @Test
    public void findMediaDevice_idNotExist_shouldReturnNull() {
        mMediaManager.mMediaDevices.add(mDevice);

        final MediaDevice device = mMediaManager.findMediaDevice("123");

        assertThat(device).isNull();
    }

    @Test
    public void dispatchOnRequestFailed_registerCallback_shouldDispatchCallback() {
        mMediaManager.registerCallback(mCallback);