[SIM Dialog Migration] Enable SIM operation dialog in Settings
Change Settings to not call SubscriptionManager#setSubscriptionEnabled. Instead, make Settings call EuiccManager APIs directly. Design: https://docs.google.com/document/d/1wb5_hoBkZVbkXGNWHbx4Jf61swjfxsJzkytiTzJosYo/edit?usp=sharing Bug: 160819390 Test: Manually tested eSIM profile enabling. Change-Id: I56bbcbb9ccb886b0f9249e67c5a6a6444bb7dd45
This commit is contained in:
@@ -128,7 +128,7 @@ public class MobileNetworkListController extends AbstractPreferenceController im
|
||||
pref.setOnPreferenceClickListener(clickedPref -> {
|
||||
if (!info.isEmbedded() && !mSubscriptionManager.isActiveSubscriptionId(subId)
|
||||
&& !SubscriptionUtil.showToggleForPhysicalSim(mSubscriptionManager)) {
|
||||
mSubscriptionManager.setSubscriptionEnabled(subId, true);
|
||||
SubscriptionUtil.startToggleSubscriptionDialogActivity(mContext, subId, true);
|
||||
} else {
|
||||
final Intent intent = new Intent(mContext, MobileNetworkActivity.class);
|
||||
intent.putExtra(Settings.EXTRA_SUB_ID, info.getSubscriptionId());
|
||||
|
@@ -189,7 +189,8 @@ public class MobileNetworkSummaryController extends AbstractPreferenceController
|
||||
final int subId = info.getSubscriptionId();
|
||||
if (!info.isEmbedded() && !mSubscriptionManager.isActiveSubscriptionId(subId)
|
||||
&& !SubscriptionUtil.showToggleForPhysicalSim(mSubscriptionManager)) {
|
||||
mSubscriptionManager.setSubscriptionEnabled(subId, true);
|
||||
SubscriptionUtil.startToggleSubscriptionDialogActivity(
|
||||
mContext, subId, true);
|
||||
} else {
|
||||
final Intent intent = new Intent(mContext, MobileNetworkActivity.class);
|
||||
intent.putExtra(Settings.EXTRA_SUB_ID, subs.get(0).getSubscriptionId());
|
||||
|
@@ -28,6 +28,7 @@ import android.telephony.SubscriptionInfo;
|
||||
import android.telephony.SubscriptionManager;
|
||||
import android.telephony.TelephonyManager;
|
||||
import android.telephony.UiccSlotInfo;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
|
||||
@@ -284,14 +285,31 @@ public class SubscriptionUtil {
|
||||
}
|
||||
}
|
||||
|
||||
/** Starts a dialog activity to handle SIM enabling/disabling. */
|
||||
/**
|
||||
* Starts a dialog activity to handle SIM enabling/disabling.
|
||||
* @param context {@code Context}
|
||||
* @param subId The id of subscription need to be enabled or disabled.
|
||||
* @param enable Whether the subscription with {@code subId} should be enabled or disabled.
|
||||
*/
|
||||
public static void startToggleSubscriptionDialogActivity(
|
||||
Context context, int subId, boolean enable) {
|
||||
if (!SubscriptionManager.isUsableSubscriptionId(subId)) {
|
||||
Log.i(TAG, "Unable to toggle subscription due to invalid subscription ID.");
|
||||
return;
|
||||
}
|
||||
context.startActivity(ToggleSubscriptionDialogActivity.getIntent(context, subId, enable));
|
||||
}
|
||||
|
||||
/** Starts a dialog activity to handle eSIM deletion. */
|
||||
/**
|
||||
* Starts a dialog activity to handle eSIM deletion.
|
||||
* @param context {@code Context}
|
||||
* @param subId The id of subscription need to be deleted.
|
||||
*/
|
||||
public static void startDeleteEuiccSubscriptionDialogActivity(Context context, int subId) {
|
||||
if (!SubscriptionManager.isUsableSubscriptionId(subId)) {
|
||||
Log.i(TAG, "Unable to delete subscription due to invalid subscription ID.");
|
||||
return;
|
||||
}
|
||||
context.startActivity(DeleteEuiccSubscriptionDialogActivity.getIntent(context, subId));
|
||||
}
|
||||
|
||||
|
@@ -78,8 +78,8 @@ public class MobileNetworkSwitchController extends BasePreferenceController impl
|
||||
mSwitchBar.getSwitch().setOnBeforeCheckedChangeListener((toggleSwitch, isChecked) -> {
|
||||
// TODO b/135222940: re-evaluate whether to use
|
||||
// mSubscriptionManager#isSubscriptionEnabled
|
||||
if (mSubscriptionManager.isActiveSubscriptionId(mSubId) != isChecked
|
||||
&& (!mSubscriptionManager.setSubscriptionEnabled(mSubId, isChecked))) {
|
||||
if (mSubscriptionManager.isActiveSubscriptionId(mSubId) != isChecked) {
|
||||
SubscriptionUtil.startToggleSubscriptionDialogActivity(mContext, mSubId, isChecked);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
@@ -27,6 +27,7 @@ import android.telephony.UiccSlotInfo;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
|
||||
import com.android.internal.annotations.VisibleForTesting;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.SidecarFragment;
|
||||
import com.android.settings.network.EnableMultiSimSidecar;
|
||||
@@ -45,7 +46,8 @@ public class ToggleSubscriptionDialogActivity extends SubscriptionActionDialogAc
|
||||
|
||||
private static final String TAG = "ToggleSubscriptionDialogActivity";
|
||||
// Arguments
|
||||
private static final String ARG_enable = "enable";
|
||||
@VisibleForTesting
|
||||
public static final String ARG_enable = "enable";
|
||||
// Dialog tags
|
||||
private static final int DIALOG_TAG_DISABLE_SIM_CONFIRMATION = 1;
|
||||
private static final int DIALOG_TAG_ENABLE_SIM_CONFIRMATION = 2;
|
||||
|
@@ -18,15 +18,20 @@ package com.android.settings.network.telephony;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.anyBoolean;
|
||||
import static org.mockito.ArgumentMatchers.eq;
|
||||
import static org.mockito.Mockito.doNothing;
|
||||
import static org.mockito.Mockito.doReturn;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.times;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.os.Looper;
|
||||
import android.telephony.SubscriptionInfo;
|
||||
import android.telephony.SubscriptionManager;
|
||||
@@ -47,6 +52,7 @@ import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.ArgumentCaptor;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
|
||||
@@ -168,9 +174,15 @@ public class MobileNetworkSwitchControllerTest {
|
||||
assertThat(mSwitchBar.isShowing()).isTrue();
|
||||
assertThat(mSwitchBar.isChecked()).isTrue();
|
||||
|
||||
final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
|
||||
doNothing().when(mContext).startActivity(intentCaptor.capture());
|
||||
mSwitchBar.setChecked(false);
|
||||
Bundle extra = intentCaptor.getValue().getExtras();
|
||||
|
||||
verify(mSubscriptionManager).setSubscriptionEnabled(eq(mSubId), eq(false));
|
||||
verify(mContext, times(1)).startActivity(any());
|
||||
assertThat(extra.getInt(ToggleSubscriptionDialogActivity.ARG_SUB_ID)).isEqualTo(mSubId);
|
||||
assertThat(extra.getBoolean(ToggleSubscriptionDialogActivity.ARG_enable))
|
||||
.isEqualTo(false);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -183,9 +195,15 @@ public class MobileNetworkSwitchControllerTest {
|
||||
assertThat(mSwitchBar.isShowing()).isTrue();
|
||||
assertThat(mSwitchBar.isChecked()).isTrue();
|
||||
|
||||
final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
|
||||
doNothing().when(mContext).startActivity(intentCaptor.capture());
|
||||
mSwitchBar.setChecked(false);
|
||||
Bundle extra = intentCaptor.getValue().getExtras();
|
||||
|
||||
verify(mSubscriptionManager).setSubscriptionEnabled(eq(mSubId), eq(false));
|
||||
verify(mContext, times(1)).startActivity(any());
|
||||
assertThat(extra.getInt(ToggleSubscriptionDialogActivity.ARG_SUB_ID)).isEqualTo(mSubId);
|
||||
assertThat(extra.getBoolean(ToggleSubscriptionDialogActivity.ARG_enable))
|
||||
.isEqualTo(false);
|
||||
assertThat(mSwitchBar.isChecked()).isTrue();
|
||||
}
|
||||
|
||||
@@ -197,8 +215,13 @@ public class MobileNetworkSwitchControllerTest {
|
||||
assertThat(mSwitchBar.isShowing()).isTrue();
|
||||
assertThat(mSwitchBar.isChecked()).isFalse();
|
||||
|
||||
final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
|
||||
doNothing().when(mContext).startActivity(intentCaptor.capture());
|
||||
mSwitchBar.setChecked(true);
|
||||
Bundle extra = intentCaptor.getValue().getExtras();
|
||||
|
||||
verify(mSubscriptionManager).setSubscriptionEnabled(eq(mSubId), eq(true));
|
||||
verify(mContext, times(1)).startActivity(any());
|
||||
assertThat(extra.getInt(ToggleSubscriptionDialogActivity.ARG_SUB_ID)).isEqualTo(mSubId);
|
||||
assertThat(extra.getBoolean(ToggleSubscriptionDialogActivity.ARG_enable)).isEqualTo(true);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user