Merge "Hide UMO on dreams behind a feature flag." into tm-qpr-dev

This commit is contained in:
Darrell Shi
2022-08-22 14:15:10 +00:00
committed by Android (Google) Code Review
3 changed files with 46 additions and 9 deletions

View File

@@ -179,6 +179,7 @@ public class Flags {
public static final UnreleasedFlag MEDIA_SESSION_ACTIONS = new UnreleasedFlag(901); public static final UnreleasedFlag MEDIA_SESSION_ACTIONS = new UnreleasedFlag(901);
public static final ReleasedFlag MEDIA_NEARBY_DEVICES = new ReleasedFlag(903); public static final ReleasedFlag MEDIA_NEARBY_DEVICES = new ReleasedFlag(903);
public static final ReleasedFlag MEDIA_MUTE_AWAIT = new ReleasedFlag(904); public static final ReleasedFlag MEDIA_MUTE_AWAIT = new ReleasedFlag(904);
public static final UnreleasedFlag MEDIA_DREAM_COMPLICATION = new UnreleasedFlag(905);
// 1000 - dock // 1000 - dock
public static final ReleasedFlag SIMULATE_DOCK_THROUGH_CHARGING = public static final ReleasedFlag SIMULATE_DOCK_THROUGH_CHARGING =

View File

@@ -16,6 +16,8 @@
package com.android.systemui.media.dream; package com.android.systemui.media.dream;
import static com.android.systemui.flags.Flags.MEDIA_DREAM_COMPLICATION;
import android.content.Context; import android.content.Context;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
@@ -23,6 +25,7 @@ import androidx.annotation.Nullable;
import com.android.systemui.CoreStartable; import com.android.systemui.CoreStartable;
import com.android.systemui.dreams.DreamOverlayStateController; import com.android.systemui.dreams.DreamOverlayStateController;
import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.media.MediaData; import com.android.systemui.media.MediaData;
import com.android.systemui.media.MediaDataManager; import com.android.systemui.media.MediaDataManager;
import com.android.systemui.media.SmartspaceMediaData; import com.android.systemui.media.SmartspaceMediaData;
@@ -34,7 +37,7 @@ import javax.inject.Inject;
* the media complication as appropriate * the media complication as appropriate
*/ */
public class MediaDreamSentinel extends CoreStartable { public class MediaDreamSentinel extends CoreStartable {
private MediaDataManager.Listener mListener = new MediaDataManager.Listener() { private final MediaDataManager.Listener mListener = new MediaDataManager.Listener() {
private boolean mAdded; private boolean mAdded;
@Override @Override
public void onSmartspaceMediaDataRemoved(@NonNull String key, boolean immediately) { public void onSmartspaceMediaDataRemoved(@NonNull String key, boolean immediately) {
@@ -63,6 +66,10 @@ public class MediaDreamSentinel extends CoreStartable {
public void onMediaDataLoaded(@NonNull String key, @Nullable String oldKey, public void onMediaDataLoaded(@NonNull String key, @Nullable String oldKey,
@NonNull MediaData data, boolean immediately, int receivedSmartspaceCardLatency, @NonNull MediaData data, boolean immediately, int receivedSmartspaceCardLatency,
boolean isSsReactivated) { boolean isSsReactivated) {
if (!mFeatureFlags.isEnabled(MEDIA_DREAM_COMPLICATION)) {
return;
}
if (mAdded) { if (mAdded) {
return; return;
} }
@@ -79,15 +86,18 @@ public class MediaDreamSentinel extends CoreStartable {
private final MediaDataManager mMediaDataManager; private final MediaDataManager mMediaDataManager;
private final DreamOverlayStateController mDreamOverlayStateController; private final DreamOverlayStateController mDreamOverlayStateController;
private final MediaDreamComplication mComplication; private final MediaDreamComplication mComplication;
private final FeatureFlags mFeatureFlags;
@Inject @Inject
public MediaDreamSentinel(Context context, MediaDataManager mediaDataManager, public MediaDreamSentinel(Context context, MediaDataManager mediaDataManager,
DreamOverlayStateController dreamOverlayStateController, DreamOverlayStateController dreamOverlayStateController,
MediaDreamComplication complication) { MediaDreamComplication complication,
FeatureFlags featureFlags) {
super(context); super(context);
mMediaDataManager = mediaDataManager; mMediaDataManager = mediaDataManager;
mDreamOverlayStateController = dreamOverlayStateController; mDreamOverlayStateController = dreamOverlayStateController;
mComplication = complication; mComplication = complication;
mFeatureFlags = featureFlags;
} }
@Override @Override

View File

@@ -16,6 +16,8 @@
package com.android.systemui.media.dream; package com.android.systemui.media.dream;
import static com.android.systemui.flags.Flags.MEDIA_DREAM_COMPLICATION;
import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq; import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.never; import static org.mockito.Mockito.never;
@@ -28,6 +30,7 @@ import androidx.test.filters.SmallTest;
import com.android.systemui.SysuiTestCase; import com.android.systemui.SysuiTestCase;
import com.android.systemui.dreams.DreamOverlayStateController; import com.android.systemui.dreams.DreamOverlayStateController;
import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.media.MediaData; import com.android.systemui.media.MediaData;
import com.android.systemui.media.MediaDataManager; import com.android.systemui.media.MediaDataManager;
@@ -50,6 +53,9 @@ public class MediaDreamSentinelTest extends SysuiTestCase {
@Mock @Mock
MediaDreamComplication mComplication; MediaDreamComplication mComplication;
@Mock
FeatureFlags mFeatureFlags;
final String mKey = "key"; final String mKey = "key";
final String mOldKey = "old_key"; final String mOldKey = "old_key";
@@ -59,21 +65,18 @@ public class MediaDreamSentinelTest extends SysuiTestCase {
@Before @Before
public void setup() { public void setup() {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
when(mFeatureFlags.isEnabled(MEDIA_DREAM_COMPLICATION)).thenReturn(true);
} }
@Test @Test
public void testComplicationAddition() { public void testComplicationAddition() {
final MediaDreamSentinel sentinel = new MediaDreamSentinel(mContext, mMediaDataManager, final MediaDreamSentinel sentinel = new MediaDreamSentinel(mContext, mMediaDataManager,
mDreamOverlayStateController, mComplication); mDreamOverlayStateController, mComplication, mFeatureFlags);
sentinel.start(); sentinel.start();
ArgumentCaptor<MediaDataManager.Listener> listenerCaptor = final MediaDataManager.Listener listener = captureMediaDataListener();
ArgumentCaptor.forClass(MediaDataManager.Listener.class);
verify(mMediaDataManager).addListener(listenerCaptor.capture());
final MediaDataManager.Listener listener = listenerCaptor.getValue();
when(mMediaDataManager.hasActiveMedia()).thenReturn(false); when(mMediaDataManager.hasActiveMedia()).thenReturn(false);
listener.onMediaDataLoaded(mKey, mOldKey, mData, /* immediately= */ true, listener.onMediaDataLoaded(mKey, mOldKey, mData, /* immediately= */ true,
/* receivedSmartspaceCardLatency= */ 0, /* isSsReactived= */ false); /* receivedSmartspaceCardLatency= */ 0, /* isSsReactived= */ false);
@@ -92,4 +95,27 @@ public class MediaDreamSentinelTest extends SysuiTestCase {
verify(mDreamOverlayStateController).removeComplication(eq(mComplication)); verify(mDreamOverlayStateController).removeComplication(eq(mComplication));
} }
@Test
public void testMediaDreamSentinel_mediaComplicationDisabled_doNotAddComplication() {
when(mFeatureFlags.isEnabled(MEDIA_DREAM_COMPLICATION)).thenReturn(false);
final MediaDreamSentinel sentinel = new MediaDreamSentinel(mContext, mMediaDataManager,
mDreamOverlayStateController, mComplication, mFeatureFlags);
sentinel.start();
final MediaDataManager.Listener listener = captureMediaDataListener();
when(mMediaDataManager.hasActiveMedia()).thenReturn(true);
listener.onMediaDataLoaded(mKey, mOldKey, mData, /* immediately= */true,
/* receivedSmartspaceCardLatency= */0, /* isSsReactived= */ false);
verify(mDreamOverlayStateController, never()).addComplication(any());
}
private MediaDataManager.Listener captureMediaDataListener() {
final ArgumentCaptor<MediaDataManager.Listener> listenerCaptor =
ArgumentCaptor.forClass(MediaDataManager.Listener.class);
verify(mMediaDataManager).addListener(listenerCaptor.capture());
return listenerCaptor.getValue();
}
} }