Protect entry points to add an eSIM when admin restricted
If the DISALLOW_CONFIG_MOBILE_NETWORKS admin policy is set, we were accidentally still allowing access to the flow where you add an eSIM subscription via the "plus" button on the Network & internet page. While fixing this, I also noticed that the mobile networks list page (which only becomes available if you have multiple subscriptions) has a link at the bottom to start the flow as well, and that wasn't being protected. The fix for the plus button on the Network & internet page was just to make sure not to call setEnabled(true) if the preference was already disabled by admin policy, since that has the effect of overriding the admin-disabling. The fix for the mobile networks list page just needed to add the relevant tags in the layout XML, and then we get it for free. Fixes: 137627845 Test: make RunSettingsRoboTests Change-Id: I896ac248f50aaeecc157791938a0a0a98265aa07
This commit is contained in:
@@ -20,9 +20,11 @@
|
||||
android:key="mobile_network_list_screen"
|
||||
android:title="@string/network_settings_title">
|
||||
|
||||
<Preference
|
||||
<com.android.settingslib.RestrictedPreference
|
||||
android:key="add_more"
|
||||
settings:isPreferenceVisible="false"
|
||||
settings:userRestriction="no_config_mobile_networks"
|
||||
settings:useAdminDisabledSummary="true"
|
||||
android:title="@string/mobile_network_list_add_more"
|
||||
android:icon="@drawable/ic_menu_add_activated_tint"
|
||||
android:order="100" >
|
||||
@@ -30,6 +32,6 @@
|
||||
<extra android:name="android.telephony.euicc.extra.FORCE_PROVISION"
|
||||
android:value="true"/>
|
||||
</intent>
|
||||
</Preference>
|
||||
</com.android.settingslib.RestrictedPreference>
|
||||
|
||||
</PreferenceScreen>
|
||||
|
@@ -130,7 +130,7 @@ public class MobileNetworkSummaryController extends AbstractPreferenceController
|
||||
}
|
||||
|
||||
private void update() {
|
||||
if (mPreference == null) {
|
||||
if (mPreference == null || mPreference.isDisabledByAdmin()) {
|
||||
return;
|
||||
}
|
||||
refreshSummary(mPreference);
|
||||
|
@@ -42,6 +42,7 @@ import android.text.TextUtils;
|
||||
|
||||
import com.android.settings.network.telephony.MobileNetworkActivity;
|
||||
import com.android.settings.widget.AddPreference;
|
||||
import com.android.settingslib.RestrictedLockUtils;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
@@ -373,4 +374,12 @@ public class MobileNetworkSummaryControllerTest {
|
||||
verify(mPreference, atLeastOnce()).setAddWidgetEnabled(captor.capture());
|
||||
assertThat(captor.getValue()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onResume_disabledByAdmin_prefStaysDisabled() {
|
||||
mPreference.setDisabledByAdmin(new RestrictedLockUtils.EnforcedAdmin());
|
||||
mController.displayPreference(mPreferenceScreen);
|
||||
mController.onResume();
|
||||
verify(mPreference, never()).setEnabled(eq(true));
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user