Loading packages/SystemUI/src/com/android/systemui/wallet/ui/WalletActivity.java +11 −2 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ import android.widget.Toolbar; 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; Loading Loading @@ -70,6 +71,7 @@ public class WalletActivity extends LifecycleActivity implements private final UserTracker mUserTracker; private final KeyguardUpdateMonitor mKeyguardUpdateMonitor; private final StatusBarKeyguardViewManager mKeyguardViewManager; private final UiEventLogger mUiEventLogger; private KeyguardUpdateMonitorCallback mKeyguardUpdateMonitorCallback; private WalletScreenController mWalletScreenController; Loading @@ -87,7 +89,8 @@ public class WalletActivity extends LifecycleActivity implements FalsingCollector falsingCollector, UserTracker userTracker, KeyguardUpdateMonitor keyguardUpdateMonitor, StatusBarKeyguardViewManager keyguardViewManager) { StatusBarKeyguardViewManager keyguardViewManager, UiEventLogger uiEventLogger) { mKeyguardStateController = keyguardStateController; mKeyguardDismissUtil = keyguardDismissUtil; mActivityStarter = activityStarter; Loading @@ -98,6 +101,7 @@ public class WalletActivity extends LifecycleActivity implements mUserTracker = userTracker; mKeyguardUpdateMonitor = keyguardUpdateMonitor; mKeyguardViewManager = keyguardViewManager; mUiEventLogger = uiEventLogger; } @Override Loading Loading @@ -129,7 +133,8 @@ public class WalletActivity extends LifecycleActivity implements mUserTracker, mFalsingManager, mKeyguardUpdateMonitor, mKeyguardStateController); mKeyguardStateController, mUiEventLogger); mKeyguardUpdateMonitorCallback = new KeyguardUpdateMonitorCallback() { @Override public void onBiometricRunningStateChanged( Loading @@ -153,11 +158,14 @@ public class WalletActivity extends LifecycleActivity implements } 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(); Loading @@ -175,6 +183,7 @@ public class WalletActivity extends LifecycleActivity implements return; } mUiEventLogger.log(WalletUiEvent.QAW_UNLOCK_FROM_UNLOCK_BUTTON); mKeyguardDismissUtil.executeWhenUnlocked(() -> false, false, false); }); Loading packages/SystemUI/src/com/android/systemui/wallet/ui/WalletScreenController.java +15 −1 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ import android.widget.FrameLayout; 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; Loading Loading @@ -74,6 +75,7 @@ public class WalletScreenController implements private final WalletView mWalletView; private final WalletCardCarousel mCardCarousel; private final FalsingManager mFalsingManager; private final UiEventLogger mUiEventLogger; @VisibleForTesting String mSelectedCardId; @VisibleForTesting boolean mIsDismissed; Loading @@ -88,7 +90,8 @@ public class WalletScreenController implements UserTracker userTracker, FalsingManager falsingManager, KeyguardUpdateMonitor keyguardUpdateMonitor, KeyguardStateController keyguardStateController) { KeyguardStateController keyguardStateController, UiEventLogger uiEventLogger) { mContext = context; mWalletClient = walletClient; mActivityStarter = activityStarter; Loading @@ -97,6 +100,7 @@ public class WalletScreenController implements mFalsingManager = falsingManager; mKeyguardUpdateMonitor = keyguardUpdateMonitor; mKeyguardStateController = keyguardStateController; mUiEventLogger = uiEventLogger; mPrefs = userTracker.getUserContext().getSharedPreferences(TAG, Context.MODE_PRIVATE); mWalletView = walletView; mWalletView.setMinimumHeight(getExpectedMinHeight()); Loading Loading @@ -147,6 +151,7 @@ public class WalletScreenController implements isUdfpsEnabled); } } mUiEventLogger.log(WalletUiEvent.QAW_IMPRESSION); removeMinHeightAndRecordHeightOnLayout(); }); } Loading Loading @@ -180,6 +185,9 @@ public class WalletScreenController implements if (mIsDismissed) { return; } if (mSelectedCardId != null && !mSelectedCardId.equals(card.getCardId())) { mUiEventLogger.log(WalletUiEvent.QAW_CHANGE_CARD); } mSelectedCardId = card.getCardId(); selectCard(); } Loading Loading @@ -209,6 +217,12 @@ public class WalletScreenController implements || ((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); } Loading packages/SystemUI/src/com/android/systemui/wallet/ui/WalletUiEvent.java 0 → 100644 +58 −0 Original line number Diff line number Diff line /* * 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; } } packages/SystemUI/tests/src/com/android/systemui/wallet/ui/WalletScreenControllerTest.java +32 −1 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import static android.view.View.VISIBLE; 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; Loading @@ -43,6 +44,7 @@ import android.testing.TestableLooper; 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; Loading Loading @@ -91,6 +93,8 @@ public class WalletScreenControllerTest extends SysuiTestCase { KeyguardUpdateMonitor mKeyguardUpdateMonitor; @Mock KeyguardStateController mKeyguardStateController; @Mock UiEventLogger mUiEventLogger; @Captor ArgumentCaptor<Intent> mIntentCaptor; @Captor Loading Loading @@ -123,7 +127,8 @@ public class WalletScreenControllerTest extends SysuiTestCase { mUserTracker, mFalsingManager, mKeyguardUpdateMonitor, mKeyguardStateController); mKeyguardStateController, mUiEventLogger); } @Test Loading Loading @@ -172,6 +177,8 @@ public class WalletScreenControllerTest extends SysuiTestCase { callback.onWalletCardsRetrieved(response); mTestableLooper.processAllMessages(); verify(mUiEventLogger).log(WalletUiEvent.QAW_IMPRESSION); assertEquals(VISIBLE, mWalletView.getCardCarouselContainer().getVisibility()); assertEquals(VISIBLE, mWalletView.getActionButton().getVisibility()); } Loading @@ -198,6 +205,8 @@ public class WalletScreenControllerTest extends SysuiTestCase { 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 Loading Loading @@ -351,6 +360,14 @@ public class WalletScreenControllerTest extends SysuiTestCase { assertEquals(CARD_ID_1, mController.mSelectedCardId); } @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)); Loading @@ -361,6 +378,20 @@ public class WalletScreenControllerTest extends SysuiTestCase { 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 Loading Loading
packages/SystemUI/src/com/android/systemui/wallet/ui/WalletActivity.java +11 −2 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ import android.widget.Toolbar; 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; Loading Loading @@ -70,6 +71,7 @@ public class WalletActivity extends LifecycleActivity implements private final UserTracker mUserTracker; private final KeyguardUpdateMonitor mKeyguardUpdateMonitor; private final StatusBarKeyguardViewManager mKeyguardViewManager; private final UiEventLogger mUiEventLogger; private KeyguardUpdateMonitorCallback mKeyguardUpdateMonitorCallback; private WalletScreenController mWalletScreenController; Loading @@ -87,7 +89,8 @@ public class WalletActivity extends LifecycleActivity implements FalsingCollector falsingCollector, UserTracker userTracker, KeyguardUpdateMonitor keyguardUpdateMonitor, StatusBarKeyguardViewManager keyguardViewManager) { StatusBarKeyguardViewManager keyguardViewManager, UiEventLogger uiEventLogger) { mKeyguardStateController = keyguardStateController; mKeyguardDismissUtil = keyguardDismissUtil; mActivityStarter = activityStarter; Loading @@ -98,6 +101,7 @@ public class WalletActivity extends LifecycleActivity implements mUserTracker = userTracker; mKeyguardUpdateMonitor = keyguardUpdateMonitor; mKeyguardViewManager = keyguardViewManager; mUiEventLogger = uiEventLogger; } @Override Loading Loading @@ -129,7 +133,8 @@ public class WalletActivity extends LifecycleActivity implements mUserTracker, mFalsingManager, mKeyguardUpdateMonitor, mKeyguardStateController); mKeyguardStateController, mUiEventLogger); mKeyguardUpdateMonitorCallback = new KeyguardUpdateMonitorCallback() { @Override public void onBiometricRunningStateChanged( Loading @@ -153,11 +158,14 @@ public class WalletActivity extends LifecycleActivity implements } 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(); Loading @@ -175,6 +183,7 @@ public class WalletActivity extends LifecycleActivity implements return; } mUiEventLogger.log(WalletUiEvent.QAW_UNLOCK_FROM_UNLOCK_BUTTON); mKeyguardDismissUtil.executeWhenUnlocked(() -> false, false, false); }); Loading
packages/SystemUI/src/com/android/systemui/wallet/ui/WalletScreenController.java +15 −1 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ import android.widget.FrameLayout; 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; Loading Loading @@ -74,6 +75,7 @@ public class WalletScreenController implements private final WalletView mWalletView; private final WalletCardCarousel mCardCarousel; private final FalsingManager mFalsingManager; private final UiEventLogger mUiEventLogger; @VisibleForTesting String mSelectedCardId; @VisibleForTesting boolean mIsDismissed; Loading @@ -88,7 +90,8 @@ public class WalletScreenController implements UserTracker userTracker, FalsingManager falsingManager, KeyguardUpdateMonitor keyguardUpdateMonitor, KeyguardStateController keyguardStateController) { KeyguardStateController keyguardStateController, UiEventLogger uiEventLogger) { mContext = context; mWalletClient = walletClient; mActivityStarter = activityStarter; Loading @@ -97,6 +100,7 @@ public class WalletScreenController implements mFalsingManager = falsingManager; mKeyguardUpdateMonitor = keyguardUpdateMonitor; mKeyguardStateController = keyguardStateController; mUiEventLogger = uiEventLogger; mPrefs = userTracker.getUserContext().getSharedPreferences(TAG, Context.MODE_PRIVATE); mWalletView = walletView; mWalletView.setMinimumHeight(getExpectedMinHeight()); Loading Loading @@ -147,6 +151,7 @@ public class WalletScreenController implements isUdfpsEnabled); } } mUiEventLogger.log(WalletUiEvent.QAW_IMPRESSION); removeMinHeightAndRecordHeightOnLayout(); }); } Loading Loading @@ -180,6 +185,9 @@ public class WalletScreenController implements if (mIsDismissed) { return; } if (mSelectedCardId != null && !mSelectedCardId.equals(card.getCardId())) { mUiEventLogger.log(WalletUiEvent.QAW_CHANGE_CARD); } mSelectedCardId = card.getCardId(); selectCard(); } Loading Loading @@ -209,6 +217,12 @@ public class WalletScreenController implements || ((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); } Loading
packages/SystemUI/src/com/android/systemui/wallet/ui/WalletUiEvent.java 0 → 100644 +58 −0 Original line number Diff line number Diff line /* * 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; } }
packages/SystemUI/tests/src/com/android/systemui/wallet/ui/WalletScreenControllerTest.java +32 −1 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import static android.view.View.VISIBLE; 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; Loading @@ -43,6 +44,7 @@ import android.testing.TestableLooper; 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; Loading Loading @@ -91,6 +93,8 @@ public class WalletScreenControllerTest extends SysuiTestCase { KeyguardUpdateMonitor mKeyguardUpdateMonitor; @Mock KeyguardStateController mKeyguardStateController; @Mock UiEventLogger mUiEventLogger; @Captor ArgumentCaptor<Intent> mIntentCaptor; @Captor Loading Loading @@ -123,7 +127,8 @@ public class WalletScreenControllerTest extends SysuiTestCase { mUserTracker, mFalsingManager, mKeyguardUpdateMonitor, mKeyguardStateController); mKeyguardStateController, mUiEventLogger); } @Test Loading Loading @@ -172,6 +177,8 @@ public class WalletScreenControllerTest extends SysuiTestCase { callback.onWalletCardsRetrieved(response); mTestableLooper.processAllMessages(); verify(mUiEventLogger).log(WalletUiEvent.QAW_IMPRESSION); assertEquals(VISIBLE, mWalletView.getCardCarouselContainer().getVisibility()); assertEquals(VISIBLE, mWalletView.getActionButton().getVisibility()); } Loading @@ -198,6 +205,8 @@ public class WalletScreenControllerTest extends SysuiTestCase { 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 Loading Loading @@ -351,6 +360,14 @@ public class WalletScreenControllerTest extends SysuiTestCase { assertEquals(CARD_ID_1, mController.mSelectedCardId); } @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)); Loading @@ -361,6 +378,20 @@ public class WalletScreenControllerTest extends SysuiTestCase { 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 Loading