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

Commit c7877dbc authored by Xiaowen Lei's avatar Xiaowen Lei
Browse files

Add logging for tapping on Dream Home Controls complication.

Bug: 244332837
Fix: 244332837
Test: Manually on device via `statsd_testdrive 90`
Test: atest DreamHomeControlsComplicationTest
Change-Id: I4c2ac988b875a89faf8fa09e43571166d99523cb
parent 384756a6
Loading
Loading
Loading
Loading
+27 −1
Original line number Diff line number Diff line
@@ -28,6 +28,9 @@ import android.util.Log;
import android.view.View;
import android.widget.ImageView;

import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.logging.UiEvent;
import com.android.internal.logging.UiEventLogger;
import com.android.systemui.CoreStartable;
import com.android.systemui.animation.ActivityLaunchAnimator;
import com.android.systemui.controls.dagger.ControlsComponent;
@@ -158,17 +161,38 @@ public class DreamHomeControlsComplication implements Complication {
        private final Context mContext;
        private final ControlsComponent mControlsComponent;

        private final UiEventLogger mUiEventLogger;

        @VisibleForTesting
        public enum DreamOverlayEvent implements UiEventLogger.UiEventEnum {
            @UiEvent(doc = "The home controls on the screensaver has been tapped.")
            DREAM_HOME_CONTROLS_TAPPED(1212);

            private final int mId;

            DreamOverlayEvent(int id) {
                mId = id;
            }

            @Override
            public int getId() {
                return mId;
            }
        }

        @Inject
        DreamHomeControlsChipViewController(
                @Named(DREAM_HOME_CONTROLS_CHIP_VIEW) ImageView view,
                ActivityStarter activityStarter,
                Context context,
                ControlsComponent controlsComponent) {
                ControlsComponent controlsComponent,
                UiEventLogger uiEventLogger) {
            super(view);

            mActivityStarter = activityStarter;
            mContext = context;
            mControlsComponent = controlsComponent;
            mUiEventLogger = uiEventLogger;
        }

        @Override
@@ -184,6 +208,8 @@ public class DreamHomeControlsComplication implements Complication {
        private void onClickHomeControls(View v) {
            if (DEBUG) Log.d(TAG, "home controls complication tapped");

            mUiEventLogger.log(DreamOverlayEvent.DREAM_HOME_CONTROLS_TAPPED);

            final Intent intent = new Intent(mContext, ControlsActivity.class)
                    .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK)
                    .putExtra(ControlsUiController.EXTRA_ANIMATE, true);
+37 −0
Original line number Diff line number Diff line
@@ -29,9 +29,12 @@ import static org.mockito.Mockito.when;

import android.content.Context;
import android.testing.AndroidTestingRunner;
import android.view.View;
import android.widget.ImageView;

import androidx.test.filters.SmallTest;

import com.android.internal.logging.UiEventLogger;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.controls.ControlsServiceInfo;
import com.android.systemui.controls.controller.ControlsController;
@@ -40,6 +43,7 @@ import com.android.systemui.controls.dagger.ControlsComponent;
import com.android.systemui.controls.management.ControlsListingController;
import com.android.systemui.dreams.DreamOverlayStateController;
import com.android.systemui.dreams.complication.dagger.DreamHomeControlsComplicationComponent;
import com.android.systemui.plugins.ActivityStarter;

import org.junit.Before;
import org.junit.Test;
@@ -79,6 +83,15 @@ public class DreamHomeControlsComplicationTest extends SysuiTestCase {
    @Captor
    private ArgumentCaptor<ControlsListingController.ControlsListingCallback> mCallbackCaptor;

    @Mock
    private ImageView mView;

    @Mock
    private ActivityStarter mActivityStarter;

    @Mock
    UiEventLogger mUiEventLogger;

    @Before
    public void setup() {
        MockitoAnnotations.initMocks(this);
@@ -151,6 +164,30 @@ public class DreamHomeControlsComplicationTest extends SysuiTestCase {
        verify(mDreamOverlayStateController).addComplication(mComplication);
    }

    /**
     * Ensures clicking home controls chip logs UiEvent.
     */
    @Test
    public void testClick_logsUiEvent() {
        final DreamHomeControlsComplication.DreamHomeControlsChipViewController viewController =
                new DreamHomeControlsComplication.DreamHomeControlsChipViewController(
                        mView,
                        mActivityStarter,
                        mContext,
                        mControlsComponent,
                        mUiEventLogger);
        viewController.onViewAttached();

        final ArgumentCaptor<View.OnClickListener> clickListenerCaptor =
                ArgumentCaptor.forClass(View.OnClickListener.class);
        verify(mView).setOnClickListener(clickListenerCaptor.capture());

        clickListenerCaptor.getValue().onClick(mView);
        verify(mUiEventLogger).log(
                DreamHomeControlsComplication.DreamHomeControlsChipViewController
                        .DreamOverlayEvent.DREAM_HOME_CONTROLS_TAPPED);
    }

    private void setHaveFavorites(boolean value) {
        final List<StructureInfo> favorites = mock(List.class);
        when(favorites.isEmpty()).thenReturn(!value);