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

Commit 482415d3 authored by Antony Sargent's avatar Antony Sargent
Browse files

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
parent 985d3d57
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -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>
+1 −1
Original line number Diff line number Diff line
@@ -130,7 +130,7 @@ public class MobileNetworkSummaryController extends AbstractPreferenceController
    }

    private void update() {
        if (mPreference == null) {
        if (mPreference == null || mPreference.isDisabledByAdmin()) {
            return;
        }
        refreshSummary(mPreference);
+9 −0
Original line number Diff line number Diff line
@@ -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));
    }
}