From c7877dbc12dae4a4409c170dce13c9ed7fdc6bf4 Mon Sep 17 00:00:00 2001 From: Xiaowen Lei Date: Fri, 16 Sep 2022 05:05:35 +0000 Subject: [PATCH] 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 --- .../DreamHomeControlsComplication.java | 28 +++++++++++++- .../DreamHomeControlsComplicationTest.java | 37 +++++++++++++++++++ 2 files changed, 64 insertions(+), 1 deletion(-) diff --git a/packages/SystemUI/src/com/android/systemui/dreams/complication/DreamHomeControlsComplication.java b/packages/SystemUI/src/com/android/systemui/dreams/complication/DreamHomeControlsComplication.java index 2503d3c3edad7..821e13ef733c7 100644 --- a/packages/SystemUI/src/com/android/systemui/dreams/complication/DreamHomeControlsComplication.java +++ b/packages/SystemUI/src/com/android/systemui/dreams/complication/DreamHomeControlsComplication.java @@ -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); diff --git a/packages/SystemUI/tests/src/com/android/systemui/dreams/complication/DreamHomeControlsComplicationTest.java b/packages/SystemUI/tests/src/com/android/systemui/dreams/complication/DreamHomeControlsComplicationTest.java index 04ff7aed480db..db6082d52501f 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/dreams/complication/DreamHomeControlsComplicationTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/dreams/complication/DreamHomeControlsComplicationTest.java @@ -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 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 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 favorites = mock(List.class); when(favorites.isEmpty()).thenReturn(!value);