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

Commit 0c4e0494 authored by Sungsoo Lim's avatar Sungsoo Lim Committed by android-build-merger
Browse files

Merge "MediaBrowser: Applying API Review" into nyc-dev am: 21c03f0c

am: 0d94716b

* commit '0d94716b':
  MediaBrowser: Applying API Review
parents 12fc1b11 0d94716b
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -22284,7 +22284,7 @@ package android.media.browse {
    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);
    method public void unsubscribe(java.lang.String, android.os.Bundle);
    method public void unsubscribe(java.lang.String, android.media.browse.MediaBrowser.SubscriptionCallback);
    field public static final java.lang.String EXTRA_PAGE = "android.media.browse.extra.PAGE";
    field public static final java.lang.String EXTRA_PAGE_SIZE = "android.media.browse.extra.PAGE_SIZE";
  }
+1 −1
Original line number Diff line number Diff line
@@ -23849,7 +23849,7 @@ package android.media.browse {
    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);
    method public void unsubscribe(java.lang.String, android.os.Bundle);
    method public void unsubscribe(java.lang.String, android.media.browse.MediaBrowser.SubscriptionCallback);
    field public static final java.lang.String EXTRA_PAGE = "android.media.browse.extra.PAGE";
    field public static final java.lang.String EXTRA_PAGE_SIZE = "android.media.browse.extra.PAGE_SIZE";
  }
+1 −1
Original line number Diff line number Diff line
@@ -22349,7 +22349,7 @@ package android.media.browse {
    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);
    method public void unsubscribe(java.lang.String, android.os.Bundle);
    method public void unsubscribe(java.lang.String, android.media.browse.MediaBrowser.SubscriptionCallback);
    field public static final java.lang.String EXTRA_PAGE = "android.media.browse.extra.PAGE";
    field public static final java.lang.String EXTRA_PAGE_SIZE = "android.media.browse.extra.PAGE_SIZE";
  }
+24 −28
Original line number Diff line number Diff line
@@ -57,8 +57,9 @@ import java.util.Map.Entry;
 * <h3>Standard Extra Data</h3>
 *
 * <p>These are the current standard fields that can be used as extra data via
 * {@link #subscribe(String, Bundle, SubscriptionCallback)}, {@link #unsubscribe(String, Bundle)},
 * and {@link SubscriptionCallback#onChildrenLoaded(String, List, Bundle)}.
 * {@link #subscribe(String, Bundle, SubscriptionCallback)},
 * {@link #unsubscribe(String, SubscriptionCallback)}, and
 * {@link SubscriptionCallback#onChildrenLoaded(String, List, Bundle)}.
 *
 * <ul>
 *     <li> {@link #EXTRA_PAGE}
@@ -388,7 +389,7 @@ public final class MediaBrowser {
    }

    /**
     * Unsubscribes for changes to the children of the specified media id.
     * Unsubscribes for changes to the children of the specified media id through a callback.
     * <p>
     * The query callback will no longer be invoked for results associated with
     * this id once this method returns.
@@ -396,13 +397,13 @@ public final class MediaBrowser {
     *
     * @param parentId The id of the parent media item whose list of children
     *            will be unsubscribed.
     * @param options A bundle sent to the media browse service to subscribe.
     * @param callback A callback sent to the media browse service to subscribe.
     */
    public void unsubscribe(@NonNull String parentId, @NonNull Bundle options) {
        if (options == null) {
            throw new IllegalArgumentException("options are null");
    public void unsubscribe(@NonNull String parentId, @NonNull SubscriptionCallback callback) {
        if (callback == null) {
            throw new IllegalArgumentException("callback is null");
        }
        unsubscribeInternal(parentId, options);
        unsubscribeInternal(parentId, callback);
    }

    /**
@@ -495,7 +496,7 @@ public final class MediaBrowser {
        }
    }

    private void unsubscribeInternal(String parentId, Bundle options) {
    private void unsubscribeInternal(String parentId, SubscriptionCallback callback) {
        // Check arguments.
        if (TextUtils.isEmpty(parentId)) {
            throw new IllegalArgumentException("parentId is empty.");
@@ -505,16 +506,21 @@ public final class MediaBrowser {
        Subscription sub = mSubscriptions.get(parentId);

        // Tell the service if necessary.
        if (sub != null && sub.removeCallback(options) && mState == CONNECT_STATE_CONNECTED) {
        if (mState == CONNECT_STATE_CONNECTED && sub != null) {
            try {
                // NOTE: Do not call removeSubscriptionWithOptions when options are null. Otherwise,
                // it will break the action of support library which expects removeSubscription will
                // be called when options are null.
                if (options == null) {
                if (callback == null) {
                    mServiceBinder.removeSubscription(parentId, mServiceCallbacks);
                } else {
                    final List<SubscriptionCallback> callbacks = sub.getCallbacks();
                    final List<Bundle> optionsList = sub.getOptionsList();
                    for (int i = callbacks.size() - 1; i >= 0; --i) {
                        if (callbacks.get(i) == callback) {
                            mServiceBinder.removeSubscriptionWithOptions(
                            parentId, options, mServiceCallbacks);
                                    parentId, optionsList.get(i), mServiceCallbacks);
                            callbacks.remove(i);
                            optionsList.remove(i);
                        }
                    }
                }
            } catch (RemoteException ex) {
                // Process is crashing. We will disconnect, and upon reconnect we will
@@ -522,7 +528,8 @@ public final class MediaBrowser {
                Log.d(TAG, "removeSubscription failed with RemoteException parentId=" + parentId);
            }
        }
        if (sub != null && sub.isEmpty()) {

        if (sub != null && (sub.isEmpty() || callback == null)) {
            mSubscriptions.remove(parentId);
        }
    }
@@ -1123,16 +1130,5 @@ public final class MediaBrowser {
            mCallbacks.add(callback);
            mOptionsList.add(options);
        }

        public boolean removeCallback(Bundle options) {
            for (int i = 0; i < mOptionsList.size(); ++i) {
                if (MediaBrowserUtils.areSameOptions(mOptionsList.get(i), options)) {
                    mCallbacks.remove(i);
                    mOptionsList.remove(i);
                    return true;
                }
            }
            return false;
        }
    }
}
+3 −0
Original line number Diff line number Diff line
@@ -574,6 +574,9 @@ public abstract class MediaBrowserService extends Service {
     * Remove the subscription.
     */
    private boolean removeSubscription(String id, ConnectionRecord connection, Bundle options) {
        if (options == null) {
            return connection.subscriptions.remove(id) != null;
        }
        boolean removed = false;
        List<Bundle> optionsList = connection.subscriptions.get(id);
        if (optionsList != null) {