Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 94544272 authored by Darrell Shi's avatar Darrell Shi Committed by Android (Google) Code Review
Browse files

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

parents 11f559ec 3d5e8a24
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -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 =
+12 −2
Original line number Original line Diff line number Diff line
@@ -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
+33 −7
Original line number Original line Diff line number Diff line
@@ -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();
    }
}
}