From b421a49c010e924eae6b8ceaee275ce051a75e7d Mon Sep 17 00:00:00 2001 From: Beth Thibodeau Date: Wed, 1 Jul 2020 11:00:02 -0400 Subject: [PATCH] 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 --- .../systemui/media/MediaDataCombineLatest.kt | 4 ++-- .../systemui/media/MediaDataCombineLatestTest.java | 13 +++++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaDataCombineLatest.kt b/packages/SystemUI/src/com/android/systemui/media/MediaDataCombineLatest.kt index 0904ebccd4142..e8f0e069c98d9 100644 --- a/packages/SystemUI/src/com/android/systemui/media/MediaDataCombineLatest.kt +++ b/packages/SystemUI/src/com/android/systemui/media/MediaDataCombineLatest.kt @@ -62,9 +62,9 @@ class MediaDataCombineLatest @Inject constructor( */ fun getData(): Map { 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) } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/MediaDataCombineLatestTest.java b/packages/SystemUI/tests/src/com/android/systemui/media/MediaDataCombineLatestTest.java index 5d4693d3ccf81..dbc5596d9f4eb 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/media/MediaDataCombineLatestTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/media/MediaDataCombineLatestTest.java @@ -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 results = mManager.getData(); + assertThat(results.get(KEY)).isNotNull(); + assertThat(results.get(KEY).getDevice()).isEqualTo(mDeviceData); + } + private MediaDataManager.Listener captureDataListener() { ArgumentCaptor captor = ArgumentCaptor.forClass( MediaDataManager.Listener.class);