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

Commit 82225146 authored by Derek Jedral's avatar Derek Jedral Committed by Android (Google) Code Review
Browse files

Merge "Remove hide annotation from suggestion API" into main

parents 90247cd7 bca7145c
Loading
Loading
Loading
Loading
+25 −0
Original line number Diff line number Diff line
@@ -25235,16 +25235,19 @@ package android.media {
    method @FlaggedApi("com.android.media.flags.enable_screen_off_scanning") public void cancelScanRequest(@NonNull android.media.MediaRouter2.ScanToken);
    method @Nullable public android.media.MediaRouter2.RoutingController getController(@NonNull String);
    method @NonNull public java.util.List<android.media.MediaRouter2.RoutingController> getControllers();
    method @FlaggedApi("com.android.media.flags.enable_suggested_device_api") @NonNull public java.util.Map<java.lang.String,java.util.List<android.media.SuggestedDeviceInfo>> getDeviceSuggestions();
    method @NonNull public static android.media.MediaRouter2 getInstance(@NonNull android.content.Context);
    method @FlaggedApi("com.android.media.flags.enable_privileged_routing_for_media_routing_control") @NonNull @RequiresPermission(anyOf={android.Manifest.permission.MEDIA_CONTENT_CONTROL, android.Manifest.permission.MEDIA_ROUTING_CONTROL}) public static android.media.MediaRouter2 getInstance(@NonNull android.content.Context, @NonNull String, @NonNull java.util.concurrent.Executor, @NonNull Runnable);
    method @FlaggedApi("com.android.media.flags.enable_rlp_callbacks_in_media_router2") @Nullable public android.media.RouteListingPreference getRouteListingPreference();
    method @NonNull public java.util.List<android.media.MediaRoute2Info> getRoutes();
    method @NonNull public android.media.MediaRouter2.RoutingController getSystemController();
    method public void registerControllerCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaRouter2.ControllerCallback);
    method @FlaggedApi("com.android.media.flags.enable_suggested_device_api") public void registerDeviceSuggestionsCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaRouter2.DeviceSuggestionsCallback);
    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 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 @FlaggedApi("com.android.media.flags.enable_screen_off_scanning") @NonNull public android.media.MediaRouter2.ScanToken requestScan(@NonNull android.media.MediaRouter2.ScanRequest);
    method @FlaggedApi("com.android.media.flags.enable_suggested_device_api") public void setDeviceSuggestions(@NonNull java.util.List<android.media.SuggestedDeviceInfo>);
    method public void setOnGetControllerHintsListener(@Nullable android.media.MediaRouter2.OnGetControllerHintsListener);
    method public void setRouteListingPreference(@Nullable android.media.RouteListingPreference);
    method @FlaggedApi("com.android.media.flags.enable_privileged_routing_for_media_routing_control") @RequiresPermission(anyOf={android.Manifest.permission.MEDIA_CONTENT_CONTROL, android.Manifest.permission.MEDIA_ROUTING_CONTROL}) public void setRouteVolume(@NonNull android.media.MediaRoute2Info, int);
@@ -25252,6 +25255,7 @@ package android.media {
    method public void stop();
    method public void transferTo(@NonNull android.media.MediaRoute2Info);
    method public void unregisterControllerCallback(@NonNull android.media.MediaRouter2.ControllerCallback);
    method @FlaggedApi("com.android.media.flags.enable_suggested_device_api") public void unregisterDeviceSuggestionsCallback(@NonNull android.media.MediaRouter2.DeviceSuggestionsCallback);
    method public void unregisterRouteCallback(@NonNull android.media.MediaRouter2.RouteCallback);
    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);
@@ -25262,6 +25266,11 @@ package android.media {
    method public void onControllerUpdated(@NonNull android.media.MediaRouter2.RoutingController);
  }
  @FlaggedApi("com.android.media.flags.enable_suggested_device_api") public static interface MediaRouter2.DeviceSuggestionsCallback {
    method public void onSuggestionRequested();
    method public void onSuggestionUpdated(@NonNull String, @NonNull java.util.List<android.media.SuggestedDeviceInfo>);
  }
  public static interface MediaRouter2.OnGetControllerHintsListener {
    method @Nullable public android.os.Bundle onGetControllerHints(@NonNull android.media.MediaRoute2Info);
  }
