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

Commit 4aa6c85e authored by Bryce Lee's avatar Bryce Lee Committed by Automerger Merge Worker
Browse files

Merge "Use DreamManager to get initial state." into tm-qpr-dev am: b1a1dc4d...

Merge "Use DreamManager to get initial state." into tm-qpr-dev am: b1a1dc4d am: 87c8b76d am: 47b9bcee

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/22129027



Change-Id: I629d4b0ba6397f4a7aec149b08bd9dcb5e101b9d
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 3a6aba04 47b9bcee
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@
 */
package com.android.systemui.dreams.conditions;

import android.app.DreamManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
@@ -30,6 +31,7 @@ import javax.inject.Inject;
 */
public class DreamCondition extends Condition {
    private final Context mContext;
    private final DreamManager mDreamManager;

    private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
        @Override
@@ -39,8 +41,10 @@ public class DreamCondition extends Condition {
    };

    @Inject
    public DreamCondition(Context context) {
    public DreamCondition(Context context,
            DreamManager dreamManager) {
        mContext = context;
        mDreamManager = dreamManager;
    }

    private void processIntent(Intent intent) {
@@ -62,8 +66,8 @@ public class DreamCondition extends Condition {
        final IntentFilter filter = new IntentFilter();
        filter.addAction(Intent.ACTION_DREAMING_STARTED);
        filter.addAction(Intent.ACTION_DREAMING_STOPPED);
        final Intent stickyIntent = mContext.registerReceiver(mReceiver, filter);
        processIntent(stickyIntent);
        mContext.registerReceiver(mReceiver, filter);
        updateCondition(mDreamManager.isDreaming());
    }

    @Override
+24 −9
Original line number Diff line number Diff line
@@ -21,9 +21,11 @@ import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.clearInvocations;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import android.app.DreamManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
@@ -50,6 +52,9 @@ public class DreamConditionTest extends SysuiTestCase {
    @Mock
    Condition.Callback mCallback;

    @Mock
    DreamManager mDreamManager;

    @Before
    public void setup() {
        MockitoAnnotations.initMocks(this);
@@ -59,29 +64,39 @@ public class DreamConditionTest extends SysuiTestCase {
     * Ensure a dreaming state immediately triggers the condition.
     */
    @Test
    public void testInitialState() {
        final Intent intent = new Intent(Intent.ACTION_DREAMING_STARTED);
        when(mContext.registerReceiver(any(), any())).thenReturn(intent);
        final DreamCondition condition = new DreamCondition(mContext);
    public void testInitialDreamingState() {
        when(mDreamManager.isDreaming()).thenReturn(true);
        final DreamCondition condition = new DreamCondition(mContext, mDreamManager);
        condition.addCallback(mCallback);
        condition.start();

        verify(mCallback).onConditionChanged(eq(condition));
        assertThat(condition.isConditionMet()).isTrue();
    }

    /**
     * Ensure a non-dreaming state does not trigger the condition.
     */
    @Test
    public void testInitialNonDreamingState() {
        when(mDreamManager.isDreaming()).thenReturn(false);
        final DreamCondition condition = new DreamCondition(mContext, mDreamManager);
        condition.addCallback(mCallback);

        verify(mCallback, never()).onConditionChanged(eq(condition));
        assertThat(condition.isConditionMet()).isFalse();
    }

    /**
     * Ensure that changing dream state triggers condition.
     */
    @Test
    public void testChange() {
        final Intent intent = new Intent(Intent.ACTION_DREAMING_STARTED);
        final ArgumentCaptor<BroadcastReceiver> receiverCaptor =
                ArgumentCaptor.forClass(BroadcastReceiver.class);
        when(mContext.registerReceiver(receiverCaptor.capture(), any())).thenReturn(intent);
        final DreamCondition condition = new DreamCondition(mContext);
        when(mDreamManager.isDreaming()).thenReturn(true);
        final DreamCondition condition = new DreamCondition(mContext, mDreamManager);
        condition.addCallback(mCallback);
        condition.start();
        verify(mContext).registerReceiver(receiverCaptor.capture(), any());
        clearInvocations(mCallback);
        receiverCaptor.getValue().onReceive(mContext, new Intent(Intent.ACTION_DREAMING_STOPPED));
        verify(mCallback).onConditionChanged(eq(condition));