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

Commit 70bc1959 authored by Hyundo Moon's avatar Hyundo Moon
Browse files

Move MediaItem2 Builder to updatable

This CL also removes the public constructor of MediaItem2, which was
suggested by API reviewers.

Bug: 73971203
Test: Passed MediaBrowser2Test (CTS)
Change-Id: Ie7fce70682bba2952287b3e7baf90edd18453caf
parent 006b7eeb
Loading
Loading
Loading
Loading
+52 −3
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.annotation.Nullable;
import android.content.Context;
import android.media.DataSourceDesc;
import android.media.MediaItem2;
import android.media.MediaItem2.Builder;
import android.media.MediaItem2.Flags;
import android.media.MediaMetadata2;
import android.media.update.MediaItem2Provider;
@@ -43,7 +44,7 @@ public class MediaItem2Impl implements MediaItem2Provider {
    private DataSourceDesc mDataSourceDesc;

    // From the public API
    public MediaItem2Impl(Context context, MediaItem2 instance, String mediaId,
    public MediaItem2Impl(Context context, String mediaId,
            DataSourceDesc dsd, MediaMetadata2 metadata, @Flags int flags) {
        if (mediaId == null) {
            throw new IllegalArgumentException("mediaId shouldn't be null");
@@ -56,12 +57,12 @@ public class MediaItem2Impl implements MediaItem2Provider {
        }

        mContext = context;
        mInstance = instance;

        mId = mediaId;
        mDataSourceDesc = dsd;
        mMetadata = metadata;
        mFlags = flags;

        mInstance = new MediaItem2(this);
    }

    // Create anonymized version
@@ -157,4 +158,52 @@ public class MediaItem2Impl implements MediaItem2Provider {
    public @Nullable DataSourceDesc getDataSourceDesc_impl() {
        return mDataSourceDesc;
    }

    public static class BuilderImpl implements MediaItem2Provider.BuilderProvider {
        private Context mContext;
        private Builder mInstance;
        private @Flags int mFlags;
        private String mMediaId;
        private MediaMetadata2 mMetadata;
        private DataSourceDesc mDataSourceDesc;

        public BuilderImpl(Context context, Builder instance, int flags) {
            mContext = context;
            mInstance = instance;
            mFlags = flags;
        }

        @Override
        public Builder setMediaId_impl(@Nullable String mediaId) {
            mMediaId = mediaId;
            return mInstance;
        }

        @Override
        public Builder setMetadata_impl(@Nullable MediaMetadata2 metadata) {
            mMetadata = metadata;
            return mInstance;
        }

        @Override
        public Builder setDataSourceDesc_impl(@NonNull DataSourceDesc dataSourceDesc) {
            if (dataSourceDesc == null) {
                throw new IllegalArgumentException("dataSourceDesc shouldn't be null");
            }
            mDataSourceDesc = dataSourceDesc;
            return mInstance;
        }

        @Override
        public MediaItem2 build_impl() {
            String id = (mMetadata != null)
                    ? mMetadata.getString(MediaMetadata2.METADATA_KEY_MEDIA_ID) : null;
            if (id == null) {
                //  TODO(jaewan): Double check if its sufficient (e.g. Use UUID instead?)
                id = (mMediaId != null) ? mMediaId : toString();
            }
            return new MediaItem2Impl(mContext, id, mDataSourceDesc, mMetadata, mFlags)
                    .getInstance();
        }
    }
}
+7 −7
Original line number Diff line number Diff line
@@ -226,9 +226,9 @@ public class ApiFactory implements StaticProvider {
    }

    @Override
    public MediaItem2Provider createMediaItem2(Context context, MediaItem2 instance,
            String mediaId, DataSourceDesc dsd, MediaMetadata2 metadata, int flags) {
        return new MediaItem2Impl(context, instance, mediaId, dsd, metadata, flags);
    public MediaItem2Provider.BuilderProvider createMediaItem2Builder(
            Context context, MediaItem2.Builder instance, int flags) {
        return new MediaItem2Impl.BuilderImpl(context, instance, flags);
    }

    @Override
@@ -249,14 +249,14 @@ public class ApiFactory implements StaticProvider {

    @Override
    public MediaMetadata2Provider.BuilderProvider createMediaMetadata2Builder(
            Context context, MediaMetadata2.Builder builder) {
        return new MediaMetadata2Impl.BuilderImpl(context, builder);
            Context context, MediaMetadata2.Builder instance) {
        return new MediaMetadata2Impl.BuilderImpl(context, instance);
    }

    @Override
    public MediaMetadata2Provider.BuilderProvider createMediaMetadata2Builder(
            Context context, MediaMetadata2.Builder builder, MediaMetadata2 source) {
        return new MediaMetadata2Impl.BuilderImpl(context, builder, source);
            Context context, MediaMetadata2.Builder instance, MediaMetadata2 source) {
        return new MediaMetadata2Impl.BuilderImpl(context, instance, source);
    }

    @Override
+7 −8
Original line number Diff line number Diff line
@@ -241,13 +241,12 @@ public class MockMediaLibraryService2 extends MediaLibraryService2 {

    private MediaItem2 createMediaItem(String mediaId) {
        Context context = MockMediaLibraryService2.this;
        return new MediaItem2(
                context,
                mediaId,
                DATA_SOURCE_DESC,
                new MediaMetadata2.Builder(context)
        return new MediaItem2.Builder(context, 0 /* Flags */)
                .setMediaId(mediaId)
                .setDataSourceDesc(DATA_SOURCE_DESC)
                .setMetadata(new MediaMetadata2.Builder(context)
                                .putString(MediaMetadata2.METADATA_KEY_MEDIA_ID, mediaId)
                        .build(),
                0 /* Flags */);
                                .build())
                .build();
    }
}