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

Commit f02cfc95 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add logic to log interaction of RAC warning dialog." into 24D1-dev

parents efe0ce2b 5405aa17
Loading
Loading
Loading
Loading
+26 −8
Original line number Diff line number Diff line
@@ -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;
        }

        switch (tag) {
            case DIALOG_TAG_ERASE_ANYWAY_CONFIRMATION:
        finish();
        switch (tag) {
            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;
        }
    }
}
+96 −0
Original line number Diff line number Diff line
/*
 * 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;
    }
}