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

Commit 10993ea5 authored by Sungsoo's avatar Sungsoo
Browse files

MediaBrowser: Revert Search API

Bug: 36844917, Bug: 36524926, Bug: 36525667
Test: Pass MediaBrowserTest and MediaBrowserServiceTest
Change-Id: I07db20cc5ea30e8b68faa1dd6fc955a2a2153259
parent 39608b85
Loading
Loading
Loading
Loading
+0 −8
Original line number Diff line number Diff line
@@ -23977,7 +23977,6 @@ package android.media.browse {
    method public android.content.ComponentName getServiceComponent();
    method public android.media.session.MediaSession.Token getSessionToken();
    method public boolean isConnected();
    method public void search(java.lang.String, android.os.Bundle, android.media.browse.MediaBrowser.SearchCallback);
    method public void subscribe(java.lang.String, android.media.browse.MediaBrowser.SubscriptionCallback);
    method public void subscribe(java.lang.String, android.os.Bundle, android.media.browse.MediaBrowser.SubscriptionCallback);
    method public void unsubscribe(java.lang.String);
@@ -24013,12 +24012,6 @@ package android.media.browse {
    field public static final int FLAG_PLAYABLE = 2; // 0x2
  }
  public static abstract class MediaBrowser.SearchCallback {
    ctor public MediaBrowser.SearchCallback();
    method public void onError(java.lang.String, android.os.Bundle);
    method public void onSearchResult(java.lang.String, android.os.Bundle, java.util.List<android.media.browse.MediaBrowser.MediaItem>);
  }
  public static abstract class MediaBrowser.SubscriptionCallback {
    ctor public MediaBrowser.SubscriptionCallback();
    method public void onChildrenLoaded(java.lang.String, java.util.List<android.media.browse.MediaBrowser.MediaItem>);
@@ -37224,7 +37217,6 @@ package android.service.media {
    method public abstract void onLoadChildren(java.lang.String, android.service.media.MediaBrowserService.Result<java.util.List<android.media.browse.MediaBrowser.MediaItem>>);
    method public void onLoadChildren(java.lang.String, android.service.media.MediaBrowserService.Result<java.util.List<android.media.browse.MediaBrowser.MediaItem>>, android.os.Bundle);
    method public void onLoadItem(java.lang.String, android.service.media.MediaBrowserService.Result<android.media.browse.MediaBrowser.MediaItem>);
    method public void onSearch(java.lang.String, android.os.Bundle, android.service.media.MediaBrowserService.Result<java.util.List<android.media.browse.MediaBrowser.MediaItem>>);
    method public void setSessionToken(android.media.session.MediaSession.Token);
    field public static final java.lang.String SERVICE_INTERFACE = "android.media.browse.MediaBrowserService";
  }
+0 −8
Original line number Diff line number Diff line
@@ -25889,7 +25889,6 @@ package android.media.browse {
    method public android.content.ComponentName getServiceComponent();
    method public android.media.session.MediaSession.Token getSessionToken();
    method public boolean isConnected();
    method public void search(java.lang.String, android.os.Bundle, android.media.browse.MediaBrowser.SearchCallback);
    method public void subscribe(java.lang.String, android.media.browse.MediaBrowser.SubscriptionCallback);
    method public void subscribe(java.lang.String, android.os.Bundle, android.media.browse.MediaBrowser.SubscriptionCallback);
    method public void unsubscribe(java.lang.String);
@@ -25925,12 +25924,6 @@ package android.media.browse {
    field public static final int FLAG_PLAYABLE = 2; // 0x2
  }
  public static abstract class MediaBrowser.SearchCallback {
    ctor public MediaBrowser.SearchCallback();
    method public void onError(java.lang.String, android.os.Bundle);
    method public void onSearchResult(java.lang.String, android.os.Bundle, java.util.List<android.media.browse.MediaBrowser.MediaItem>);
  }
  public static abstract class MediaBrowser.SubscriptionCallback {
    ctor public MediaBrowser.SubscriptionCallback();
    method public void onChildrenLoaded(java.lang.String, java.util.List<android.media.browse.MediaBrowser.MediaItem>);
@@ -40324,7 +40317,6 @@ package android.service.media {
    method public abstract void onLoadChildren(java.lang.String, android.service.media.MediaBrowserService.Result<java.util.List<android.media.browse.MediaBrowser.MediaItem>>);
    method public void onLoadChildren(java.lang.String, android.service.media.MediaBrowserService.Result<java.util.List<android.media.browse.MediaBrowser.MediaItem>>, android.os.Bundle);
    method public void onLoadItem(java.lang.String, android.service.media.MediaBrowserService.Result<android.media.browse.MediaBrowser.MediaItem>);
    method public void onSearch(java.lang.String, android.os.Bundle, android.service.media.MediaBrowserService.Result<java.util.List<android.media.browse.MediaBrowser.MediaItem>>);
    method public void setSessionToken(android.media.session.MediaSession.Token);
    field public static final java.lang.String SERVICE_INTERFACE = "android.media.browse.MediaBrowserService";
  }
+0 −8
Original line number Diff line number Diff line
@@ -24090,7 +24090,6 @@ package android.media.browse {
    method public android.content.ComponentName getServiceComponent();
    method public android.media.session.MediaSession.Token getSessionToken();
    method public boolean isConnected();
    method public void search(java.lang.String, android.os.Bundle, android.media.browse.MediaBrowser.SearchCallback);
    method public void subscribe(java.lang.String, android.media.browse.MediaBrowser.SubscriptionCallback);
    method public void subscribe(java.lang.String, android.os.Bundle, android.media.browse.MediaBrowser.SubscriptionCallback);
    method public void unsubscribe(java.lang.String);
@@ -24126,12 +24125,6 @@ package android.media.browse {
    field public static final int FLAG_PLAYABLE = 2; // 0x2
  }
  public static abstract class MediaBrowser.SearchCallback {
    ctor public MediaBrowser.SearchCallback();
    method public void onError(java.lang.String, android.os.Bundle);
    method public void onSearchResult(java.lang.String, android.os.Bundle, java.util.List<android.media.browse.MediaBrowser.MediaItem>);
  }
  public static abstract class MediaBrowser.SubscriptionCallback {
    ctor public MediaBrowser.SubscriptionCallback();
    method public void onChildrenLoaded(java.lang.String, java.util.List<android.media.browse.MediaBrowser.MediaItem>);
@@ -37383,7 +37376,6 @@ package android.service.media {
    method public abstract void onLoadChildren(java.lang.String, android.service.media.MediaBrowserService.Result<java.util.List<android.media.browse.MediaBrowser.MediaItem>>);
    method public void onLoadChildren(java.lang.String, android.service.media.MediaBrowserService.Result<java.util.List<android.media.browse.MediaBrowser.MediaItem>>, android.os.Bundle);
    method public void onLoadItem(java.lang.String, android.service.media.MediaBrowserService.Result<android.media.browse.MediaBrowser.MediaItem>);
    method public void onSearch(java.lang.String, android.os.Bundle, android.service.media.MediaBrowserService.Result<java.util.List<android.media.browse.MediaBrowser.MediaItem>>);
    method public void setSessionToken(android.media.session.MediaSession.Token);
    field public static final java.lang.String SERVICE_INTERFACE = "android.media.browse.MediaBrowserService";
  }
+3 −85
Original line number Diff line number Diff line
@@ -365,7 +365,7 @@ public final class MediaBrowser {
     * @param parentId The id of the parent media item whose list of children
     *            will be subscribed.
     * @param options The bundle of service-specific arguments to send to the media
     *            browse service. The contents of this bundle may affect the
     *            browser service. The contents of this bundle may affect the
     *            information returned when browsing.
     * @param callback The callback to receive the list of children.
     */
@@ -453,7 +453,7 @@ public final class MediaBrowser {
        try {
            mServiceBinder.getMediaItem(mediaId, receiver, mServiceCallbacks);
        } catch (RemoteException e) {
            Log.i(TAG, "Remote error getting media item.", e);
            Log.i(TAG, "Remote error getting media item.");
            mHandler.post(new Runnable() {
                @Override
                public void run() {
@@ -463,62 +463,6 @@ public final class MediaBrowser {
        }
    }

    /**
     * Searches {@link MediaItem media items} from the connected service. Not
     * all services may support this, and {@link SearchCallback#onError} will be
     * called if not implemented.
     *
     * @param query The search query that contains keywords separated by space. Should not be
     *            an empty string.
     * @param extras The bundle of service-specific arguments to send to the media browser
     *            service. The contents of this bundle may affect the search result.
     * @param callback The callback to receive the search result.
     * @throws IllegalStateException if the browser is not connected to the media browser service.
     */
    public void search(@NonNull final String query, final Bundle extras, SearchCallback callback) {
        if (TextUtils.isEmpty(query)) {
            throw new IllegalArgumentException("query cannot be empty.");
        }
        if (callback == null) {
            throw new IllegalArgumentException("callback cannot be null.");
        }
        if (mState != CONNECT_STATE_CONNECTED) {
            throw new IllegalStateException("search() called while not connected (state="
                    + getStateLabel(mState) + ")");
        }
        ResultReceiver receiver = new ResultReceiver(mHandler) {
            @Override
            protected void onReceiveResult(int resultCode, Bundle resultData) {
                if (resultCode != 0 || resultData == null
                        || !resultData.containsKey(MediaBrowserService.KEY_SEARCH_RESULTS)) {
                    callback.onError(query, extras);
                    return;
                }
                Parcelable[] items = resultData.getParcelableArray(
                        MediaBrowserService.KEY_SEARCH_RESULTS);
                List<MediaItem> results = null;
                if (items != null) {
                    results = new ArrayList<>();
                    for (Parcelable item : items) {
                        results.add((MediaItem) item);
                    }
                }
                callback.onSearchResult(query, extras, results);
            }
        };
        try {
            mServiceBinder.search(query, extras, receiver, mServiceCallbacks);
        } catch (RemoteException e) {
            Log.i(TAG, "Remote error getting media item.", e);
            mHandler.post(new Runnable() {
                @Override
                public void run() {
                    callback.onError(query, extras);
                }
            });
        }
    }

    private void subscribeInternal(String parentId, Bundle options, SubscriptionCallback callback) {
        // Check arguments.
        if (TextUtils.isEmpty(parentId)) {
@@ -945,7 +889,7 @@ public final class MediaBrowser {
         * @param parentId The media id of the parent media item.
         * @param children The children which were loaded.
         * @param options The bundle of service-specific arguments sent to the media
         *            browse service. The contents of this bundle may affect the
         *            browser service. The contents of this bundle may affect the
         *            information returned when browsing.
         */
        public void onChildrenLoaded(@NonNull String parentId, @NonNull List<MediaItem> children,
@@ -1003,32 +947,6 @@ public final class MediaBrowser {
        }
    }

    /**
     * Callback for receiving the result of {@link #search}.
     */
    public static abstract class SearchCallback {
        /**
         * Called when the {@link #search} finished successfully.
         *
         * @param query The search query sent for the search request to the connected service.
         * @param extras The bundle of service-specific arguments sent to the connected service.
         * @param items The list of media items which contains the search result.
         */
        public void onSearchResult(@NonNull String query, Bundle extras,
                @NonNull List<MediaItem> items) {
        }

        /**
         * Called when an error happens while {@link #search} or the connected service doesn't
         * support {@link #search}.
         *
         * @param query The search query sent for the search request to the connected service.
         * @param extras The bundle of service-specific arguments sent to the connected service.
         */
        public void onError(@NonNull String query, Bundle extras) {
        }
    }

    /**
     * ServiceConnection to the other app.
     */
+1 −3
Original line number Diff line number Diff line
@@ -19,10 +19,8 @@ oneway interface IMediaBrowserService {

    void addSubscriptionDeprecated(String uri, IMediaBrowserServiceCallbacks callbacks);
    void removeSubscriptionDeprecated(String uri, IMediaBrowserServiceCallbacks callbacks);
    void getMediaItem(String uri, in ResultReceiver cb, IMediaBrowserServiceCallbacks callbacks);
    void search(String query, in Bundle extras, in ResultReceiver cb,
            IMediaBrowserServiceCallbacks callbacks);

    void getMediaItem(String uri, in ResultReceiver cb, IMediaBrowserServiceCallbacks callbacks);
    void addSubscription(String uri, in IBinder token, in Bundle options,
            IMediaBrowserServiceCallbacks callbacks);
    void removeSubscription(String uri, in IBinder token, IMediaBrowserServiceCallbacks callbacks);
Loading