Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2c8c799b authored by Silin Huang's avatar Silin Huang Committed by Automerger Merge Worker
Browse files

Merge "Add westworld log to quick access wallet UI." into sc-dev am: bceb8dc9

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15190472

Change-Id: I8c2313c61d69e2ec93219489525e154f2ba78b86
parents 9d81fc0b bceb8dc9
Loading
Loading
Loading
Loading
+11 −2
Original line number Diff line number Diff line
@@ -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);
                });
+15 −1
Original line number Diff line number Diff line
@@ -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);
    }
+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;
    }
}
+32 −1
Original line number Diff line number Diff line
@@ -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