[Settings][Back port] configuration for hidding SIM related UI

Add overriable configuration for hidding SIM related UI.

Bug: 240515161
Test: test cases and local testing
Merged-In: I8d7ddd18861a696830da39f040dfb14b9ed46726
Change-Id: I709a8007362b09dbb1ec1bd5d32c68d23ed0cfa9
This commit is contained in:
Bonian Chen
2022-10-24 01:12:17 +00:00
parent 24dd061bba
commit 2b048b22f0
9 changed files with 74 additions and 2 deletions

View File

@@ -639,4 +639,8 @@
<!-- Whether to enable the app battery usage list page feature. --> <!-- Whether to enable the app battery usage list page feature. -->
<bool name="config_app_battery_usage_list_enabled">false</bool> <bool name="config_app_battery_usage_list_enabled">false</bool>
<!-- Whether sim related information is visible to the end user. -->
<bool name="config_show_sim_info">true</bool>
</resources> </resources>

View File

@@ -57,6 +57,7 @@
android:order="3" android:order="3"
android:title="@string/status_number" android:title="@string/status_number"
android:summary="@string/summary_placeholder" android:summary="@string/summary_placeholder"
settings:isPreferenceVisible="@bool/config_show_sim_info"
settings:controller="com.android.settings.deviceinfo.PhoneNumberPreferenceController" settings:controller="com.android.settings.deviceinfo.PhoneNumberPreferenceController"
settings:enableCopying="true"/> settings:enableCopying="true"/>
</PreferenceCategory> </PreferenceCategory>
@@ -98,6 +99,7 @@
android:title="@string/sim_status_title" android:title="@string/sim_status_title"
settings:keywords="@string/keywords_sim_status" settings:keywords="@string/keywords_sim_status"
android:summary="@string/summary_placeholder" android:summary="@string/summary_placeholder"
settings:isPreferenceVisible="@bool/config_show_sim_info"
settings:enableCopying="true"/> settings:enableCopying="true"/>
<!-- Model & hardware --> <!-- Model & hardware -->
@@ -119,6 +121,7 @@
android:summary="@string/summary_placeholder" android:summary="@string/summary_placeholder"
settings:keywords="@string/keywords_imei_info" settings:keywords="@string/keywords_imei_info"
settings:enableCopying="true" settings:enableCopying="true"
settings:isPreferenceVisible="@bool/config_show_sim_info"
settings:controller="com.android.settings.deviceinfo.imei.ImeiInfoPreferenceController"/> settings:controller="com.android.settings.deviceinfo.imei.ImeiInfoPreferenceController"/>
<!-- Android version --> <!-- Android version -->

View File

