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

Commit e8d6f95b authored by Kyunglyul Hyun's avatar Kyunglyul Hyun Committed by Android (Google) Code Review
Browse files

Merge "MediaRouter2: Remove sendControlRequest"

parents 34cbb221 c943f212
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -35,7 +35,6 @@ oneway interface IMediaRoute2Provider {
    void deselectRoute(String sessionId, String routeId);
    void transferToRoute(String sessionId, String routeId);

    void notifyControlRequestSent(String id, in Intent request);
    void setRouteVolume(String routeId, int volume);
    void setSessionVolume(String sessionId, int volume);
}
+0 −2
Original line number Diff line number Diff line
@@ -49,8 +49,6 @@ interface IMediaRouterService {
    RoutingSessionInfo getSystemSessionInfo();
    void registerClient2(IMediaRouter2Client client, String packageName);
    void unregisterClient2(IMediaRouter2Client client);
    void sendControlRequest(IMediaRouter2Client client, in MediaRoute2Info route,
            in Intent request);
    void setRouteVolume2(IMediaRouter2Client client, in MediaRoute2Info route, int volume);
    void setSessionVolume2(IMediaRouter2Client client, String sessionId, int volume);

+0 −19
Original line number Diff line number Diff line
@@ -114,16 +114,6 @@ public abstract class MediaRoute2ProviderService extends Service {
        return null;
    }

    /**
     * Called when sendControlRequest is called on a route of the provider
     *
     * @param routeId the id of the target route
     * @param request the media control request intent
     * @hide
     */
    //TODO: Discuss what to use for request (e.g., Intent? Request class?)
    public void onControlRequest(@NonNull String routeId, @NonNull Intent request) {}

    /**
     * Called when a volume setting is requested on a route of the provider
     *
@@ -512,15 +502,6 @@ public abstract class MediaRoute2ProviderService extends Service {
                    MediaRoute2ProviderService.this, sessionId, routeId));
        }

        @Override
        public void notifyControlRequestSent(String routeId, Intent request) {
            if (!checkCallerisSystem()) {
                return;
            }
            mHandler.sendMessage(obtainMessage(MediaRoute2ProviderService::onControlRequest,
                    MediaRoute2ProviderService.this, routeId, request));
        }

        @Override
        public void setRouteVolume(String routeId, int volume) {
            if (!checkCallerisSystem()) {
+0 −27
Original line number Diff line number Diff line
@@ -22,7 +22,6 @@ import android.annotation.CallbackExecutor;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
@@ -411,32 +410,6 @@ public class MediaRouter2 {
        return result;
    }

    /**
     * Sends a media control request to be performed asynchronously by the route's destination.
     *
     * @param route the route that will receive the control request
     * @param request the media control request
     * @hide
     */
    //TODO: Discuss what to use for request (e.g., Intent? Request class?)
    //TODO: Provide a way to obtain the result
    public void sendControlRequest(@NonNull MediaRoute2Info route, @NonNull Intent request) {
        Objects.requireNonNull(route, "route must not be null");
        Objects.requireNonNull(request, "request must not be null");

        Client2 client;
        synchronized (sRouterLock) {
            client = mClient;
        }
        if (client != null) {
            try {
                mMediaRouterService.sendControlRequest(client, route, request);
            } catch (RemoteException ex) {
                Log.e(TAG, "Unable to send control request.", ex);
            }
        }
    }

    /**
     * Requests a volume change for the route asynchronously.
     * <p>
+34 −30
Original line number Diff line number Diff line
@@ -20,7 +20,6 @@ import static android.media.MediaRoute2Info.FEATURE_LIVE_AUDIO;
import static android.media.MediaRoute2Info.PLAYBACK_VOLUME_FIXED;
import static android.media.MediaRoute2Info.PLAYBACK_VOLUME_VARIABLE;

import static com.android.mediaroutertest.SampleMediaRoute2ProviderService.ACTION_REMOVE_ROUTE;
import static com.android.mediaroutertest.SampleMediaRoute2ProviderService.FEATURE_SAMPLE;
import static com.android.mediaroutertest.SampleMediaRoute2ProviderService.FEATURE_SPECIAL;
import static com.android.mediaroutertest.SampleMediaRoute2ProviderService.ROUTE_ID1;
@@ -29,7 +28,6 @@ import static com.android.mediaroutertest.SampleMediaRoute2ProviderService.ROUTE
import static com.android.mediaroutertest.SampleMediaRoute2ProviderService.ROUTE_ID_FIXED_VOLUME;
import static com.android.mediaroutertest.SampleMediaRoute2ProviderService.ROUTE_ID_SPECIAL_FEATURE;
import static com.android.mediaroutertest.SampleMediaRoute2ProviderService.ROUTE_ID_VARIABLE_VOLUME;
import static com.android.mediaroutertest.SampleMediaRoute2ProviderService.ROUTE_NAME1;
import static com.android.mediaroutertest.SampleMediaRoute2ProviderService.ROUTE_NAME2;
import static com.android.mediaroutertest.SampleMediaRoute2ProviderService.VOLUME_MAX;

@@ -38,7 +36,6 @@ import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;

import android.content.Context;
import android.content.Intent;
import android.media.MediaRoute2Info;
import android.media.MediaRouter2;
import android.media.MediaRouter2.RouteCallback;
@@ -116,51 +113,58 @@ public class MediaRouter2ManagerTest {
        clearCallbacks();
    }

    /**
     * Tests if routes are added correctly when a new callback is registered.
     */
    @Test
    public void testOnRoutesAdded() throws Exception {
        CountDownLatch latch = new CountDownLatch(1);
    public void testOnRoutesRemovedAndAdded() throws Exception {
        RouteCallback routeCallback = new RouteCallback();
        mRouteCallbacks.add(routeCallback);
        mRouter2.registerRouteCallback(mExecutor, routeCallback,
                new RouteDiscoveryPreference.Builder(FEATURES_ALL, true).build());

        Map<String, MediaRoute2Info> routes = waitAndGetRoutesWithManager(FEATURES_ALL);

        CountDownLatch removedLatch = new CountDownLatch(1);
        CountDownLatch addedLatch = new CountDownLatch(1);

        addManagerCallback(new MediaRouter2Manager.Callback() {
            @Override
            public void onRoutesAdded(List<MediaRoute2Info> routes) {
            public void onRoutesRemoved(List<MediaRoute2Info> routes) {
                assertTrue(routes.size() > 0);
                for (MediaRoute2Info route : routes) {
                    if (route.getOriginalId().equals(ROUTE_ID1)
                            && route.getName().equals(ROUTE_NAME1)) {
                        latch.countDown();
                    }
                    if (route.getOriginalId().equals(ROUTE_ID2)
                            && route.getName().equals(ROUTE_NAME2)) {
                        removedLatch.countDown();
                    }
                }
        });

        assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
            }

    @Test
    public void testOnRoutesRemoved() throws Exception {
        CountDownLatch latch = new CountDownLatch(1);
        Map<String, MediaRoute2Info> routes = waitAndGetRoutesWithManager(FEATURES_ALL);

        addRouterCallback(new RouteCallback());
        addManagerCallback(new MediaRouter2Manager.Callback() {
            @Override
            public void onRoutesRemoved(List<MediaRoute2Info> routes) {
            public void onRoutesAdded(List<MediaRoute2Info> routes) {
                assertTrue(routes.size() > 0);
                if (removedLatch.getCount() > 0) {
                    return;
                }
                for (MediaRoute2Info route : routes) {
                    if (route.getOriginalId().equals(ROUTE_ID2)
                            && route.getName().equals(ROUTE_NAME2)) {
                        latch.countDown();
                        addedLatch.countDown();
                    }
                }
            }
        });

        //TODO: Figure out a more proper way to test.
        // (Control requests shouldn't be used in this way.)
        mRouter2.sendControlRequest(routes.get(ROUTE_ID2), new Intent(ACTION_REMOVE_ROUTE));
        assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
        MediaRoute2Info routeToRemove = routes.get(ROUTE_ID2);

        try {
            SampleMediaRoute2ProviderService sInstance =
                    SampleMediaRoute2ProviderService.getInstance();
            assertNotNull(sInstance);
            sInstance.removeRoute(ROUTE_ID2);
            assertTrue(removedLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));

            sInstance.addRoute(routeToRemove);
            assertTrue(addedLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
        } finally {
            mRouter2.unregisterRouteCallback(routeCallback);
        }
    }

    /**
Loading