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

Commit c582a72f authored by Iván Budnik's avatar Iván Budnik Committed by Android (Google) Code Review
Browse files

Merge "Use Consumer for RouteListingPreference callback instead of SAM" into main

parents daf42757 d8f84891
Loading
Loading
Loading
Loading
+2 −7
Original line number Diff line number Diff line
@@ -23988,7 +23988,7 @@ package android.media {
    method @NonNull public android.media.MediaRouter2.RoutingController getSystemController();
    method public void registerControllerCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaRouter2.ControllerCallback);
    method public void registerRouteCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaRouter2.RouteCallback, @NonNull android.media.RouteDiscoveryPreference);
    method @FlaggedApi("com.android.media.flags.enable_rlp_callbacks_in_media_router2") public void registerRouteListingPreferenceCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaRouter2.RouteListingPreferenceCallback);
    method @FlaggedApi("com.android.media.flags.enable_rlp_callbacks_in_media_router2") public void registerRouteListingPreferenceUpdatedCallback(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.media.RouteListingPreference>);
    method public void registerTransferCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaRouter2.TransferCallback);
    method public void setOnGetControllerHintsListener(@Nullable android.media.MediaRouter2.OnGetControllerHintsListener);
    method public void setRouteListingPreference(@Nullable android.media.RouteListingPreference);
@@ -23997,7 +23997,7 @@ package android.media {
    method public void transferTo(@NonNull android.media.MediaRoute2Info);
    method public void unregisterControllerCallback(@NonNull android.media.MediaRouter2.ControllerCallback);
    method public void unregisterRouteCallback(@NonNull android.media.MediaRouter2.RouteCallback);
    method @FlaggedApi("com.android.media.flags.enable_rlp_callbacks_in_media_router2") public void unregisterRouteListingPreferenceCallback(@NonNull android.media.MediaRouter2.RouteListingPreferenceCallback);
    method @FlaggedApi("com.android.media.flags.enable_rlp_callbacks_in_media_router2") public void unregisterRouteListingPreferenceUpdatedCallback(@NonNull java.util.function.Consumer<android.media.RouteListingPreference>);
    method public void unregisterTransferCallback(@NonNull android.media.MediaRouter2.TransferCallback);
  }
