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