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

Commit c5186307 authored by Hyundo Moon's avatar Hyundo Moon Committed by Android (Google) Code Review
Browse files

Merge "Implement route control methods of RouteSessionController"

parents 7017d7f3 0a926579
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -30,7 +30,7 @@ oneway interface IMediaRoute2Provider {

    void selectRoute(int sessionId, String routeId);
    void deselectRoute(int sessionId, String routeId);
    void transferRoute(int sessionId, String routeId);
    void transferToRoute(int sessionId, String routeId);

    void notifyControlRequestSent(String id, in Intent request);
    void requestSetVolume(String id, int volume);
+1 −0
Original line number Diff line number Diff line
@@ -28,4 +28,5 @@ oneway interface IMediaRoute2ProviderClient {
    void updateState(in MediaRoute2ProviderInfo providerInfo,
            in List<RouteSessionInfo> sessionInfos);
    void notifySessionCreated(in @nullable RouteSessionInfo sessionInfo, long requestId);
    void notifySessionInfoChanged(in RouteSessionInfo sessionInfo);
}
+1 −0
Original line number Diff line number Diff line
@@ -29,4 +29,5 @@ oneway interface IMediaRouter2Client {
    void notifyRoutesRemoved(in List<MediaRoute2Info> routes);
    void notifyRoutesChanged(in List<MediaRoute2Info> routes);
    void notifySessionCreated(in @nullable RouteSessionInfo sessionInfo, int requestId);
    void notifySessionInfoChanged(in RouteSessionInfo sessionInfo);
}
+3 −0
Original line number Diff line number Diff line
@@ -53,6 +53,9 @@ interface IMediaRouterService {
    void requestCreateSession(IMediaRouter2Client client, in MediaRoute2Info route,
            String controlCategory, int requestId);
    void setControlCategories(IMediaRouter2Client client, in List<String> categories);
    void selectRoute(IMediaRouter2Client client, String sessionId, in MediaRoute2Info route);
    void deselectRoute(IMediaRouter2Client client, String sessionId, in MediaRoute2Info route);
    void transferToRoute(IMediaRouter2Client client, String sessionId, in MediaRoute2Info route);

    void registerManager(IMediaRouter2Manager manager, String packageName);
    void unregisterManager(IMediaRouter2Manager manager);
+34 −5
Original line number Diff line number Diff line
@@ -134,7 +134,6 @@ public abstract class MediaRoute2ProviderService extends Service {
     */
    public final void updateSessionInfo(@NonNull RouteSessionInfo sessionInfo) {
        Objects.requireNonNull(sessionInfo, "sessionInfo must not be null");

        int sessionId = sessionInfo.getSessionId();
        if (sessionInfo.getSelectedRoutes().isEmpty()) {
            releaseSession(sessionId);
@@ -152,6 +151,35 @@ public abstract class MediaRoute2ProviderService extends Service {
        }
    }

    /**
     * Notifies the session is changed.
     *
     * TODO: This method is temporary, only created for tests. Remove when the alternative is ready.
     * @hide
     */
    public final void notifySessionInfoChanged(@NonNull RouteSessionInfo sessionInfo) {
        Objects.requireNonNull(sessionInfo, "sessionInfo must not be null");

        int sessionId = sessionInfo.getSessionId();
        synchronized (mSessionLock) {
            if (mSessionInfo.containsKey(sessionId)) {
                mSessionInfo.put(sessionId, sessionInfo);
            } else {
                Log.w(TAG, "Ignoring unknown session info.");
                return;
            }
        }

        if (mClient == null) {
            return;
        }
        try {
            mClient.notifySessionInfoChanged(sessionInfo);
        } catch (RemoteException ex) {
            Log.w(TAG, "Failed to notify session info changed.");
        }
    }

    /**
     * Notifies clients of that the session is created and ready for use. If the session can be
     * controlled, pass a {@link Bundle} that contains how to control it.
@@ -163,6 +191,7 @@ public abstract class MediaRoute2ProviderService extends Service {
     * @param requestId id of the previous request to create this session
     */
    // TODO: fail reason?
    // TODO: Maybe better to create notifySessionCreationFailed?
    public final void notifySessionCreated(@Nullable RouteSessionInfo sessionInfo, long requestId) {
        if (sessionInfo != null) {
            int sessionId = sessionInfo.getSessionId();
@@ -269,7 +298,7 @@ public abstract class MediaRoute2ProviderService extends Service {
     * @param sessionId id of the session
     * @param routeId id of the route
     */
    public abstract void onTransferRoute(int sessionId, @NonNull String routeId);
    public abstract void onTransferToRoute(int sessionId, @NonNull String routeId);

    /**
     * Updates provider info and publishes routes and session info.
@@ -364,11 +393,11 @@ public abstract class MediaRoute2ProviderService extends Service {
        }

        @Override
        public void transferRoute(int sessionId, String routeId) {
        public void transferToRoute(int sessionId, String routeId) {
            if (!checkCallerisSystem()) {
                return;
            }
            mHandler.sendMessage(obtainMessage(MediaRoute2ProviderService::onTransferRoute,
            mHandler.sendMessage(obtainMessage(MediaRoute2ProviderService::onTransferToRoute,
                    MediaRoute2ProviderService.this, sessionId, routeId));
        }

Loading