1fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang/*
2fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang * Copyright 2018 The Android Open Source Project
3fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang *
4fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang * Licensed under the Apache License, Version 2.0 (the "License");
5fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang * you may not use this file except in compliance with the License.
6fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang * You may obtain a copy of the License at
7fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang *
8fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang *      http://www.apache.org/licenses/LICENSE-2.0
9fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang *
10fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang * Unless required by applicable law or agreed to in writing, software
11fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang * distributed under the License is distributed on an "AS IS" BASIS,
12fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang * See the License for the specific language governing permissions and
14fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang * limitations under the License.
15fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang */
16fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang
17fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kangpackage androidx.media;
18fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang
19fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kangimport java.util.List;
20fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kangimport java.util.concurrent.CountDownLatch;
21fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang
22fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang/**
23fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang * A mock implementation of {@link MediaPlaylistAgent} for testing.
24fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang * <p>
25fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang * Do not use mockito for {@link MediaPlaylistAgent}. Instead, use this.
26fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang * Mocks created from mockito should not be shared across different threads.
27fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang */
28fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kangpublic class MockPlaylistAgent extends MediaPlaylistAgent {
29fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    public final CountDownLatch mCountDownLatch = new CountDownLatch(1);
30fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang
31fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    public List<MediaItem2> mPlaylist;
32fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    public MediaMetadata2 mMetadata;
333a151f1283d08b40c12e4a17903ba421f23c4342Hyundo Moon    public MediaItem2 mCurrentMediaItem;
34fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    public MediaItem2 mItem;
35fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    public int mIndex = -1;
36fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    public @RepeatMode int mRepeatMode = -1;
37fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    public @ShuffleMode int mShuffleMode = -1;
38fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang
39fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    public boolean mSetPlaylistCalled;
40fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    public boolean mUpdatePlaylistMetadataCalled;
41fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    public boolean mAddPlaylistItemCalled;
42fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    public boolean mRemovePlaylistItemCalled;
43fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    public boolean mReplacePlaylistItemCalled;
44fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    public boolean mSkipToPlaylistItemCalled;
45fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    public boolean mSkipToPreviousItemCalled;
46fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    public boolean mSkipToNextItemCalled;
47fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    public boolean mSetRepeatModeCalled;
48fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    public boolean mSetShuffleModeCalled;
49fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang
50fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    @Override
51fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    public List<MediaItem2> getPlaylist() {
52fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang        return mPlaylist;
53fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    }
54fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang
55fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    @Override
56fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    public void setPlaylist(List<MediaItem2> list, MediaMetadata2 metadata) {
57fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang        mSetPlaylistCalled = true;
58fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang        mPlaylist = list;
59fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang        mMetadata = metadata;
60fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang        mCountDownLatch.countDown();
61fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    }
62fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang
63fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    @Override
64fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    public MediaMetadata2 getPlaylistMetadata() {
65fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang        return mMetadata;
66fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    }
67fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang
68fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    @Override
69fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    public void updatePlaylistMetadata(MediaMetadata2 metadata) {
70fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang        mUpdatePlaylistMetadataCalled = true;
71fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang        mMetadata = metadata;
72fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang        mCountDownLatch.countDown();
73fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    }
74fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang
75fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    @Override
763a151f1283d08b40c12e4a17903ba421f23c4342Hyundo Moon    public MediaItem2 getCurrentMediaItem() {
773a151f1283d08b40c12e4a17903ba421f23c4342Hyundo Moon        return mCurrentMediaItem;
783a151f1283d08b40c12e4a17903ba421f23c4342Hyundo Moon    }
793a151f1283d08b40c12e4a17903ba421f23c4342Hyundo Moon
803a151f1283d08b40c12e4a17903ba421f23c4342Hyundo Moon    @Override
81fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    public void addPlaylistItem(int index, MediaItem2 item) {
82fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang        mAddPlaylistItemCalled = true;
83fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang        mIndex = index;
84fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang        mItem = item;
85fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang        mCountDownLatch.countDown();
86fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    }
87fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang
88fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    @Override
89fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    public void removePlaylistItem(MediaItem2 item) {
90fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang        mRemovePlaylistItemCalled = true;
91fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang        mItem = item;
92fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang        mCountDownLatch.countDown();
93fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    }
94fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang
95fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    @Override
96fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    public void replacePlaylistItem(int index, MediaItem2 item) {
97fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang        mReplacePlaylistItemCalled = true;
98fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang        mIndex = index;
99fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang        mItem = item;
100fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang        mCountDownLatch.countDown();
101fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    }
102fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang
103fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    @Override
104fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    public void skipToPlaylistItem(MediaItem2 item) {
105fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang        mSkipToPlaylistItemCalled = true;
106fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang        mItem = item;
107fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang        mCountDownLatch.countDown();
108fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    }
109fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang
110fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    @Override
111fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    public void skipToPreviousItem() {
112fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang        mSkipToPreviousItemCalled = true;
113fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang        mCountDownLatch.countDown();
114fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    }
115fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang
116fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    @Override
117fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    public void skipToNextItem() {
118fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang        mSkipToNextItemCalled = true;
119fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang        mCountDownLatch.countDown();
120fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    }
121fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang
122fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    @Override
123fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    public int getRepeatMode() {
124fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang        return mRepeatMode;
125fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    }
126fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang
127fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    @Override
128fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    public void setRepeatMode(int repeatMode) {
129fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang        mSetRepeatModeCalled = true;
130fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang        mRepeatMode = repeatMode;
131fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang        mCountDownLatch.countDown();
132fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    }
133fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang
134fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    @Override
135fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    public int getShuffleMode() {
136fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang        return mShuffleMode;
137fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    }
138fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang
139fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    @Override
140fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    public void setShuffleMode(int shuffleMode) {
141fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang        mSetShuffleModeCalled = true;
142fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang        mShuffleMode = shuffleMode;
143fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang        mCountDownLatch.countDown();
144fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang    }
145fbbf807584a0fbe7a01a0aa9920330cad45689aaInsun Kang}
146