@@ -29,6 +29,7 @@ import androidx.preference.PreferenceScreen;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.core.BasePreferenceController; import com.android.settings.core.BasePreferenceController;
import com.android.settings.network.SubscriptionUtil;
import com.android.settingslib.DeviceInfoUtils; import com.android.settingslib.DeviceInfoUtils;
import java.util.ArrayList; import java.util.ArrayList;
@@ -51,7 +52,8 @@ public class PhoneNumberPreferenceController extends BasePreferenceController {
@Override @Override
public int getAvailabilityStatus() { public int getAvailabilityStatus() {
return mTelephonyManager.isVoiceCapable() ? AVAILABLE : UNSUPPORTED_ON_DEVICE; return SubscriptionUtil.isSimHardwareVisible(mContext) ?
AVAILABLE : UNSUPPORTED_ON_DEVICE;
} }
@Override @Override
@@ -79,6 +81,9 @@ public class PhoneNumberPreferenceController extends BasePreferenceController {
@Override @Override
public void displayPreference(PreferenceScreen screen) { public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen); super.displayPreference(screen);
if (!SubscriptionUtil.isSimHardwareVisible(mContext)) {
return;
}
final Preference preference = screen.findPreference(getPreferenceKey()); final Preference preference = screen.findPreference(getPreferenceKey());
final PreferenceCategory category = screen.findPreference(KEY_PREFERENCE_CATEGORY); final PreferenceCategory category = screen.findPreference(KEY_PREFERENCE_CATEGORY);
mPreferenceList.add(preference); mPreferenceList.add(preference);

View File

@@ -33,6 +33,7 @@ import androidx.preference.PreferenceScreen;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.core.BasePreferenceController; import com.android.settings.core.BasePreferenceController;
import com.android.settings.deviceinfo.PhoneNumberSummaryPreference; import com.android.settings.deviceinfo.PhoneNumberSummaryPreference;
import com.android.settings.network.SubscriptionUtil;
import com.android.settingslib.Utils; import com.android.settingslib.Utils;
import java.util.ArrayList; import java.util.ArrayList;
@@ -63,6 +64,9 @@ public class ImeiInfoPreferenceController extends BasePreferenceController {
@Override @Override
public void displayPreference(PreferenceScreen screen) { public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen); super.displayPreference(screen);
if (!SubscriptionUtil.isSimHardwareVisible(mContext)) {
return;
}
final Preference preference = screen.findPreference(getPreferenceKey()); final Preference preference = screen.findPreference(getPreferenceKey());
final PreferenceCategory category = screen.findPreference(KEY_PREFERENCE_CATEGORY); final PreferenceCategory category = screen.findPreference(KEY_PREFERENCE_CATEGORY);
@@ -119,7 +123,8 @@ public class ImeiInfoPreferenceController extends BasePreferenceController {
@Override @Override
public int getAvailabilityStatus() { public int getAvailabilityStatus() {
return mContext.getSystemService(UserManager.class).isAdminUser() return SubscriptionUtil.isSimHardwareVisible(mContext) &&
mContext.getSystemService(UserManager.class).isAdminUser()
&& !Utils.isWifiOnly(mContext) ? AVAILABLE : UNSUPPORTED_ON_DEVICE; && !Utils.isWifiOnly(mContext) ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
} }

View File

@@ -29,6 +29,7 @@ import androidx.preference.PreferenceScreen;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.network.SubscriptionUtil;
import com.android.settingslib.deviceinfo.AbstractSimStatusImeiInfoPreferenceController; import com.android.settingslib.deviceinfo.AbstractSimStatusImeiInfoPreferenceController;
import java.util.ArrayList; import java.util.ArrayList;
@@ -59,9 +60,18 @@ public class SimStatusPreferenceController extends
return KEY_SIM_STATUS; return KEY_SIM_STATUS;
} }
@Override
public boolean isAvailable() {
return SubscriptionUtil.isSimHardwareVisible(mContext) &&
super.isAvailable();
}
@Override @Override
public void displayPreference(PreferenceScreen screen) { public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen); super.displayPreference(screen);
if (!SubscriptionUtil.isSimHardwareVisible(mContext)) {
return;
}
final Preference preference = screen.findPreference(getPreferenceKey()); final Preference preference = screen.findPreference(getPreferenceKey());
if (!isAvailable() || preference == null || !preference.isVisible()) { if (!isAvailable() || preference == null || !preference.isVisible()) {
return; return;

View File

@@ -86,6 +86,14 @@ public class SubscriptionUtil {
return subscriptions; return subscriptions;
} }
/**
* Check if SIM hardware is visible to the end user.
*/
public static boolean isSimHardwareVisible(Context context) {
return context.getResources()
.getBoolean(R.bool.config_show_sim_info);
}
@VisibleForTesting @VisibleForTesting
static boolean isInactiveInsertedPSim(UiccSlotInfo slotInfo) { static boolean isInactiveInsertedPSim(UiccSlotInfo slotInfo) {
if (slotInfo == null) { if (slotInfo == null) {

View File

@@ -29,6 +29,7 @@ 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.res.Resources;
import android.os.UserManager; import android.os.UserManager;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
@@ -69,12 +70,18 @@ public class ImeiInfoPreferenceControllerTest {
private PreferenceCategory mCategory; private PreferenceCategory mCategory;
private Context mContext; private Context mContext;
private Resources mResources;
private ImeiInfoPreferenceController mController; private ImeiInfoPreferenceController mController;
@Before @Before
public void setUp() { public void setUp() {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
mContext = spy(RuntimeEnvironment.application); mContext = spy(RuntimeEnvironment.application);
mResources = spy(mContext.getResources());
when(mContext.getResources()).thenReturn(mResources);
when(mResources.getBoolean(R.bool.config_show_sim_info)).thenReturn(true);
doReturn(mUserManager).when(mContext).getSystemService(UserManager.class); doReturn(mUserManager).when(mContext).getSystemService(UserManager.class);
mController = spy(new ImeiInfoPreferenceController(mContext, "imei_info")); mController = spy(new ImeiInfoPreferenceController(mContext, "imei_info"));
mController.setHost(mFragment); mController.setHost(mFragment);

View File

@@ -25,6 +25,7 @@ import static org.mockito.Mockito.when;
import android.content.Context; import android.content.Context;
import android.os.UserManager; import android.os.UserManager;
import android.content.res.Resources;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
@@ -64,12 +65,18 @@ public class SimStatusPreferenceControllerTest {
private PreferenceCategory mCategory; private PreferenceCategory mCategory;
private Context mContext; private Context mContext;
private Resources mResources;
private SimStatusPreferenceController mController; private SimStatusPreferenceController mController;
@Before @Before
public void setUp() { public void setUp() {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
mContext = spy(RuntimeEnvironment.application); mContext = spy(RuntimeEnvironment.application);
mResources = spy(mContext.getResources());
when(mContext.getResources()).thenReturn(mResources);
when(mResources.getBoolean(R.bool.config_show_sim_info)).thenReturn(true);
doReturn(mUserManager).when(mContext).getSystemService(UserManager.class); doReturn(mUserManager).when(mContext).getSystemService(UserManager.class);
mController = spy(new SimStatusPreferenceController(mContext, mFragment)); mController = spy(new SimStatusPreferenceController(mContext, mFragment));
doReturn(true).when(mController).isAvailable(); doReturn(true).when(mController).isAvailable();

View File

@@ -25,11 +25,14 @@ import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
import android.content.Context; import android.content.Context;
import android.content.res.Resources;
import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager; import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
import android.text.TextUtils; import android.text.TextUtils;
import com.android.settings.R;
import androidx.test.core.app.ApplicationProvider; import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.ext.junit.runners.AndroidJUnit4;
@@ -58,6 +61,8 @@ public class SubscriptionUtilTest {
private SubscriptionManager mSubMgr; private SubscriptionManager mSubMgr;
@Mock @Mock
private TelephonyManager mTelMgr; private TelephonyManager mTelMgr;
@Mock
private Resources mResources;
@Before @Before
@@ -443,4 +448,22 @@ public class SubscriptionUtilTest {
public void isInactiveInsertedPSim_nullSubInfo_doesNotCrash() { public void isInactiveInsertedPSim_nullSubInfo_doesNotCrash() {
assertThat(SubscriptionUtil.isInactiveInsertedPSim(null)).isFalse(); assertThat(SubscriptionUtil.isInactiveInsertedPSim(null)).isFalse();
} }
@Test
public void isSimHardwareVisible_configAsInvisible_returnFalse() {
when(mContext.getResources()).thenReturn(mResources);
when(mResources.getBoolean(R.bool.config_show_sim_info))
.thenReturn(false);
assertThat(SubscriptionUtil.isSimHardwareVisible(mContext)).isFalse();
}
@Test
public void isSimHardwareVisible_configAsVisible_returnTrue() {
when(mContext.getResources()).thenReturn(mResources);
when(mResources.getBoolean(R.bool.config_show_sim_info))
.thenReturn(true);
assertTrue(SubscriptionUtil.isSimHardwareVisible(mContext));
}
} }