Move MediaBrowser API into updatable media

Bug: 119539966, Bug: 119538799
Test: build and boot,
    atest CtsMediaTestCases:android.media.cts.MediaBrowserTest,
    atest CtsMediaTestCases:android.media.cts.MediaBrowserServiceTest
Change-Id: I7afed77e61506a1b4ea57ac41eee62bfcda01a74
This commit is contained in:
Sungsoo Lim
2019-01-24 03:14:12 +09:00
parent bb3b401d42
commit 4e475438ad
8 changed files with 36 additions and 27 deletions

View File

@@ -519,8 +519,6 @@ java_defaults {
"media/java/android/media/tv/ITvInputSessionCallback.aidl",
"media/java/android/media/tv/ITvRemoteProvider.aidl",
"media/java/android/media/tv/ITvRemoteServiceInput.aidl",
"media/java/android/service/media/IMediaBrowserService.aidl",
"media/java/android/service/media/IMediaBrowserServiceCallbacks.aidl",
"telecomm/java/com/android/internal/telecom/ICallRedirectionAdapter.aidl",
"telecomm/java/com/android/internal/telecom/ICallRedirectionService.aidl",
"telecomm/java/com/android/internal/telecom/ICallScreeningAdapter.aidl",

View File

@@ -35,6 +35,8 @@ filegroup {
"apex/java/android/media/MediaMetadata.java",
"apex/java/android/media/MediaParceledListSlice.java",
"apex/java/android/media/VolumeProvider.java",
"apex/java/android/media/browse/MediaBrowser.java",
"apex/java/android/media/browse/MediaBrowserUtils.java",
"apex/java/android/media/session/ControllerCallbackLink.java",
"apex/java/android/media/session/ControllerLink.java",
"apex/java/android/media/session/ISession.aidl",
@@ -47,6 +49,9 @@ filegroup {
"apex/java/android/media/session/PlaybackState.java",
"apex/java/android/media/session/SessionCallbackLink.java",
"apex/java/android/media/session/SessionLink.java",
"apex/java/android/service/media/IMediaBrowserService.aidl",
"apex/java/android/service/media/IMediaBrowserServiceCallbacks.aidl",
"apex/java/android/service/media/MediaBrowserService.java",
],
}
@@ -60,6 +65,8 @@ filegroup {
"apex/java/android/media/session/ISessionCallback.aidl",
"apex/java/android/media/session/ISessionController.aidl",
"apex/java/android/media/session/ISessionControllerCallback.aidl",
"apex/java/android/service/media/IMediaBrowserService.aidl",
"apex/java/android/service/media/IMediaBrowserServiceCallbacks.aidl",
],
}

View File

