blob: fd693092ca99eb83e2e993db87df06f043dddd01 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
|
/*
* Copyright 2018 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.media;
import android.media.MediaSession2.PlaylistParam;
import android.media.session.PlaybackState;
import android.os.Handler;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.Executor;
/**
* A mock implementation of {@link MediaPlayerBase} for testing.
*/
public class MockPlayer extends MediaPlayerBase {
public final CountDownLatch mCountDownLatch;
public boolean mPlayCalled;
public boolean mPauseCalled;
public boolean mStopCalled;
public boolean mSkipToPreviousCalled;
public boolean mSkipToNextCalled;
public List<PlaybackListenerHolder> mListeners = new ArrayList<>();
private PlaybackState2 mLastPlaybackState;
public MockPlayer(int count) {
mCountDownLatch = (count > 0) ? new CountDownLatch(count) : null;
}
@Override
public void play() {
mPlayCalled = true;
if (mCountDownLatch != null) {
mCountDownLatch.countDown();
}
}
@Override
public void pause() {
mPauseCalled = true;
if (mCountDownLatch != null) {
mCountDownLatch.countDown();
}
}
@Override
public void stop() {
mStopCalled = true;
if (mCountDownLatch != null) {
mCountDownLatch.countDown();
}
}
@Override
public void skipToPrevious() {
mSkipToPreviousCalled = true;
if (mCountDownLatch != null) {
mCountDownLatch.countDown();
}
}
@Override
public void skipToNext() {
mSkipToNextCalled = true;
if (mCountDownLatch != null) {
mCountDownLatch.countDown();
}
}
@Nullable
@Override
public PlaybackState2 getPlaybackState() {
return mLastPlaybackState;
}
@Override
public void addPlaybackListener(@NonNull Executor executor,
@NonNull PlaybackListener listener) {
mListeners.add(new PlaybackListenerHolder(executor, listener));
}
@Override
public void removePlaybackListener(@NonNull PlaybackListener listener) {
int index = PlaybackListenerHolder.indexOf(mListeners, listener);
if (index >= 0) {
mListeners.remove(index);
}
}
public void notifyPlaybackState(final PlaybackState2 state) {
mLastPlaybackState = state;
for (int i = 0; i < mListeners.size(); i++) {
mListeners.get(i).postPlaybackChange(state);
}
}
// No-op. Should be added for test later.
@Override
public void prepare() {
}
@Override
public void seekTo(long pos) {
}
@Override
public void fastFoward() {
}
@Override
public void rewind() {
}
@Override
public AudioAttributes getAudioAttributes() {
return null;
}
@Override
public void setPlaylist(List<MediaItem2> item, PlaylistParam param) {
}
@Override
public void setCurrentPlaylistItem(int index) {
}
}
|