From 5405aa17a1ac57e25bc374b59ffdd275888d7c68 Mon Sep 17 00:00:00 2001 From: Rafael Higuera Silva Date: Tue, 2 Apr 2024 02:33:13 +0000 Subject: [PATCH] Add logic to log interaction of RAC warning dialog. Bug: 326618987 Test: make, atest EuiccRacConnectivityDialogActivityTest Change-Id: If4e3285b3715e9630d4932d4bf1bcb71e4167cff Merged-In: If4e3285b3715e9630d4932d4bf1bcb71e4167cff --- .../EuiccRacConnectivityDialogActivity.java | 34 +++++-- ...uiccRacConnectivityDialogActivityTest.java | 96 +++++++++++++++++++ 2 files changed, 122 insertions(+), 8 deletions(-) create mode 100644 tests/robotests/src/com/android/settings/network/telephony/EuiccRacConnectivityDialogActivityTest.java diff --git a/src/com/android/settings/network/telephony/EuiccRacConnectivityDialogActivity.java b/src/com/android/settings/network/telephony/EuiccRacConnectivityDialogActivity.java index d439d4f6c27..aaf98f1e99d 100644 --- a/src/com/android/settings/network/telephony/EuiccRacConnectivityDialogActivity.java +++ b/src/com/android/settings/network/telephony/EuiccRacConnectivityDialogActivity.java @@ -16,6 +16,7 @@ package com.android.settings.network.telephony; +import android.app.settings.SettingsEnums; import android.content.Context; import android.content.Intent; import android.os.Bundle; @@ -28,20 +29,21 @@ import androidx.fragment.app.FragmentActivity; import com.android.settings.R; import com.android.settings.core.SubSettingLauncher; +import com.android.settings.overlay.FeatureFactory; +import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; /** This dialog activity advise the user to have connectivity if the eSIM uses a RAC. */ public class EuiccRacConnectivityDialogActivity extends FragmentActivity implements WarningDialogFragment.OnConfirmListener { private static final String TAG = "EuiccRacConnectivityDialogActivity"; - // Dialog tags - private static final int DIALOG_TAG_ERASE_ANYWAY_CONFIRMATION = 1; private static final String ARG_SUB_ID = "sub_id"; private static final String ARG_RESET_MOBILE_NETWORK_ID = "reset_mobile_netword_id"; private int mSubId; @Nullable private Intent mResetMobileNetworkIntent; + private MetricsFeatureProvider mMetricsFeatureProvider; /** * Returns an intent of EuiccRacConnectivityDialogActivity for Settings: erase eSIM. @@ -80,6 +82,7 @@ public class EuiccRacConnectivityDialogActivity extends FragmentActivity mSubId = intent.getIntExtra(ARG_SUB_ID, SubscriptionManager.INVALID_SUBSCRIPTION_ID); mResetMobileNetworkIntent = intent.getParcelableExtra(ARG_RESET_MOBILE_NETWORK_ID, Intent.class); + mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider(); if (savedInstanceState == null) { showConnectivityWarningDialog(); @@ -88,20 +91,26 @@ public class EuiccRacConnectivityDialogActivity extends FragmentActivity @Override public void onConfirm(int tag, boolean confirmed) { + if (tag == SettingsEnums.ACTION_SETTINGS_ESIM_RAC_CONNECTIVITY_WARNING + || tag == SettingsEnums.ACTION_RESET_MOBILE_NETWORK_RAC_CONNECTIVITY_WARNING) { + mMetricsFeatureProvider.action(this, tag, confirmed ? 1 : 0); + } + if (!confirmed) { finish(); return; } + finish(); switch (tag) { - case DIALOG_TAG_ERASE_ANYWAY_CONFIRMATION: - finish(); + case SettingsEnums.ACTION_SETTINGS_ESIM_RAC_CONNECTIVITY_WARNING: + Log.i(TAG, "Show dialogue activity that handles deleting eSIM profile"); + startActivity(DeleteEuiccSubscriptionDialogActivity.getIntent(this, mSubId)); + break; + case SettingsEnums.ACTION_RESET_MOBILE_NETWORK_RAC_CONNECTIVITY_WARNING: if (mResetMobileNetworkIntent != null) { Log.i(TAG, "Show fragment activity that handles mobile network settings reset"); new SubSettingLauncher(this).launchWithIntent(mResetMobileNetworkIntent); - } else { - Log.i(TAG, "Show dialogue activity that handles deleting eSIM profiles"); - startActivity(DeleteEuiccSubscriptionDialogActivity.getIntent(this, mSubId)); } break; default: @@ -115,10 +124,19 @@ public class EuiccRacConnectivityDialogActivity extends FragmentActivity WarningDialogFragment.show( this, WarningDialogFragment.OnConfirmListener.class, - DIALOG_TAG_ERASE_ANYWAY_CONFIRMATION, + getMetricsTag(), getString(R.string.wifi_warning_dialog_title), getString(R.string.wifi_warning_dialog_text), getString(R.string.wifi_warning_continue_button), getString(R.string.wifi_warning_return_button)); } + + /* Get the metrics tag depending on the intent. */ + private int getMetricsTag() { + if (mResetMobileNetworkIntent != null) { + return SettingsEnums.ACTION_RESET_MOBILE_NETWORK_RAC_CONNECTIVITY_WARNING; + } else { + return SettingsEnums.ACTION_SETTINGS_ESIM_RAC_CONNECTIVITY_WARNING; + } + } } diff --git a/tests/robotests/src/com/android/settings/network/telephony/EuiccRacConnectivityDialogActivityTest.java b/tests/robotests/src/com/android/settings/network/telephony/EuiccRacConnectivityDialogActivityTest.java new file mode 100644 index 00000000000..29d8f796feb --- /dev/null +++ b/tests/robotests/src/com/android/settings/network/telephony/EuiccRacConnectivityDialogActivityTest.java @@ -0,0 +1,96 @@ +/* + * Copyright (C) 2024 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.settings.network.telephony; + +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.verify; + +import android.app.settings.SettingsEnums; + +import com.android.settings.testutils.FakeFeatureFactory; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.robolectric.Robolectric; +import org.robolectric.RobolectricTestRunner; + +@RunWith(RobolectricTestRunner.class) +public class EuiccRacConnectivityDialogActivityTest { + private static final boolean CONFIRMED = true; + + private FakeFeatureFactory mFeatureFactory; + private EuiccRacConnectivityDialogActivity mActivity; + + @Before + public void setUp() { + mFeatureFactory = FakeFeatureFactory.setupForTest(); + mActivity = spy(Robolectric.buildActivity(EuiccRacConnectivityDialogActivity.class).get()); + mActivity.onCreate(null); + } + + @Test + public void dialogAction_continue_intentResetMobileNetwork_metricsLogged() { + mActivity.onConfirm( + SettingsEnums.ACTION_RESET_MOBILE_NETWORK_RAC_CONNECTIVITY_WARNING, CONFIRMED); + + verify(mFeatureFactory.metricsFeatureProvider) + .action( + mActivity, + SettingsEnums.ACTION_RESET_MOBILE_NETWORK_RAC_CONNECTIVITY_WARNING, + getMetricsValue(CONFIRMED)); + } + + @Test + public void dialogAction_back_intentResetMobileNetwork_metricsLogged() { + mActivity.onConfirm( + SettingsEnums.ACTION_RESET_MOBILE_NETWORK_RAC_CONNECTIVITY_WARNING, !CONFIRMED); + + verify(mFeatureFactory.metricsFeatureProvider) + .action( + mActivity, + SettingsEnums.ACTION_RESET_MOBILE_NETWORK_RAC_CONNECTIVITY_WARNING, + getMetricsValue(!CONFIRMED)); + } + + @Test + public void dialogAction_continue_intentSettingsEsimDelete_metricsLogged() { + mActivity.onConfirm(SettingsEnums.ACTION_SETTINGS_ESIM_RAC_CONNECTIVITY_WARNING, CONFIRMED); + + verify(mFeatureFactory.metricsFeatureProvider) + .action( + mActivity, + SettingsEnums.ACTION_SETTINGS_ESIM_RAC_CONNECTIVITY_WARNING, + getMetricsValue(CONFIRMED)); + } + + @Test + public void dialogAction_back_intentSettingsEsimDelete_metricsLogged() { + mActivity.onConfirm( + SettingsEnums.ACTION_SETTINGS_ESIM_RAC_CONNECTIVITY_WARNING, !CONFIRMED); + + verify(mFeatureFactory.metricsFeatureProvider) + .action( + mActivity, + SettingsEnums.ACTION_SETTINGS_ESIM_RAC_CONNECTIVITY_WARNING, + getMetricsValue(!CONFIRMED)); + } + + private int getMetricsValue(boolean confirmed) { + return confirmed ? 1 : 0; + } +}