@@ -284,8 +284,8 @@ public final class MediaBrowser {
*/
public @NonNull ComponentName getServiceComponent() {
if (!isConnected()) {
throw new IllegalStateException("getServiceComponent() called while not connected" +
" (state=" + mState + ")");
throw new IllegalStateException("getServiceComponent() called while not connected"
+ " (state=" + mState + ")");
}
return mServiceComponent;
}
@@ -331,7 +331,7 @@ public final class MediaBrowser {
*
* @throws IllegalStateException if not connected.
*/
public @NonNull MediaSession.Token getSessionToken() {
public @NonNull MediaSession.Token getSessionToken() {
if (!isConnected()) {
throw new IllegalStateException("getSessionToken() called while not connected (state="
+ mState + ")");
@@ -464,7 +464,7 @@ public final class MediaBrowser {
cb.onError(mediaId);
return;
}
cb.onItemLoaded((MediaItem)item);
cb.onItemLoaded((MediaItem) item);
}
};
try {
@@ -575,7 +575,7 @@ public final class MediaBrowser {
}
}
private final void onServiceConnected(final IMediaBrowserServiceCallbacks callback,
private void onServiceConnected(final IMediaBrowserServiceCallbacks callback,
final String root, final MediaSession.Token session, final Bundle extra) {
mHandler.post(new Runnable() {
@Override
@@ -625,7 +625,7 @@ public final class MediaBrowser {
});
}
private final void onConnectionFailed(final IMediaBrowserServiceCallbacks callback) {
private void onConnectionFailed(final IMediaBrowserServiceCallbacks callback) {
mHandler.post(new Runnable() {
@Override
public void run() {
@@ -652,7 +652,7 @@ public final class MediaBrowser {
});
}
private final void onLoadChildren(final IMediaBrowserServiceCallbacks callback,
private void onLoadChildren(final IMediaBrowserServiceCallbacks callback,
final String parentId, final MediaParceledListSlice list, final Bundle options) {
mHandler.post(new Runnable() {
@Override
@@ -745,7 +745,7 @@ public final class MediaBrowser {
/** @hide */
@Retention(RetentionPolicy.SOURCE)
@IntDef(flag=true, value = { FLAG_BROWSABLE, FLAG_PLAYABLE })
@IntDef(flag = true, value = { FLAG_BROWSABLE, FLAG_PLAYABLE })
public @interface Flags { }
/**
@@ -886,7 +886,7 @@ public final class MediaBrowser {
/**
* Callbacks for subscription related events.
*/
public static abstract class SubscriptionCallback {
public abstract static class SubscriptionCallback {
Binder mToken;
public SubscriptionCallback() {
@@ -947,7 +947,7 @@ public final class MediaBrowser {
/**
* Callback for receiving the result of {@link #getItem}.
*/
public static abstract class ItemCallback {
public abstract static class ItemCallback {
/**
* Called when the item has been returned by the connected service.
*
@@ -1078,7 +1078,7 @@ public final class MediaBrowser {
private static class ServiceCallbacks extends IMediaBrowserServiceCallbacks.Stub {
private WeakReference<MediaBrowser> mMediaBrowser;
public ServiceCallbacks(MediaBrowser mediaBrowser) {
ServiceCallbacks(MediaBrowser mediaBrowser) {
mMediaBrowser = new WeakReference<MediaBrowser>(mediaBrowser);
}
@@ -1125,7 +1125,7 @@ public final class MediaBrowser {
private final List<SubscriptionCallback> mCallbacks;
private final List<Bundle> mOptionsList;
public Subscription() {
Subscription() {
mCallbacks = new ArrayList<>();
mOptionsList = new ArrayList<>();
}

View File

@@ -22,6 +22,9 @@ import android.os.Bundle;
* @hide
*/
public class MediaBrowserUtils {
/**
* Compares whether two bundles are the same.
*/
public static boolean areSameOptions(Bundle options1, Bundle options2) {
if (options1 == options2) {
return true;
@@ -39,6 +42,9 @@ public class MediaBrowserUtils {
}
}
/**
* Returnes true if the page options has duplicated items.
*/
public static boolean hasDuplicatedItems(Bundle options1, Bundle options2) {
int page1 = options1 == null ? -1 : options1.getInt(MediaBrowser.EXTRA_PAGE, -1);
int page2 = options2 == null ? -1 : options2.getInt(MediaBrowser.EXTRA_PAGE, -1);

View File

@@ -2,9 +2,7 @@
package android.service.media;
import android.content.res.Configuration;
import android.service.media.IMediaBrowserServiceCallbacks;
import android.net.Uri;
import android.os.Bundle;
import android.os.ResultReceiver;

View File

@@ -2,7 +2,6 @@
package android.service.media;
import android.graphics.Bitmap;
import android.media.MediaParceledListSlice;
import android.media.session.MediaSession;
import android.os.Bundle;

View File

@@ -98,7 +98,7 @@ public abstract class MediaBrowserService extends Service {
/** @hide */
@Retention(RetentionPolicy.SOURCE)
@IntDef(flag=true, value = { RESULT_FLAG_OPTION_NOT_HANDLED,
@IntDef(flag = true, value = { RESULT_FLAG_OPTION_NOT_HANDLED,
RESULT_FLAG_ON_LOAD_ITEM_NOT_IMPLEMENTED })
private @interface ResultFlags { }
@@ -291,7 +291,7 @@ public abstract class MediaBrowserService extends Service {
final ConnectionRecord connection = mConnections.get(b);
if (connection == null) {
Log.w(TAG, "addSubscription for callback that isn't registered id="
+ id);
+ id);
return;
}
@@ -301,7 +301,8 @@ public abstract class MediaBrowserService extends Service {
}
@Override
public void removeSubscriptionDeprecated(String id, IMediaBrowserServiceCallbacks callbacks) {
public void removeSubscriptionDeprecated(
String id, IMediaBrowserServiceCallbacks callbacks) {
// do-nothing
}
@@ -487,7 +488,7 @@ public abstract class MediaBrowserService extends Service {
@Override
public void run() {
Iterator<ConnectionRecord> iter = mConnections.values().iterator();
while (iter.hasNext()){
while (iter.hasNext()) {
ConnectionRecord connection = iter.next();
try {
connection.callbacks.onConnect(connection.root.getRootId(), token,
@@ -607,7 +608,7 @@ public abstract class MediaBrowserService extends Service {
final PackageManager pm = getPackageManager();
final String[] packages = pm.getPackagesForUid(uid);
final int N = packages.length;
for (int i=0; i<N; i++) {
for (int i = 0; i < N; i++) {
if (packages[i].equals(pkg)) {
return true;
}
@@ -648,7 +649,7 @@ public abstract class MediaBrowserService extends Service {
List<Pair<IBinder, Bundle>> callbackList = connection.subscriptions.get(id);
if (callbackList != null) {
Iterator<Pair<IBinder, Bundle>> iter = callbackList.iterator();
while (iter.hasNext()){
while (iter.hasNext()) {
if (token == iter.next().first) {
removed = true;
iter.remove();
@@ -819,8 +820,8 @@ public abstract class MediaBrowserService extends Service {
*/
public static final String EXTRA_SUGGESTED = "android.service.media.extra.SUGGESTED";
final private String mRootId;
final private Bundle mExtras;
private final String mRootId;
private final Bundle mExtras;
/**
* Constructs a browser root.
@@ -829,8 +830,8 @@ public abstract class MediaBrowserService extends Service {
*/
public BrowserRoot(@NonNull String rootId, @Nullable Bundle extras) {
if (rootId == null) {
throw new IllegalArgumentException("The root id in BrowserRoot cannot be null. " +
"Use null for BrowserRoot instead.");
throw new IllegalArgumentException("The root id in BrowserRoot cannot be null. "
+ "Use null for BrowserRoot instead.");
}
mRootId = rootId;
mExtras = extras;