[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 atest -c ApnEditorTest Change-Id: Iecdbbff7e21dfb11e3ba385858747a220cfd3e04 Merged-In: I5cf984000244b4ad901c6a4977a1368279323e0a
This commit is contained in:
@@ -25,6 +25,7 @@ import android.database.Cursor;
|
|||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.PersistableBundle;
|
import android.os.PersistableBundle;
|
||||||
|
import android.os.UserManager;
|
||||||
import android.provider.Telephony;
|
import android.provider.Telephony;
|
||||||
import android.telephony.CarrierConfigManager;
|
import android.telephony.CarrierConfigManager;
|
||||||
import android.telephony.SubscriptionInfo;
|
import android.telephony.SubscriptionInfo;
|
||||||
@@ -281,6 +282,11 @@ public class ApnEditor extends SettingsPreferenceFragment
|
|||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle icicle) {
|
public void onCreate(Bundle icicle) {
|
||||||
super.onCreate(icicle);
|
super.onCreate(icicle);
|
||||||
|
if (isUserRestricted()) {
|
||||||
|
Log.e(TAG, "This setting isn't available due to user restriction.");
|
||||||
|
finish();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
setLifecycleForAllControllers();
|
setLifecycleForAllControllers();
|
||||||
|
|
||||||
@@ -1453,6 +1459,23 @@ public class ApnEditor extends SettingsPreferenceFragment
|
|||||||
return apnData;
|
return apnData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
boolean isUserRestricted() {
|
||||||
|
UserManager userManager = getContext().getSystemService(UserManager.class);
|
||||||
|
if (userManager == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (!userManager.isAdminUser()) {
|
||||||
|
Log.e(TAG, "User is not an admin");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (userManager.hasUserRestriction(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS)) {
|
||||||
|
Log.e(TAG, "User is not allowed to configure mobile network");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
static class ApnData {
|
static class ApnData {
|
||||||
/**
|
/**
|
||||||
|
@@ -36,6 +36,7 @@ import android.content.res.Resources;
|
|||||||
import android.database.Cursor;
|
import android.database.Cursor;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.PersistableBundle;
|
import android.os.PersistableBundle;
|
||||||
|
import android.os.UserManager;
|
||||||
import android.telephony.CarrierConfigManager;
|
import android.telephony.CarrierConfigManager;
|
||||||
import android.view.KeyEvent;
|
import android.view.KeyEvent;
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
@@ -102,6 +103,8 @@ public class ApnEditorTest {
|
|||||||
@Mock
|
@Mock
|
||||||
private FragmentActivity mActivity;
|
private FragmentActivity mActivity;
|
||||||
@Mock
|
@Mock
|
||||||
|
private UserManager mUserManager;
|
||||||
|
@Mock
|
||||||
private ProxySubscriptionManager mProxySubscriptionMgr;
|
private ProxySubscriptionManager mProxySubscriptionMgr;
|
||||||
@Mock
|
@Mock
|
||||||
private CarrierConfigManager mCarrierConfigManager;
|
private CarrierConfigManager mCarrierConfigManager;
|
||||||
@@ -129,6 +132,10 @@ public class ApnEditorTest {
|
|||||||
doReturn(mContext.getTheme()).when(mActivity).getTheme();
|
doReturn(mContext.getTheme()).when(mActivity).getTheme();
|
||||||
doReturn(mContext.getContentResolver()).when(mActivity).getContentResolver();
|
doReturn(mContext.getContentResolver()).when(mActivity).getContentResolver();
|
||||||
|
|
||||||
|
doReturn(mUserManager).when(mContext).getSystemService(UserManager.class);
|
||||||
|
doReturn(true).when(mUserManager).isAdminUser();
|
||||||
|
doReturn(false).when(mUserManager)
|
||||||
|
.hasUserRestriction(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS);
|
||||||
doReturn(mCarrierConfigManager).when(mContext)
|
doReturn(mCarrierConfigManager).when(mContext)
|
||||||
.getSystemService(Context.CARRIER_CONFIG_SERVICE);
|
.getSystemService(Context.CARRIER_CONFIG_SERVICE);
|
||||||
doReturn(mBundle).when(mCarrierConfigManager).getConfigForSubId(anyInt());
|
doReturn(mBundle).when(mCarrierConfigManager).getConfigForSubId(anyInt());
|
||||||
@@ -471,6 +478,27 @@ public class ApnEditorTest {
|
|||||||
assertThat(ApnEditor.formatInteger("not an int")).isEqualTo("not an int");
|
assertThat(ApnEditor.formatInteger("not an int")).isEqualTo("not an int");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Config(shadows = ShadowFragment.class)
|
||||||
|
public void onCreate_notAdminUser_shouldFinish() {
|
||||||
|
doReturn(false).when(mUserManager).isAdminUser();
|
||||||
|
|
||||||
|
mApnEditorUT.onCreate(null);
|
||||||
|
|
||||||
|
verify(mApnEditorUT).finish();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Config(shadows = ShadowFragment.class)
|
||||||
|
public void onCreate_hasUserRestriction_shouldFinish() {
|
||||||
|
doReturn(true).when(mUserManager)
|
||||||
|
.hasUserRestriction(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS);
|
||||||
|
|
||||||
|
mApnEditorUT.onCreate(null);
|
||||||
|
|
||||||
|
verify(mApnEditorUT).finish();
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Config(shadows = ShadowFragment.class)
|
@Config(shadows = ShadowFragment.class)
|
||||||
public void onCreate_noAction_shouldFinishAndNoCrash() {
|
public void onCreate_noAction_shouldFinishAndNoCrash() {
|
||||||
|
Reference in New Issue
Block a user