Skip to content

Commit 5aca2a9

Browse files
Weng SuMegh-Rana
authored andcommitted
[RESTRICT AUTOMERGE] Restrict ApnEditor settings
- Finish ApnEditor settings if user is not an admin - Finish ApnEditor settings if user has DISALLOW_CONFIG_MOBILE_NETWORKS restriction Bug: 279902472 Test: manual test make RunSettingsRoboTests ROBOTEST_FILTER=ApnEditorTest (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:5c2d727b8f9198bf758a4896eda7c9e5385435ff) Merged-In: Iecdbbff7e21dfb11e3ba385858747a220cfd3e04 Change-Id: Iecdbbff7e21dfb11e3ba385858747a220cfd3e04
1 parent 47e900e commit 5aca2a9

File tree

2 files changed

+52
-0
lines changed

2 files changed

+52
-0
lines changed

src/com/android/settings/network/ApnEditor.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import android.net.Uri;
2626
import android.os.Bundle;
2727
import android.os.PersistableBundle;
28+
import android.os.UserManager;
2829
import android.provider.Telephony;
2930
import android.telephony.CarrierConfigManager;
3031
import android.telephony.SubscriptionInfo;
@@ -264,6 +265,11 @@ public class ApnEditor extends SettingsPreferenceFragment
264265
@Override
265266
public void onCreate(Bundle icicle) {
266267
super.onCreate(icicle);
268+
if (isUserRestricted()) {
269+
Log.e(TAG, "This setting isn't available due to user restriction.");
270+
finish();
271+
return;
272+
}
267273

268274
setLifecycleForAllControllers();
269275

@@ -1342,6 +1348,23 @@ private void setCarrierCustomizedConfigToUi() {
13421348
}
13431349
}
13441350

1351+
@VisibleForTesting
1352+
boolean isUserRestricted() {
1353+
UserManager userManager = getContext().getSystemService(UserManager.class);
1354+
if (userManager == null) {
1355+
return false;
1356+
}
1357+
if (!userManager.isAdminUser()) {
1358+
Log.e(TAG, "User is not an admin");
1359+
return true;
1360+
}
1361+
if (userManager.hasUserRestriction(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS)) {
1362+
Log.e(TAG, "User is not allowed to configure mobile network");
1363+
return true;
1364+
}
1365+
return false;
1366+
}
1367+
13451368
public static class ErrorDialog extends InstrumentedDialogFragment {
13461369

13471370
public static void showError(ApnEditor editor) {

tests/robotests/src/com/android/settings/network/ApnEditorTest.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import android.content.res.Resources;
3535
import android.database.Cursor;
3636
import android.net.Uri;
37+
import android.os.UserManager;
3738
import android.view.KeyEvent;
3839
import android.view.Menu;
3940
import android.view.MenuItem;
@@ -101,6 +102,8 @@ public class ApnEditorTest {
101102
@Mock
102103
private FragmentActivity mActivity;
103104
@Mock
105+
private UserManager mUserManager;
106+
@Mock
104107
private ProxySubscriptionManager mProxySubscriptionMgr;
105108

106109
@Captor
@@ -126,6 +129,11 @@ public void setUp() {
126129
doReturn(mContext.getTheme()).when(mActivity).getTheme();
127130
doReturn(mContext.getContentResolver()).when(mActivity).getContentResolver();
128131

132+
doReturn(mUserManager).when(mContext).getSystemService(UserManager.class);
133+
doReturn(true).when(mUserManager).isAdminUser();
134+
doReturn(false).when(mUserManager)
135+
.hasUserRestriction(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS);
136+
129137
setMockPreference(mContext);
130138
mApnEditorUT.mApnData = new FakeApnData(APN_DATA);
131139
mApnEditorUT.sNotSet = "Not Set";
@@ -450,6 +458,27 @@ public void formatInteger_shouldIgnoreNonIntegers() {
450458
assertThat(ApnEditor.formatInteger("not an int")).isEqualTo("not an int");
451459
}
452460

461+
@Test
462+
@Config(shadows = ShadowFragment.class)
463+
public void onCreate_notAdminUser_shouldFinish() {
464+
doReturn(false).when(mUserManager).isAdminUser();
465+
466+
mApnEditorUT.onCreate(null);
467+
468+
verify(mApnEditorUT).finish();
469+
}
470+
471+
@Test
472+
@Config(shadows = ShadowFragment.class)
473+
public void onCreate_hasUserRestriction_shouldFinish() {
474+
doReturn(true).when(mUserManager)
475+
.hasUserRestriction(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS);
476+
477+
mApnEditorUT.onCreate(null);
478+
479+
verify(mApnEditorUT).finish();
480+
}
481+
453482
@Test
454483
@Config(shadows = ShadowFragment.class)
455484
public void onCreate_noAction_shouldFinishAndNoCrash() {

0 commit comments

Comments
 (0)