Add westworld log to quick access wallet UI.
Bug: 192604191
Test: atest WalletScreenControllerTest
Change-Id: Ia0ae73a5bff55e6d81d330f71a7c15179d2d9793
diff --git a/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletActivity.java b/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletActivity.java
index aa89984..2b4b49b 100644
--- a/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletActivity.java
+++ b/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletActivity.java
@@ -34,6 +34,7 @@
import androidx.annotation.NonNull;
+import com.android.internal.logging.UiEventLogger;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.keyguard.KeyguardUpdateMonitorCallback;
import com.android.settingslib.Utils;
@@ -70,6 +71,7 @@
private final UserTracker mUserTracker;
private final KeyguardUpdateMonitor mKeyguardUpdateMonitor;
private final StatusBarKeyguardViewManager mKeyguardViewManager;
+ private final UiEventLogger mUiEventLogger;
private KeyguardUpdateMonitorCallback mKeyguardUpdateMonitorCallback;
private WalletScreenController mWalletScreenController;
@@ -87,7 +89,8 @@
FalsingCollector falsingCollector,
UserTracker userTracker,
KeyguardUpdateMonitor keyguardUpdateMonitor,
- StatusBarKeyguardViewManager keyguardViewManager) {
+ StatusBarKeyguardViewManager keyguardViewManager,
+ UiEventLogger uiEventLogger) {
mKeyguardStateController = keyguardStateController;
mKeyguardDismissUtil = keyguardDismissUtil;
mActivityStarter = activityStarter;
@@ -98,6 +101,7 @@
mUserTracker = userTracker;
mKeyguardUpdateMonitor = keyguardUpdateMonitor;
mKeyguardViewManager = keyguardViewManager;
+ mUiEventLogger = uiEventLogger;
}
@Override
@@ -129,7 +133,8 @@
mUserTracker,
mFalsingManager,
mKeyguardUpdateMonitor,
- mKeyguardStateController);
+ mKeyguardStateController,
+ mUiEventLogger);
mKeyguardUpdateMonitorCallback = new KeyguardUpdateMonitorCallback() {
@Override
public void onBiometricRunningStateChanged(
@@ -153,11 +158,14 @@
}
if (mKeyguardStateController.isUnlocked()) {
+ mUiEventLogger.log(WalletUiEvent.QAW_SHOW_ALL);
mActivityStarter.startActivity(
mWalletClient.createWalletIntent(), true);
finish();
} else {
+ mUiEventLogger.log(WalletUiEvent.QAW_UNLOCK_FROM_SHOW_ALL_BUTTON);
mKeyguardDismissUtil.executeWhenUnlocked(() -> {
+ mUiEventLogger.log(WalletUiEvent.QAW_SHOW_ALL);
mActivityStarter.startActivity(
mWalletClient.createWalletIntent(), true);
finish();
@@ -175,6 +183,7 @@
return;
}
+ mUiEventLogger.log(WalletUiEvent.QAW_UNLOCK_FROM_UNLOCK_BUTTON);
mKeyguardDismissUtil.executeWhenUnlocked(() -> false, false,
false);
});
diff --git a/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletScreenController.java b/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletScreenController.java
index ab8ad77..2e183b3 100644
--- a/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletScreenController.java
+++ b/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletScreenController.java
@@ -39,6 +39,7 @@
import androidx.annotation.NonNull;
import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.logging.UiEventLogger;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.systemui.R;
import com.android.systemui.plugins.ActivityStarter;
@@ -74,6 +75,7 @@
private final WalletView mWalletView;
private final WalletCardCarousel mCardCarousel;
private final FalsingManager mFalsingManager;
+ private final UiEventLogger mUiEventLogger;
@VisibleForTesting String mSelectedCardId;
@VisibleForTesting boolean mIsDismissed;
@@ -88,7 +90,8 @@
UserTracker userTracker,
FalsingManager falsingManager,
KeyguardUpdateMonitor keyguardUpdateMonitor,
- KeyguardStateController keyguardStateController) {
+ KeyguardStateController keyguardStateController,
+ UiEventLogger uiEventLogger) {
mContext = context;
mWalletClient = walletClient;
mActivityStarter = activityStarter;
@@ -97,6 +100,7 @@
mFalsingManager = falsingManager;
mKeyguardUpdateMonitor = keyguardUpdateMonitor;
mKeyguardStateController = keyguardStateController;
+ mUiEventLogger = uiEventLogger;
mPrefs = userTracker.getUserContext().getSharedPreferences(TAG, Context.MODE_PRIVATE);
mWalletView = walletView;
mWalletView.setMinimumHeight(getExpectedMinHeight());
@@ -147,6 +151,7 @@
isUdfpsEnabled);
}
}
+ mUiEventLogger.log(WalletUiEvent.QAW_IMPRESSION);
removeMinHeightAndRecordHeightOnLayout();
});
}
@@ -180,6 +185,9 @@
if (mIsDismissed) {
return;
}
+ if (mSelectedCardId != null && !mSelectedCardId.equals(card.getCardId())) {
+ mUiEventLogger.log(WalletUiEvent.QAW_CHANGE_CARD);
+ }
mSelectedCardId = card.getCardId();
selectCard();
}
@@ -209,6 +217,12 @@
|| ((QAWalletCardViewInfo) cardInfo).mWalletCard.getPendingIntent() == null) {
return;
}
+
+ if (!mKeyguardStateController.isUnlocked()) {
+ mUiEventLogger.log(WalletUiEvent.QAW_UNLOCK_FROM_CARD_CLICK);
+ }
+ mUiEventLogger.log(WalletUiEvent.QAW_CLICK_CARD);
+
mActivityStarter.startActivity(
((QAWalletCardViewInfo) cardInfo).mWalletCard.getPendingIntent().getIntent(), true);
}
diff --git a/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletUiEvent.java b/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletUiEvent.java
new file mode 100644
index 0000000..da3a5c6
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletUiEvent.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.wallet.ui;
+
+import com.android.internal.logging.UiEvent;
+import com.android.internal.logging.UiEventLogger;
+
+/**
+ * Ui events for the Quick Access Wallet.
+ */
+public enum WalletUiEvent implements UiEventLogger.UiEventEnum {
+ @UiEvent(doc = "The default payment app is opened to show all payment cards.")
+ QAW_SHOW_ALL(860),
+
+ @UiEvent(doc = "The Quick Access Wallet homescreen is unlocked.")
+ QAW_UNLOCK_FROM_CARD_CLICK(861),
+
+ @UiEvent(doc = "The Quick Access Wallet center card is changed")
+ QAW_CHANGE_CARD(863),
+
+ @UiEvent(doc = "The Quick Access Wallet is opened.")
+ QAW_IMPRESSION(864),
+
+ @UiEvent(doc = "The Quick Access Wallet card is clicked")
+ QAW_CLICK_CARD(865),
+
+ @UiEvent(doc = "The Quick Access Wallet homescreen is unlocked via clicking the unlock button")
+ QAW_UNLOCK_FROM_UNLOCK_BUTTON(866),
+
+ @UiEvent(
+ doc = "The Quick Access Wallet homescreen is unlocked via clicking the show all button")
+ QAW_UNLOCK_FROM_SHOW_ALL_BUTTON(867);
+
+ private final int mId;
+
+ WalletUiEvent(int id) {
+ mId = id;
+ }
+
+ @Override
+ public int getId() {
+ return mId;
+ }
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/wallet/ui/WalletScreenControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/wallet/ui/WalletScreenControllerTest.java
index 3018089..e3b07b3 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/wallet/ui/WalletScreenControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/wallet/ui/WalletScreenControllerTest.java
@@ -22,6 +22,7 @@
import static org.junit.Assert.assertEquals;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -43,6 +44,7 @@
import androidx.test.filters.SmallTest;
+import com.android.internal.logging.UiEventLogger;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.plugins.ActivityStarter;
@@ -91,6 +93,8 @@
KeyguardUpdateMonitor mKeyguardUpdateMonitor;
@Mock
KeyguardStateController mKeyguardStateController;
+ @Mock
+ UiEventLogger mUiEventLogger;
@Captor
ArgumentCaptor<Intent> mIntentCaptor;
@Captor
@@ -123,7 +127,8 @@
mUserTracker,
mFalsingManager,
mKeyguardUpdateMonitor,
- mKeyguardStateController);
+ mKeyguardStateController,
+ mUiEventLogger);
}
@Test
@@ -172,6 +177,8 @@
callback.onWalletCardsRetrieved(response);
mTestableLooper.processAllMessages();
+ verify(mUiEventLogger).log(WalletUiEvent.QAW_IMPRESSION);
+
assertEquals(VISIBLE, mWalletView.getCardCarouselContainer().getVisibility());
assertEquals(VISIBLE, mWalletView.getActionButton().getVisibility());
}
@@ -198,6 +205,8 @@
assertEquals(VISIBLE, mWalletView.getCardCarouselContainer().getVisibility());
assertEquals("Hold to reader", mWalletView.getCardLabel().getText().toString());
assertEquals(GONE, mWalletView.getErrorView().getVisibility());
+
+ verify(mUiEventLogger, times(1)).log(WalletUiEvent.QAW_IMPRESSION);
}
@Test
@@ -352,6 +361,14 @@
}
@Test
+ public void logOnCardChanged() {
+ mController.onCardSelected(createCardViewInfo(createWalletCard(mContext)));
+ mController.onCardSelected(createCardViewInfo(createNonActiveWalletCard(mContext)));
+
+ verify(mUiEventLogger, times(1)).log(WalletUiEvent.QAW_CHANGE_CARD);
+ }
+
+ @Test
public void onCardClicked_startIntent() {
WalletCardViewInfo walletCardViewInfo = createCardViewInfo(createWalletCard(mContext));
@@ -361,6 +378,20 @@
assertEquals(mWalletIntent.getAction(), mIntentCaptor.getValue().getAction());
assertEquals(mWalletIntent.getComponent(), mIntentCaptor.getValue().getComponent());
+
+ verify(mUiEventLogger, times(1)).log(WalletUiEvent.QAW_CLICK_CARD);
+ }
+
+ @Test
+ public void onCardClicked_deviceLocked_logUnlockEvent() {
+ when(mKeyguardStateController.isUnlocked()).thenReturn(false);
+ WalletCardViewInfo walletCardViewInfo = createCardViewInfo(createWalletCard(mContext));
+
+ mController.onCardClicked(walletCardViewInfo);
+
+ verify(mUiEventLogger, times(1))
+ .log(WalletUiEvent.QAW_UNLOCK_FROM_CARD_CLICK);
+ verify(mUiEventLogger, times(1)).log(WalletUiEvent.QAW_CLICK_CARD);
}
@Test