@@ -25807,6 +25816,22 @@ package android.media {
    method public int getTrackIndex();
  }
  @FlaggedApi("com.android.media.flags.enable_suggested_device_api") public final class SuggestedDeviceInfo implements android.os.Parcelable {
    method public int describeContents();
    method @NonNull public String getDeviceDisplayName();
    method @NonNull public android.os.Bundle getExtras();
    method @NonNull public String getRouteId();
    method public int getType();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.media.SuggestedDeviceInfo> CREATOR;
  }
  public static final class SuggestedDeviceInfo.Builder {
    ctor public SuggestedDeviceInfo.Builder(@NonNull String, @NonNull String, int);
    method @NonNull public android.media.SuggestedDeviceInfo build();
    method @NonNull public android.media.SuggestedDeviceInfo.Builder setExtras(@NonNull android.os.Bundle);
  }
  public final class SyncParams {
    ctor public SyncParams();
    method public android.media.SyncParams allowDefaults();
+14 −20
Original line number Diff line number Diff line
@@ -771,9 +771,8 @@ public final class MediaRouter2 {
     * router changes.
     *
     * <p>Calls using a previously registered callback will overwrite the previous executor.
     *
     * @hide
     */
    @FlaggedApi(FLAG_ENABLE_SUGGESTED_DEVICE_API)
    public void registerDeviceSuggestionsCallback(
            @NonNull @CallbackExecutor Executor executor,
            @NonNull DeviceSuggestionsCallback deviceSuggestionsCallback) {
@@ -810,8 +809,8 @@ public final class MediaRouter2 {
     * Unregisters the given callback to not receive {@link SuggestedDeviceInfo} change events.
     *
     * @see #registerDeviceSuggestionsCallback(Executor, DeviceSuggestionsCallback)
     * @hide
     */
    @FlaggedApi(FLAG_ENABLE_SUGGESTED_DEVICE_API)
    public void unregisterDeviceSuggestionsCallback(@NonNull DeviceSuggestionsCallback callback) {
        Objects.requireNonNull(callback, "callback must not be null");

@@ -875,20 +874,20 @@ public final class MediaRouter2 {
    }

    /**
     * Sets the suggested devices.
     * Sets a list of {@link SuggestedDeviceInfo device suggestions}.
     *
     * <p>Use this method to inform the system UI that this device is suggested in the Output
     * Switcher and media controls.
     * <p>Use this method to tell the system about device suggestions for the current router. The
     * system may use these suggestions to populate system UI such as Output Switcher and media
     * controls.
     *
     * <p>You should pass null to this method to clear a previously set suggestion without setting a
     * new one.
     * <p>Suggestions will be expired automatically by the system, at which point you should call
     * this method again if the suggestion is still relevant and should still be surfaced.
     *
     * @param suggestedDeviceInfo The {@link SuggestedDeviceInfo} the router suggests should be
     *     provided to the user.
     * @hide
     */
    @FlaggedApi(FLAG_ENABLE_SUGGESTED_DEVICE_API)
    public void setDeviceSuggestions(@Nullable List<SuggestedDeviceInfo> suggestedDeviceInfo) {
    public void setDeviceSuggestions(@NonNull List<SuggestedDeviceInfo> suggestedDeviceInfo) {
        mImpl.setDeviceSuggestions(suggestedDeviceInfo);
    }

@@ -896,10 +895,9 @@ public final class MediaRouter2 {
     * Gets the current suggested devices.
     *
     * @return the suggested devices, keyed by the package name providing each suggestion list.
     * @hide
     */
    @FlaggedApi(FLAG_ENABLE_SUGGESTED_DEVICE_API)
    @Nullable
    @NonNull
    public Map<String, List<SuggestedDeviceInfo>> getDeviceSuggestions() {
        return mImpl.getDeviceSuggestions();
    }
@@ -1670,23 +1668,19 @@ public final class MediaRouter2 {
                .build();
    }

    /**
     * Callback for receiving events about device suggestions
     *
     * @hide
     */
    /** Callback for receiving events about device suggestions */
    @FlaggedApi(FLAG_ENABLE_SUGGESTED_DEVICE_API)
    public interface DeviceSuggestionsCallback {

        /**
         * Called when suggestions are updated. Whenever you register a callback, this will be
         * invoked with the current suggestions.
         * Called when suggestions are updated.
         *
         * @param suggestingPackageName the package that provided the suggestions.
         * @param suggestedDeviceInfo the suggestions provided by the package.
         */
        void onSuggestionUpdated(
                @NonNull String suggestingPackageName,
                @Nullable List<SuggestedDeviceInfo> suggestedDeviceInfo);
                @NonNull List<SuggestedDeviceInfo> suggestedDeviceInfo);

        /** Called when a router requests a suggestion from suggestion providers. */
        void onSuggestionRequested();
+24 −56
Original line number Diff line number Diff line
@@ -20,7 +20,6 @@ import static com.android.media.flags.Flags.FLAG_ENABLE_SUGGESTED_DEVICE_API;

import android.annotation.FlaggedApi;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
@@ -32,8 +31,9 @@ import java.util.Objects;
 * Allows applications to suggest routes to the system UI (for example, in the System UI Output
 * Switcher).
 *
 * <p>Suggested devices are used to transfer the current media session from one device to another.
 *
 * @see MediaRouter2#setSuggestedDevice
 * @hide
 */
@FlaggedApi(FLAG_ENABLE_SUGGESTED_DEVICE_API)
public final class SuggestedDeviceInfo implements Parcelable {
@@ -55,7 +55,7 @@ public final class SuggestedDeviceInfo implements Parcelable {

    @NonNull private final String mRouteId;

    private final int mType;
    private final @MediaRoute2Info.Type int mType;

    @NonNull private final Bundle mExtras;

@@ -98,7 +98,7 @@ public final class SuggestedDeviceInfo implements Parcelable {
     *
     * @return The device type.
     */
    public int getType() {
    public @MediaRoute2Info.Type int getType() {
        return mType;
    }

@@ -107,7 +107,7 @@ public final class SuggestedDeviceInfo implements Parcelable {
     *
     * @return The extras.
     */
    @Nullable
    @NonNull
    public Bundle getExtras() {
        return mExtras;
    }
@@ -151,70 +151,37 @@ public final class SuggestedDeviceInfo implements Parcelable {

    /** Builder for {@link SuggestedDeviceInfo}. */
    public static final class Builder {
        @NonNull private String mDeviceDisplayName;
        @NonNull private final String mDeviceDisplayName;

        @NonNull private String mRouteId;
        @NonNull private final String mRouteId;

        @NonNull private Integer mType;
        private final int mType;

        private Bundle mExtras = Bundle.EMPTY;

        /**
         * Creates a new SuggestedDeviceInfo. The device display name, route ID, and type must be
         * set. The extras cannot be null, but default to an empty {@link Bundle}.
         *
         * @throws IllegalArgumentException if the builder has a mandatory unset field.
         */
        public SuggestedDeviceInfo build() {
            if (mDeviceDisplayName == null) {
                throw new IllegalArgumentException("Device display name cannot be null");
            }

            if (mRouteId == null) {
                throw new IllegalArgumentException("Route ID cannot be null.");
            }

            if (mType == null) {
                throw new IllegalArgumentException("Device type cannot be null.");
            }

            if (mExtras == null) {
                throw new IllegalArgumentException("Extras cannot be null.");
            }

            return new SuggestedDeviceInfo(this);
        }

        /**
         * Sets the {@link #getDeviceDisplayName() device display name}.
         *
         * @throws IllegalArgumentException if the name is null or empty.
         */
        public Builder setDeviceDisplayName(@NonNull String deviceDisplayName) {
        public Builder(
                @NonNull String deviceDisplayName,
                @NonNull String routeId,
                @MediaRoute2Info.Type int type) {
            if (TextUtils.isEmpty(deviceDisplayName)) {
                throw new IllegalArgumentException("Device display name cannot be null");
                throw new IllegalArgumentException("Device display name cannot be empty");
            }
            mDeviceDisplayName = deviceDisplayName;
            return this;
        }

        /**
         * Sets the {@link #getRouteId() route id}.
         *
         * @throws IllegalArgumentException if the route id is null or empty.
         */
        public Builder setRouteId(@NonNull String routeId) {
            if (TextUtils.isEmpty(routeId)) {
                throw new IllegalArgumentException("Device display name cannot be null");
                throw new IllegalArgumentException("Route ID cannot be empty.");
            }
            mRouteId = routeId;
            return this;
            mType = type;
        }

        /** Sets the {@link #getType() device type}. */
        public Builder setType(int type) {
            mType = type;
            return this;
        /**
         * Creates a new SuggestedDeviceInfo. The device display name, route ID, and type must be
         * set. The extras cannot be null, but default to an empty {@link Bundle}.
         */
        @NonNull
        public SuggestedDeviceInfo build() {
            return new SuggestedDeviceInfo(this);
        }

        /**
@@ -227,8 +194,9 @@ public final class SuggestedDeviceInfo implements Parcelable {
         *
         * @throws NullPointerException if the extras are null.
         */
        @NonNull
        public Builder setExtras(@NonNull Bundle extras) {
            mExtras = Objects.requireNonNull(extras, "extras must not be null");
            mExtras = Objects.requireNonNull(extras, "Extras must not be null");
            return this;
        }
    }
+9 −45
Original line number Diff line number Diff line
@@ -974,11 +974,7 @@ public class InfoMediaManagerTest {
    @Test
    public void onSuggestionUpdated_listenersNotified() {
        SuggestedDeviceInfo suggestedDeviceInfo =
                new SuggestedDeviceInfo.Builder()
                        .setDeviceDisplayName("device_name")
                        .setRouteId(TEST_ID_3)
                        .setType(0)
                        .build();
                new SuggestedDeviceInfo.Builder("device_name", TEST_ID_3, 0).build();
        RouterInfoMediaManager mediaManager = createRouterInfoMediaManager();
        setAvailableRoutesList(TEST_PACKAGE_NAME);
        mediaManager.registerCallback(mCallback);
@@ -1001,11 +997,7 @@ public class InfoMediaManagerTest {
    @Test
    public void onSuggestionUpdated_routesNotSet_listenersNotified() {
        SuggestedDeviceInfo suggestedDeviceInfo =
                new SuggestedDeviceInfo.Builder()
                        .setDeviceDisplayName("device_name")
                        .setRouteId(TEST_ID_3)
                        .setType(0)
                        .build();
                new SuggestedDeviceInfo.Builder("device_name", TEST_ID_3, 0).build();
        RouterInfoMediaManager mediaManager = createRouterInfoMediaManager();
        mediaManager.registerCallback(mCallback);
        clearInvocations(mCallback);
@@ -1026,11 +1018,7 @@ public class InfoMediaManagerTest {
    @Test
    public void onSuggestionUpdated_mediaDeviceIsSuggested() {
        SuggestedDeviceInfo suggestedDeviceInfo =
                new SuggestedDeviceInfo.Builder()
                        .setDeviceDisplayName("device_name")
                        .setRouteId(TEST_ID_3)
                        .setType(0)
                        .build();
                new SuggestedDeviceInfo.Builder("device_name", TEST_ID_3, 0).build();
        RouterInfoMediaManager mediaManager = createRouterInfoMediaManager();
        setAvailableRoutesList(TEST_PACKAGE_NAME);
        mediaManager.registerCallback(mCallback);
@@ -1052,11 +1040,7 @@ public class InfoMediaManagerTest {
    @Test
    public void onSuggestionUpdated_noSuggestedDevices_noSuggestedMediaDevices() {
        SuggestedDeviceInfo suggestedDeviceInfo =
                new SuggestedDeviceInfo.Builder()
                        .setDeviceDisplayName("device_name")
                        .setRouteId(TEST_ID_3)
                        .setType(0)
                        .build();
                new SuggestedDeviceInfo.Builder("device_name", TEST_ID_3, 0).build();
        RouterInfoMediaManager mediaManager = createRouterInfoMediaManager();
        setAvailableRoutesList(TEST_PACKAGE_NAME);
        mediaManager.registerCallback(mCallback);
@@ -1081,17 +1065,9 @@ public class InfoMediaManagerTest {
    @Test
    public void onSuggestionUpdated_multipleProviders_noSuggestedMediaDevices() {
        SuggestedDeviceInfo suggestedDeviceInfo1 =
                new SuggestedDeviceInfo.Builder()
                        .setDeviceDisplayName("device_name")
                        .setRouteId(TEST_ID_3)
                        .setType(0)
                        .build();
                new SuggestedDeviceInfo.Builder("device_name_1", TEST_ID_3, 0).build();
        SuggestedDeviceInfo suggestedDeviceInfo2 =
                new SuggestedDeviceInfo.Builder()
                        .setDeviceDisplayName("device_name_2")
                        .setRouteId(TEST_ID_3)
                        .setType(0)
                        .build();
                new SuggestedDeviceInfo.Builder("device_name_2", TEST_ID_3, 0).build();
        RouterInfoMediaManager mediaManager = createRouterInfoMediaManager();
        setAvailableRoutesList(TEST_PACKAGE_NAME);
        mediaManager.registerCallback(mCallback);
@@ -1116,11 +1092,7 @@ public class InfoMediaManagerTest {
    @Test
    public void onSuggestionUpdated_firstSuggestionFromSamePackage_suggestionIsFromSamePackage() {
        SuggestedDeviceInfo suggestedDeviceInfo =
                new SuggestedDeviceInfo.Builder()
                        .setDeviceDisplayName("device_name")
                        .setRouteId(TEST_ID_3)
                        .setType(0)
                        .build();
                new SuggestedDeviceInfo.Builder("device_name", TEST_ID_3, 0).build();
        RouterInfoMediaManager mediaManager = createRouterInfoMediaManager();
        setAvailableRoutesList(TEST_PACKAGE_NAME);
        mediaManager.registerCallback(mCallback);
@@ -1145,11 +1117,7 @@ public class InfoMediaManagerTest {
    @Test
    public void onSuggestionUpdated_laterSuggestionFromSamePackage_suggestionIsFromSamePackage() {
        SuggestedDeviceInfo suggestedDeviceInfo =
                new SuggestedDeviceInfo.Builder()
                        .setDeviceDisplayName("device_name")
                        .setRouteId(TEST_ID_3)
                        .setType(0)
                        .build();
                new SuggestedDeviceInfo.Builder("device_name", TEST_ID_3, 0).build();
        RouterInfoMediaManager mediaManager = createRouterInfoMediaManager();
        setAvailableRoutesList(TEST_PACKAGE_NAME);
        mediaManager.registerCallback(mCallback);
@@ -1174,11 +1142,7 @@ public class InfoMediaManagerTest {
    @Test
    public void setDeviceState_suggestionListenerNotified() {
        SuggestedDeviceInfo suggestedDeviceInfo =
                new SuggestedDeviceInfo.Builder()
                        .setDeviceDisplayName("device_name")
                        .setRouteId(TEST_ID_3)
                        .setType(0)
                        .build();
                new SuggestedDeviceInfo.Builder("device_name", TEST_ID_3, 0).build();
        RouterInfoMediaManager mediaManager = createRouterInfoMediaManager();
        setAvailableRoutesList(TEST_PACKAGE_NAME);
        mediaManager.registerCallback(mCallback);