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

Commit d886267b authored by Silin Huang's avatar Silin Huang
Browse files

Add westworld log to quick access wallet UI.

Bug: 192604191
Test: atest WalletScreenControllerTest
Change-Id: Ia0ae73a5bff55e6d81d330f71a7c15179d2d9793
parent bae80e0d
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