@@ -24018,11 +24018,6 @@ package android.media {
    method public void onRoutesUpdated(@NonNull java.util.List<android.media.MediaRoute2Info>);
  }
  @FlaggedApi("com.android.media.flags.enable_rlp_callbacks_in_media_router2") public abstract static class MediaRouter2.RouteListingPreferenceCallback {
    ctor @FlaggedApi("com.android.media.flags.enable_rlp_callbacks_in_media_router2") public MediaRouter2.RouteListingPreferenceCallback();
    method @FlaggedApi("com.android.media.flags.enable_rlp_callbacks_in_media_router2") public void onRouteListingPreferenceChanged(@Nullable android.media.RouteListingPreference);
  }
  public class MediaRouter2.RoutingController {
    method public void deselectRoute(@NonNull android.media.MediaRoute2Info);
    method @Nullable public android.os.Bundle getControlHints();
+14 −26
Original line number Diff line number Diff line
@@ -52,6 +52,7 @@ import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.Executor;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Consumer;
import java.util.stream.Collectors;

/**
@@ -383,9 +384,9 @@ public final class MediaRouter2 {
     * @see #setRouteListingPreference(RouteListingPreference)
     */
    @FlaggedApi(FLAG_ENABLE_RLP_CALLBACKS_IN_MEDIA_ROUTER2)
    public void registerRouteListingPreferenceCallback(
    public void registerRouteListingPreferenceUpdatedCallback(
            @NonNull @CallbackExecutor Executor executor,
            @NonNull RouteListingPreferenceCallback routeListingPreferenceCallback) {
            @NonNull Consumer<RouteListingPreference> routeListingPreferenceCallback) {
        Objects.requireNonNull(executor, "executor must not be null");
        Objects.requireNonNull(routeListingPreferenceCallback, "callback must not be null");

@@ -398,15 +399,20 @@ public final class MediaRouter2 {

    /**
     * Unregisters the given callback to not receive {@link RouteListingPreference} change events.
     *
     * @see #registerRouteListingPreferenceUpdatedCallback(Executor, Consumer)
     */
    @FlaggedApi(FLAG_ENABLE_RLP_CALLBACKS_IN_MEDIA_ROUTER2)
    public void unregisterRouteListingPreferenceCallback(
            @NonNull RouteListingPreferenceCallback callback) {
    public void unregisterRouteListingPreferenceUpdatedCallback(
            @NonNull Consumer<RouteListingPreference> callback) {
        Objects.requireNonNull(callback, "callback must not be null");

        if (!mListingPreferenceCallbackRecords.remove(
                new RouteListingPreferenceCallbackRecord(/* executor */ null, callback))) {
            Log.w(TAG, "unregisterRouteListingPreferenceCallback: Ignoring an unknown callback");
            Log.w(
                    TAG,
                    "unregisterRouteListingPreferenceUpdatedCallback: Ignoring an unknown"
                        + " callback");
        }
    }

@@ -1119,9 +1125,7 @@ public final class MediaRouter2 {
    private void notifyRouteListingPreferenceUpdated(@Nullable RouteListingPreference preference) {
        for (RouteListingPreferenceCallbackRecord record : mListingPreferenceCallbackRecords) {
            record.mExecutor.execute(
                    () ->
                            record.mRouteListingPreferenceCallback.onRouteListingPreferenceChanged(
                                    preference));
                    () -> record.mRouteListingPreferenceCallback.accept(preference));
        }
    }

@@ -1208,22 +1212,6 @@ public final class MediaRouter2 {
        public void onPreferredFeaturesChanged(@NonNull List<String> preferredFeatures) {}
    }

    /** Callback for receiving events related to {@link RouteListingPreference}. */
    @FlaggedApi(FLAG_ENABLE_RLP_CALLBACKS_IN_MEDIA_ROUTER2)
    public abstract static class RouteListingPreferenceCallback {

        @FlaggedApi(FLAG_ENABLE_RLP_CALLBACKS_IN_MEDIA_ROUTER2)
        public RouteListingPreferenceCallback() {}

        /**
         * Called when the {@link RouteListingPreference} changes.
         *
         * @see #getRouteListingPreference
         */
        @FlaggedApi(FLAG_ENABLE_RLP_CALLBACKS_IN_MEDIA_ROUTER2)
        public void onRouteListingPreferenceChanged(@Nullable RouteListingPreference preference) {}
    }

    /** Callback for receiving events on media transfer. */
    public abstract static class TransferCallback {
        /**
@@ -1774,11 +1762,11 @@ public final class MediaRouter2 {

    private static final class RouteListingPreferenceCallbackRecord {
        public final Executor mExecutor;
        public final RouteListingPreferenceCallback mRouteListingPreferenceCallback;
        public final Consumer<RouteListingPreference> mRouteListingPreferenceCallback;

        /* package */ RouteListingPreferenceCallbackRecord(
                @NonNull Executor executor,
                @NonNull RouteListingPreferenceCallback routeListingPreferenceCallback) {
                @NonNull Consumer<RouteListingPreference> routeListingPreferenceCallback) {
            mExecutor = executor;
            mRouteListingPreferenceCallback = routeListingPreferenceCallback;
        }
+9 −13
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@ import java.util.Collections;
import java.util.List;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
import java.util.function.Consumer;
import java.util.stream.Collectors;

/** Implements {@link InfoMediaManager} using {@link MediaRouter2}. */
@@ -54,8 +55,11 @@ public final class RouterInfoMediaManager extends InfoMediaManager {
    private final RouteCallback mRouteCallback = new RouteCallback();
    private final TransferCallback mTransferCallback = new TransferCallback();
    private final ControllerCallback mControllerCallback = new ControllerCallback();
    private final RouteListingPreferenceCallback mRouteListingPreferenceCallback =
            new RouteListingPreferenceCallback();
    private final Consumer<RouteListingPreference> mRouteListingPreferenceCallback =
            (preference) -> {
                notifyRouteListingPreferenceUpdated(preference);
                refreshDevices();
            };

    // TODO: b/192657812 - Create factory method in InfoMediaManager to return
    //      RouterInfoMediaManager or ManagerInfoMediaManager based on flag.
@@ -83,7 +87,8 @@ public final class RouterInfoMediaManager extends InfoMediaManager {
    @Override
    protected void startScanOnRouter() {
        mRouter.registerRouteCallback(mExecutor, mRouteCallback, RouteDiscoveryPreference.EMPTY);
        mRouter.registerRouteListingPreferenceCallback(mExecutor, mRouteListingPreferenceCallback);
        mRouter.registerRouteListingPreferenceUpdatedCallback(
                mExecutor, mRouteListingPreferenceCallback);
        mRouter.registerTransferCallback(mExecutor, mTransferCallback);
        mRouter.registerControllerCallback(mExecutor, mControllerCallback);
        mRouter.startScan();
@@ -94,7 +99,7 @@ public final class RouterInfoMediaManager extends InfoMediaManager {
        mRouter.stopScan();
        mRouter.unregisterControllerCallback(mControllerCallback);
        mRouter.unregisterTransferCallback(mTransferCallback);
        mRouter.unregisterRouteListingPreferenceCallback(mRouteListingPreferenceCallback);
        mRouter.unregisterRouteListingPreferenceUpdatedCallback(mRouteListingPreferenceCallback);
        mRouter.unregisterRouteCallback(mRouteCallback);
    }

@@ -308,13 +313,4 @@ public final class RouterInfoMediaManager extends InfoMediaManager {
            refreshDevices();
        }
    }

    private final class RouteListingPreferenceCallback
            extends MediaRouter2.RouteListingPreferenceCallback {
        @Override
        public void onRouteListingPreferenceChanged(@Nullable RouteListingPreference preference) {
            notifyRouteListingPreferenceUpdated(preference);
            refreshDevices();
        }
    }
}