Add device info for filtered players

Following up on ag/12037671 - MediaDataFilter uses getData when the user
changes, to get a list of all their previous media controls, so we need to put
the device data back too

Test: atest MediaDataCombineLatestTest
Test: manual, switch users and see output chip has device info
Bug: 12037671
Change-Id: I28e2d15919978e84e3205d2ddccb5024e4010247
This commit is contained in:
Beth Thibodeau
2020-07-01 11:00:02 -04:00
parent c73cddc46e
commit b421a49c01
2 changed files with 15 additions and 2 deletions

View File

@@ -62,9 +62,9 @@ class MediaDataCombineLatest @Inject constructor(
*/
fun getData(): Map<String, MediaData> {
return entries.filter {
(key, pair) -> pair.first != null
(key, pair) -> pair.first != null && pair.second != null
}.mapValues {
(key, pair) -> pair.first!!
(key, pair) -> pair.first!!.copy(device = pair.second)
}
}

View File

@@ -39,6 +39,7 @@ import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import java.util.ArrayList;
import java.util.Map;
@SmallTest
@RunWith(AndroidTestingRunner.class)
@@ -159,6 +160,18 @@ public class MediaDataCombineLatestTest extends SysuiTestCase {
verify(mListener).onMediaDataLoaded(eq("NEW_KEY"), any(), captor.capture());
}
@Test
public void getDataIncludesDevice() {
// GIVEN that device and media events have been received
mDeviceListener.onMediaDeviceChanged(KEY, mDeviceData);
mDataListener.onMediaDataLoaded(KEY, null, mMediaData);
// THEN the result of getData includes device info
Map<String, MediaData> results = mManager.getData();
assertThat(results.get(KEY)).isNotNull();
assertThat(results.get(KEY).getDevice()).isEqualTo(mDeviceData);
}
private MediaDataManager.Listener captureDataListener() {
ArgumentCaptor<MediaDataManager.Listener> captor = ArgumentCaptor.forClass(
MediaDataManager.Listener.class);