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

Commit aea07dc9 authored by Ruchi Kandoi's avatar Ruchi Kandoi
Browse files

Add metric for Tap & Pay Foreground Setting

Bug: 111458041
Test: atest NfcForegroundPreferenceControllerTest
Change-Id: I090c223b65858535cc70e61820dc5d077de99a40
parent f57f490a
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -13,6 +13,7 @@
 */
package com.android.settings.nfc;

import android.app.settings.SettingsEnums;
import android.content.Context;
import android.content.pm.PackageManager;
import android.text.TextUtils;
@@ -23,6 +24,8 @@ import androidx.preference.PreferenceScreen;

import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnStart;
import com.android.settingslib.core.lifecycle.events.OnStop;
@@ -35,9 +38,11 @@ public class NfcForegroundPreferenceController extends BasePreferenceController

    private DropDownPreference mPreference;
    private PaymentBackend mPaymentBackend;
    private MetricsFeatureProvider mMetricsFeatureProvider;

    public NfcForegroundPreferenceController(Context context, String key) {
        super(context, key);
        mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider();
    }

    public void setPaymentBackend(PaymentBackend backend) {
@@ -115,7 +120,11 @@ public class NfcForegroundPreferenceController extends BasePreferenceController
        final DropDownPreference pref = (DropDownPreference) preference;
        final String newValueString = (String) newValue;
        pref.setSummary(pref.getEntries()[pref.findIndexOfValue(newValueString)]);
        mPaymentBackend.setForegroundMode(Integer.parseInt(newValueString) != 0);
        final boolean foregroundMode = Integer.parseInt(newValueString) != 0;
        mPaymentBackend.setForegroundMode(foregroundMode);
        mMetricsFeatureProvider.action(mContext,
                foregroundMode ? SettingsEnums.ACTION_NFC_PAYMENT_FOREGROUND_SETTING
                               : SettingsEnums.ACTION_NFC_PAYMENT_ALWAYS_SETTING);
        return true;
    }

+24 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import android.app.settings.SettingsEnums;
import android.content.Context;
import android.content.pm.PackageManager;

@@ -29,6 +30,7 @@ import androidx.preference.DropDownPreference;
import androidx.preference.PreferenceScreen;

import com.android.settings.R;
import com.android.settings.testutils.FakeFeatureFactory;

import org.junit.Before;
import org.junit.Test;
@@ -37,6 +39,7 @@ import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.util.ReflectionHelpers;

import java.util.ArrayList;

@@ -55,12 +58,14 @@ public class NfcForegroundPreferenceControllerTest {
    private Context mContext;
    private DropDownPreference mPreference;
    private NfcForegroundPreferenceController mController;
    private FakeFeatureFactory mFakeFeatureFactory;

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        mContext = spy(RuntimeEnvironment.application);
        when(mContext.getPackageManager()).thenReturn(mManager);
        mFakeFeatureFactory = FakeFeatureFactory.setupForTest();
        mController = new NfcForegroundPreferenceController(mContext, PREF_KEY);
        mPreference = new DropDownPreference(mContext);
        when(mScreen.findPreference(PREF_KEY)).thenReturn(mPreference);
@@ -156,4 +161,23 @@ public class NfcForegroundPreferenceControllerTest {
        assertThat(mPreference.getEntry()).isEqualTo(favorDefault);
        assertThat(mPreference.getSummary()).isEqualTo(favorDefault);
    }

    @Test
    public void changeOptions_checkMetrics() {
        initPaymentApps();
        mController.displayPreference(mScreen);
        mController.onPaymentAppsChanged();

        mPreference.setValueIndex(0);
        mPreference.callChangeListener(mPreference.getEntryValues()[0]);
        verify(mPaymentBackend).setForegroundMode(true);
        verify(mFakeFeatureFactory.metricsFeatureProvider).action(mContext,
                SettingsEnums.ACTION_NFC_PAYMENT_FOREGROUND_SETTING);

        mPreference.setValueIndex(1);
        mPreference.callChangeListener(mPreference.getEntryValues()[1]);
        verify(mPaymentBackend).setForegroundMode(false);
        verify(mFakeFeatureFactory.metricsFeatureProvider).action(mContext,
                SettingsEnums.ACTION_NFC_PAYMENT_ALWAYS_SETTING);
    }
}
 No newline at end of file