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