Merge "Add westworld log to quick access wallet UI." into sc-dev am: bceb8dc9b0 am: 2c8c799bdf
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15190472 Change-Id: I24c6ecaf481e35713b76bd0147ba33f0bbfe5567
This commit is contained in:
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -98,6 +101,7 @@ public class WalletActivity extends LifecycleActivity implements
|
||||
mUserTracker = userTracker;
|
||||
mKeyguardUpdateMonitor = keyguardUpdateMonitor;
|
||||
mKeyguardViewManager = keyguardViewManager;
|
||||
mUiEventLogger = uiEventLogger;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -129,7 +133,8 @@ public class WalletActivity extends LifecycleActivity implements
|
||||
mUserTracker,
|
||||
mFalsingManager,
|
||||
mKeyguardUpdateMonitor,
|
||||
mKeyguardStateController);
|
||||
mKeyguardStateController,
|
||||
mUiEventLogger);
|
||||
mKeyguardUpdateMonitorCallback = new KeyguardUpdateMonitorCallback() {
|
||||
@Override
|
||||
public void onBiometricRunningStateChanged(
|
||||
@@ -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();
|
||||
@@ -175,6 +183,7 @@ public class WalletActivity extends LifecycleActivity implements
|
||||
return;
|
||||
}
|
||||
|
||||
mUiEventLogger.log(WalletUiEvent.QAW_UNLOCK_FROM_UNLOCK_BUTTON);
|
||||
mKeyguardDismissUtil.executeWhenUnlocked(() -> false, false,
|
||||
false);
|
||||
});
|
||||
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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());
|
||||
@@ -147,6 +151,7 @@ public class WalletScreenController implements
|
||||
isUdfpsEnabled);
|
||||
}
|
||||
}
|
||||
mUiEventLogger.log(WalletUiEvent.QAW_IMPRESSION);
|
||||
removeMinHeightAndRecordHeightOnLayout();
|
||||
});
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
@@ -91,6 +93,8 @@ public class WalletScreenControllerTest extends SysuiTestCase {
|
||||
KeyguardUpdateMonitor mKeyguardUpdateMonitor;
|
||||
@Mock
|
||||
KeyguardStateController mKeyguardStateController;
|
||||
@Mock
|
||||
UiEventLogger mUiEventLogger;
|
||||
@Captor
|
||||
ArgumentCaptor<Intent> mIntentCaptor;
|
||||
@Captor
|
||||
@@ -123,7 +127,8 @@ public class WalletScreenControllerTest extends SysuiTestCase {
|
||||
mUserTracker,
|
||||
mFalsingManager,
|
||||
mKeyguardUpdateMonitor,
|
||||
mKeyguardStateController);
|
||||
mKeyguardStateController,
|
||||
mUiEventLogger);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -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());
|
||||
}
|
||||
@@ -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
|
||||
@@ -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));
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user