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

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

Merge "MediaRouter: Call onDiscoveryPreferenceChanged()"

parents b1e380c4 1866d8ae
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package android.media;

import android.content.Intent;
import android.media.IMediaRoute2ProviderClient;
import android.media.RouteDiscoveryPreference;
import android.os.Bundle;

/**
@@ -28,6 +29,7 @@ oneway interface IMediaRoute2Provider {
    void requestCreateSession(String packageName, String routeId, long requestId,
            in @nullable Bundle sessionHints);
    void releaseSession(String sessionId);
    void updateDiscoveryPreference(in RouteDiscoveryPreference discoveryPreference);

    void selectRoute(String sessionId, String routeId);
    void deselectRoute(String sessionId, String routeId);
+10 −1
Original line number Diff line number Diff line
@@ -370,7 +370,6 @@ public abstract class MediaRoute2ProviderService extends Service {
     *
     * @param preference the new discovery preference
     */
    // TODO: This method needs tests.
    public void onDiscoveryPreferenceChanged(@NonNull RouteDiscoveryPreference preference) {}

    /**
@@ -455,6 +454,16 @@ public abstract class MediaRoute2ProviderService extends Service {
                    MediaRoute2ProviderService.this, sessionId));
        }

        @Override
        public void updateDiscoveryPreference(RouteDiscoveryPreference discoveryPreference) {
            if (!checkCallerisSystem()) {
                return;
            }
            mHandler.sendMessage(obtainMessage(
                    MediaRoute2ProviderService::onDiscoveryPreferenceChanged,
                    MediaRoute2ProviderService.this, discoveryPreference));
        }

        @Override
        public void selectRoute(@NonNull String sessionId, String routeId) {
            if (!checkCallerisSystem()) {
+31 −11
Original line number Diff line number Diff line
@@ -182,11 +182,16 @@ public class MediaRouter2 {
                Client2 client = new Client2();
                try {
                    mMediaRouterService.registerClient2(client, mPackageName);
                    updateDiscoveryRequestLocked();
                    mMediaRouterService.setDiscoveryRequest2(client, mDiscoveryPreference);
                    mClient = client;
                } catch (RemoteException ex) {
                    Log.e(TAG, "Unable to register media router.", ex);
                    Log.e(TAG, "registerRouteCallback: Unable to register client.", ex);
                }
            }
            if (mClient != null && updateDiscoveryPreferenceIfNeededLocked()) {
                try {
                    mMediaRouterService.setDiscoveryRequest2(mClient, mDiscoveryPreference);
                } catch (RemoteException ex) {
                    Log.e(TAG, "registerRouteCallback: Unable to set discovery request.");
                }
            }
        }
@@ -209,22 +214,37 @@ public class MediaRouter2 {
        }

        synchronized (sRouterLock) {
            if (mRouteCallbackRecords.size() == 0 && mClient != null) {
            if (mClient != null) {
                if (updateDiscoveryPreferenceIfNeededLocked()) {
                    try {
                        mMediaRouterService.setDiscoveryRequest2(mClient, mDiscoveryPreference);
                    } catch (RemoteException ex) {
                        Log.e(TAG, "unregisterRouteCallback: Unable to set discovery request.");
                    }
                }
                if (mRouteCallbackRecords.size() == 0) {
                    try {
                        mMediaRouterService.unregisterClient2(mClient);
                    } catch (RemoteException ex) {
                        Log.e(TAG, "Unable to unregister media router.", ex);
                    }
                //TODO: Clean up mRoutes. (onHandler?)
                }
                mShouldUpdateRoutes = true;
                mClient = null;
            }
        }
    }

    private void updateDiscoveryRequestLocked() {
        mDiscoveryPreference = new RouteDiscoveryPreference.Builder(
    private boolean updateDiscoveryPreferenceIfNeededLocked() {
        RouteDiscoveryPreference newDiscoveryPreference = new RouteDiscoveryPreference.Builder(
                mRouteCallbackRecords.stream().map(record -> record.mPreference).collect(
                        Collectors.toList())).build();
        if (Objects.equals(mDiscoveryPreference, newDiscoveryPreference)) {
            return false;
        }
        mDiscoveryPreference = newDiscoveryPreference;
        mShouldUpdateRoutes = true;
        return true;
    }

    /**
+2 −1
Original line number Diff line number Diff line
@@ -58,6 +58,7 @@ public final class RouteDiscoveryPreference implements Parcelable {
    private final Bundle mExtras;

    /**
     * An empty discovery preference.
     * @hide
     */
    public static final RouteDiscoveryPreference EMPTY =
+0 −1
Original line number Diff line number Diff line
@@ -155,7 +155,6 @@ public class SampleMediaRoute2ProviderService extends MediaRoute2ProviderService

    @Override
    public void onUpdateVolume(String routeId, int delta) {
        android.util.Log.d(TAG, "onUpdateVolume routeId= " + routeId + "delta=" + delta);
        MediaRoute2Info route = mRoutes.get(routeId);
        if (route == null) {
            return;
Loading