[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 -> {
|
pref.setOnPreferenceClickListener(clickedPref -> {
|
||||||
if (!info.isEmbedded() && !mSubscriptionManager.isActiveSubscriptionId(subId)
|
if (!info.isEmbedded() && !mSubscriptionManager.isActiveSubscriptionId(subId)
|
||||||
&& !SubscriptionUtil.showToggleForPhysicalSim(mSubscriptionManager)) {
|
&& !SubscriptionUtil.showToggleForPhysicalSim(mSubscriptionManager)) {
|
||||||
mSubscriptionManager.setSubscriptionEnabled(subId, true);
|
SubscriptionUtil.startToggleSubscriptionDialogActivity(mContext, subId, true);
|
||||||
} else {
|
} else {
|
||||||
final Intent intent = new Intent(mContext, MobileNetworkActivity.class);
|
final Intent intent = new Intent(mContext, MobileNetworkActivity.class);
|
||||||
intent.putExtra(Settings.EXTRA_SUB_ID, info.getSubscriptionId());
|
intent.putExtra(Settings.EXTRA_SUB_ID, info.getSubscriptionId());
|
||||||
|
@@ -189,7 +189,8 @@ public class MobileNetworkSummaryController extends AbstractPreferenceController
|
|||||||
final int subId = info.getSubscriptionId();
|
final int subId = info.getSubscriptionId();
|
||||||
if (!info.isEmbedded() && !mSubscriptionManager.isActiveSubscriptionId(subId)
|
if (!info.isEmbedded() && !mSubscriptionManager.isActiveSubscriptionId(subId)
|
||||||
&& !SubscriptionUtil.showToggleForPhysicalSim(mSubscriptionManager)) {
|
&& !SubscriptionUtil.showToggleForPhysicalSim(mSubscriptionManager)) {
|
||||||
mSubscriptionManager.setSubscriptionEnabled(subId, true);
|
SubscriptionUtil.startToggleSubscriptionDialogActivity(
|
||||||
|
mContext, subId, true);
|
||||||
} else {
|
} else {
|
||||||
final Intent intent = new Intent(mContext, MobileNetworkActivity.class);
|
final Intent intent = new Intent(mContext, MobileNetworkActivity.class);
|
||||||
intent.putExtra(Settings.EXTRA_SUB_ID, subs.get(0).getSubscriptionId());
|
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.SubscriptionManager;
|
||||||
import android.telephony.TelephonyManager;
|
import android.telephony.TelephonyManager;
|
||||||
import android.telephony.UiccSlotInfo;
|
import android.telephony.UiccSlotInfo;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
import androidx.annotation.VisibleForTesting;
|
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(
|
public static void startToggleSubscriptionDialogActivity(
|
||||||
Context context, int subId, boolean enable) {
|
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));
|
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) {
|
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));
|
context.startActivity(DeleteEuiccSubscriptionDialogActivity.getIntent(context, subId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -78,8 +78,8 @@ public class MobileNetworkSwitchController extends BasePreferenceController impl
|
|||||||
mSwitchBar.getSwitch().setOnBeforeCheckedChangeListener((toggleSwitch, isChecked) -> {
|
mSwitchBar.getSwitch().setOnBeforeCheckedChangeListener((toggleSwitch, isChecked) -> {
|
||||||
// TODO b/135222940: re-evaluate whether to use
|
// TODO b/135222940: re-evaluate whether to use
|
||||||
// mSubscriptionManager#isSubscriptionEnabled
|
// mSubscriptionManager#isSubscriptionEnabled
|
||||||
if (mSubscriptionManager.isActiveSubscriptionId(mSubId) != isChecked
|
if (mSubscriptionManager.isActiveSubscriptionId(mSubId) != isChecked) {
|
||||||
&& (!mSubscriptionManager.setSubscriptionEnabled(mSubId, isChecked))) {
|
SubscriptionUtil.startToggleSubscriptionDialogActivity(mContext, mSubId, isChecked);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
@@ -27,6 +27,7 @@ import android.telephony.UiccSlotInfo;
|
|||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
|
import com.android.internal.annotations.VisibleForTesting;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.SidecarFragment;
|
import com.android.settings.SidecarFragment;
|
||||||
import com.android.settings.network.EnableMultiSimSidecar;
|
import com.android.settings.network.EnableMultiSimSidecar;
|
||||||
@@ -45,7 +46,8 @@ public class ToggleSubscriptionDialogActivity extends SubscriptionActionDialogAc
|
|||||||
|
|
||||||
private static final String TAG = "ToggleSubscriptionDialogActivity";
|
private static final String TAG = "ToggleSubscriptionDialogActivity";
|
||||||
// Arguments
|
// Arguments
|
||||||
private static final String ARG_enable = "enable";
|
@VisibleForTesting
|
||||||
|
public static final String ARG_enable = "enable";
|
||||||
// Dialog tags
|
// Dialog tags
|
||||||
private static final int DIALOG_TAG_DISABLE_SIM_CONFIRMATION = 1;
|
private static final int DIALOG_TAG_DISABLE_SIM_CONFIRMATION = 1;
|
||||||
private static final int DIALOG_TAG_ENABLE_SIM_CONFIRMATION = 2;
|
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 com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
import static org.mockito.ArgumentMatchers.anyBoolean;
|
import static org.mockito.ArgumentMatchers.anyBoolean;
|
||||||
import static org.mockito.ArgumentMatchers.eq;
|
import static org.mockito.ArgumentMatchers.eq;
|
||||||
|
import static org.mockito.Mockito.doNothing;
|
||||||
import static org.mockito.Mockito.doReturn;
|
import static org.mockito.Mockito.doReturn;
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
|
import static org.mockito.Mockito.times;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.os.Bundle;
|
||||||
import android.os.Looper;
|
import android.os.Looper;
|
||||||
import android.telephony.SubscriptionInfo;
|
import android.telephony.SubscriptionInfo;
|
||||||
import android.telephony.SubscriptionManager;
|
import android.telephony.SubscriptionManager;
|
||||||
@@ -47,6 +52,7 @@ import org.junit.After;
|
|||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
import org.mockito.ArgumentCaptor;
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
|
|
||||||
@@ -168,9 +174,15 @@ public class MobileNetworkSwitchControllerTest {
|
|||||||
assertThat(mSwitchBar.isShowing()).isTrue();
|
assertThat(mSwitchBar.isShowing()).isTrue();
|
||||||
assertThat(mSwitchBar.isChecked()).isTrue();
|
assertThat(mSwitchBar.isChecked()).isTrue();
|
||||||
|
|
||||||
|
final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
|
||||||
|
doNothing().when(mContext).startActivity(intentCaptor.capture());
|
||||||
mSwitchBar.setChecked(false);
|
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
|
@Test
|
||||||
@@ -183,9 +195,15 @@ public class MobileNetworkSwitchControllerTest {
|
|||||||
assertThat(mSwitchBar.isShowing()).isTrue();
|
assertThat(mSwitchBar.isShowing()).isTrue();
|
||||||
assertThat(mSwitchBar.isChecked()).isTrue();
|
assertThat(mSwitchBar.isChecked()).isTrue();
|
||||||
|
|
||||||
|
final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
|
||||||
|
doNothing().when(mContext).startActivity(intentCaptor.capture());
|
||||||
mSwitchBar.setChecked(false);
|
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();
|
assertThat(mSwitchBar.isChecked()).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -197,8 +215,13 @@ public class MobileNetworkSwitchControllerTest {
|
|||||||
assertThat(mSwitchBar.isShowing()).isTrue();
|
assertThat(mSwitchBar.isShowing()).isTrue();
|
||||||
assertThat(mSwitchBar.isChecked()).isFalse();
|
assertThat(mSwitchBar.isChecked()).isFalse();
|
||||||
|
|
||||||
|
final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
|
||||||
|
doNothing().when(mContext).startActivity(intentCaptor.capture());
|
||||||
mSwitchBar.setChecked(true);
|
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