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

Commit bd9263b3 authored by Tom Hsu's avatar Tom Hsu Committed by Android (Google) Code Review
Browse files

Merge "[Settings] UI part: Add metrics for language" into udc-dev

parents 2094622d cfaa1344
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -37,6 +37,8 @@ import com.android.internal.app.LocaleStore;
import com.android.settings.R;
import com.android.settings.RestrictedSettingsFragment;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;

/**
 * Create a dialog for system locale events.
@@ -143,6 +145,7 @@ public class LocaleDialogFragment extends InstrumentedDialogFragment {
        private final int mDialogType;
        private final LocaleStore.LocaleInfo mLocaleInfo;
        private final ResultReceiver mResultReceiver;
        private final MetricsFeatureProvider mMetricsFeatureProvider;

        LocaleDialogController(
                @NonNull Context context, @NonNull LocaleDialogFragment dialogFragment) {
@@ -152,6 +155,8 @@ public class LocaleDialogFragment extends InstrumentedDialogFragment {
            mLocaleInfo = (LocaleStore.LocaleInfo) arguments.getSerializable(
                    ARG_TARGET_LOCALE);
            mResultReceiver = (ResultReceiver) arguments.getParcelable(ARG_RESULT_RECEIVER);
            mMetricsFeatureProvider = FeatureFactory.getFactory(
                    mContext).getMetricsFeatureProvider();
        }

        LocaleDialogController(@NonNull LocaleDialogFragment dialogFragment) {
@@ -163,11 +168,15 @@ public class LocaleDialogFragment extends InstrumentedDialogFragment {
            if (mResultReceiver != null && mDialogType == DIALOG_CONFIRM_SYSTEM_DEFAULT) {
                Bundle bundle = new Bundle();
                bundle.putInt(ARG_DIALOG_TYPE, DIALOG_CONFIRM_SYSTEM_DEFAULT);
                boolean changed = false;
                if (which == DialogInterface.BUTTON_POSITIVE) {
                    changed = true;
                    mResultReceiver.send(Activity.RESULT_OK, bundle);
                } else if (which == DialogInterface.BUTTON_NEGATIVE) {
                    mResultReceiver.send(Activity.RESULT_CANCELED, bundle);
                }
                mMetricsFeatureProvider.action(mContext,
                        SettingsEnums.ACTION_CHANGE_LANGUAGE, changed);
            }
        }

+7 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.settings.localepicker;

import android.app.settings.SettingsEnums;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
@@ -24,8 +25,10 @@ import androidx.annotation.VisibleForTesting;
import androidx.preference.PreferenceScreen;

import com.android.settings.R;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.HelpUtils;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.widget.FooterPreference;

/**
@@ -36,8 +39,11 @@ public class LocaleHelperPreferenceController extends AbstractPreferenceControll

    private static final String KEY_FOOTER_LANGUAGE_PICKER = "footer_languages_picker";

    private final MetricsFeatureProvider mMetricsFeatureProvider;

    public LocaleHelperPreferenceController(Context context) {
        super(context);
        mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider();
    }

    @Override
@@ -72,6 +78,7 @@ public class LocaleHelperPreferenceController extends AbstractPreferenceControll
                mContext.getString(R.string.link_locale_picker_footer_learn_more),
                mContext.getClass().getName());
        if (intent != null) {
            mMetricsFeatureProvider.action(mContext, SettingsEnums.ACTION_LANGUAGES_LEARN_MORE);
            mContext.startActivity(intent);
        } else {
            Log.w(TAG, "HelpIntent is null");
+7 −0
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@ import androidx.test.annotation.UiThreadTest;
import androidx.test.core.app.ApplicationProvider;

import com.android.internal.app.LocaleStore;
import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.ResourcesUtils;

import org.junit.Before;
@@ -55,11 +56,13 @@ public class LocaleDialogFragmentTest {

    private Context mContext;
    private LocaleDialogFragment mDialogFragment;
    private FakeFeatureFactory mFeatureFactory;

    @Before
    public void setUp() throws Exception {
        mContext = ApplicationProvider.getApplicationContext();
        mDialogFragment = new LocaleDialogFragment();
        mFeatureFactory = FakeFeatureFactory.setupForTest();
    }

    private void setArgument(
@@ -112,6 +115,8 @@ public class LocaleDialogFragmentTest {
        controller.onClick(null, DialogInterface.BUTTON_POSITIVE);

        verify(resultReceiver).send(eq(Activity.RESULT_OK), any());
        verify(mFeatureFactory.metricsFeatureProvider).action(
                mContext, SettingsEnums.ACTION_CHANGE_LANGUAGE, true);
    }

    @Test
@@ -124,6 +129,8 @@ public class LocaleDialogFragmentTest {
        controller.onClick(null, DialogInterface.BUTTON_NEGATIVE);

        verify(resultReceiver).send(eq(Activity.RESULT_CANCELED), any());
        verify(mFeatureFactory.metricsFeatureProvider).action(
                mContext, SettingsEnums.ACTION_CHANGE_LANGUAGE, false);
    }

    @Test
+8 −0
Original line number Diff line number Diff line
@@ -19,12 +19,14 @@ package com.android.settings.localepicker;
import static org.mockito.Mockito.anyString;
import static org.mockito.Mockito.verify;

import android.app.settings.SettingsEnums;
import android.content.Context;
import android.os.Looper;

import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;

import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settingslib.widget.FooterPreference;

import org.junit.Before;
@@ -37,6 +39,7 @@ import org.mockito.MockitoAnnotations;
public class LocaleHelperPreferenceControllerTest {
    private Context mContext;
    private LocaleHelperPreferenceController mLocaleHelperPreferenceController;
    private FakeFeatureFactory mFeatureFactory;

    @Mock
    private FooterPreference mMockFooterPreference;
@@ -49,11 +52,16 @@ public class LocaleHelperPreferenceControllerTest {
        }
        mContext = ApplicationProvider.getApplicationContext();
        mLocaleHelperPreferenceController = new LocaleHelperPreferenceController(mContext);
        mFeatureFactory = FakeFeatureFactory.setupForTest();
    }

    @Test
    public void updateFooterPreference_setFooterPreference_hasClickAction() {
        mLocaleHelperPreferenceController.updateFooterPreference(mMockFooterPreference);
        verify(mMockFooterPreference).setLearnMoreText(anyString());
        mMockFooterPreference.setLearnMoreAction(v -> {
            verify(mFeatureFactory.metricsFeatureProvider).action(
                    mContext, SettingsEnums.ACTION_LANGUAGES_LEARN_MORE);
        });
    }
}