diff options
2 files changed, 64 insertions, 1 deletions
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 2503d3c3edad..821e13ef733c 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 04ff7aed480d..db6082d52501 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<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); |