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

Commit e7e7d45d authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Push mMediaDevices and findMediaDevice() down into InfoMediaManager" into main

parents b7b8a8cf 34b4c21a
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);