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