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