182cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim/*
282cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim * Copyright (C) 2015 The Android Open Source Project
382cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim *
482cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim * Licensed under the Apache License, Version 2.0 (the "License");
582cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim * you may not use this file except in compliance with the License.
682cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim * You may obtain a copy of the License at
782cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim *
882cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim *      http://www.apache.org/licenses/LICENSE-2.0
982cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim *
1082cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim * Unless required by applicable law or agreed to in writing, software
1182cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim * distributed under the License is distributed on an "AS IS" BASIS,
1282cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1382cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim * See the License for the specific language governing permissions and
1482cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim * limitations under the License.
1582cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim */
1682cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim
1782cf659fd8dcc28e182274b17a401023ab879deaSungsoo Limpackage android.support.v4.media;
1882cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim
1982cf659fd8dcc28e182274b17a401023ab879deaSungsoo Limimport android.media.browse.MediaBrowser;
2082cf659fd8dcc28e182274b17a401023ab879deaSungsoo Limimport android.os.Parcel;
2182cf659fd8dcc28e182274b17a401023ab879deaSungsoo Limimport android.support.annotation.NonNull;
2282cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim
2382cf659fd8dcc28e182274b17a401023ab879deaSungsoo Limclass MediaBrowserCompatApi23 {
2482cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim
2582cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim    public static Object createItemCallback(ItemCallback callback) {
2682cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim        return new ItemCallbackProxy<>(callback);
2782cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim    }
2882cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim
2982cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim    public static void getItem(Object browserObj, String mediaId, Object itemCallbackObj) {
3082cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim        ((MediaBrowser) browserObj).getItem(mediaId, ((MediaBrowser.ItemCallback) itemCallbackObj));
3182cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim    }
3282cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim
3382cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim    interface ItemCallback {
3482cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim        void onItemLoaded(Parcel itemParcel);
3582cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim        void onError(@NonNull String itemId);
3682cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim    }
3782cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim
3882cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim    static class ItemCallbackProxy<T extends ItemCallback> extends MediaBrowser.ItemCallback {
3982cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim        protected final T mItemCallback;
4082cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim
4182cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim        public ItemCallbackProxy(T callback) {
4282cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim            mItemCallback = callback;
4382cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim        }
4482cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim
4582cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim        @Override
4682cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim        public void onItemLoaded(MediaBrowser.MediaItem item) {
4782cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim            Parcel parcel = Parcel.obtain();
4882cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim            item.writeToParcel(parcel, 0);
4982cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim            mItemCallback.onItemLoaded(parcel);
5082cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim        }
5182cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim
5282cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim        @Override
5382cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim        public void onError(@NonNull String itemId) {
5482cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim            mItemCallback.onError(itemId);
5582cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim        }
5682cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim    }
5782cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim}
58