Merge "Restrict DataUsageSummary for guest user" into tm-qpr-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
b6399c95b3
@@ -19,6 +19,7 @@ import android.app.settings.SettingsEnums;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.net.NetworkTemplate;
|
import android.net.NetworkTemplate;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.os.UserManager;
|
||||||
import android.telephony.SubscriptionInfo;
|
import android.telephony.SubscriptionInfo;
|
||||||
import android.telephony.SubscriptionManager;
|
import android.telephony.SubscriptionManager;
|
||||||
import android.text.BidiFormatter;
|
import android.text.BidiFormatter;
|
||||||
@@ -27,6 +28,8 @@ import android.text.SpannableString;
|
|||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.text.format.Formatter;
|
import android.text.format.Formatter;
|
||||||
import android.text.style.RelativeSizeSpan;
|
import android.text.style.RelativeSizeSpan;
|
||||||
|
import android.util.EventLog;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
import androidx.annotation.VisibleForTesting;
|
import androidx.annotation.VisibleForTesting;
|
||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
@@ -83,6 +86,12 @@ public class DataUsageSummary extends DataUsageBaseFragment implements DataUsage
|
|||||||
public void onCreate(Bundle icicle) {
|
public void onCreate(Bundle icicle) {
|
||||||
super.onCreate(icicle);
|
super.onCreate(icicle);
|
||||||
Context context = getContext();
|
Context context = getContext();
|
||||||
|
if (isGuestUser(context)) {
|
||||||
|
Log.e(TAG, "This setting isn't available due to user restriction.");
|
||||||
|
EventLog.writeEvent(0x534e4554, "262243574", -1 /* UID */, "Guest user");
|
||||||
|
finish();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!isSimHardwareVisible(context)) {
|
if (!isSimHardwareVisible(context)) {
|
||||||
finish();
|
finish();
|
||||||
@@ -282,4 +291,11 @@ public class DataUsageSummary extends DataUsageBaseFragment implements DataUsage
|
|||||||
updateState();
|
updateState();
|
||||||
mSummaryController.updateState(mSummaryPreference);
|
mSummaryController.updateState(mSummaryPreference);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static boolean isGuestUser(Context context) {
|
||||||
|
if (context == null) return false;
|
||||||
|
final UserManager userManager = context.getSystemService(UserManager.class);
|
||||||
|
if (userManager == null) return false;
|
||||||
|
return userManager.isGuestUser();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -31,13 +31,14 @@ import android.app.usage.NetworkStatsManager;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.net.NetworkPolicyManager;
|
import android.net.NetworkPolicyManager;
|
||||||
|
import android.os.UserManager;
|
||||||
import android.telephony.SubscriptionManager;
|
import android.telephony.SubscriptionManager;
|
||||||
import android.telephony.TelephonyManager;
|
import android.telephony.TelephonyManager;
|
||||||
|
|
||||||
import androidx.fragment.app.FragmentActivity;
|
import androidx.fragment.app.FragmentActivity;
|
||||||
|
import androidx.test.core.app.ApplicationProvider;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
|
|
||||||
import com.android.settings.testutils.shadow.ShadowDashboardFragment;
|
import com.android.settings.testutils.shadow.ShadowDashboardFragment;
|
||||||
import com.android.settings.testutils.shadow.ShadowDataUsageUtils;
|
import com.android.settings.testutils.shadow.ShadowDataUsageUtils;
|
||||||
import com.android.settings.testutils.shadow.ShadowUserManager;
|
import com.android.settings.testutils.shadow.ShadowUserManager;
|
||||||
@@ -45,13 +46,15 @@ import com.android.settings.testutils.shadow.ShadowUtils;
|
|||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Ignore;
|
import org.junit.Ignore;
|
||||||
|
import org.junit.Rule;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.Spy;
|
||||||
|
import org.mockito.junit.MockitoJUnit;
|
||||||
|
import org.mockito.junit.MockitoRule;
|
||||||
import org.robolectric.Robolectric;
|
import org.robolectric.Robolectric;
|
||||||
import org.robolectric.RobolectricTestRunner;
|
import org.robolectric.RobolectricTestRunner;
|
||||||
import org.robolectric.RuntimeEnvironment;
|
|
||||||
import org.robolectric.Shadows;
|
import org.robolectric.Shadows;
|
||||||
import org.robolectric.annotation.Config;
|
import org.robolectric.annotation.Config;
|
||||||
import org.robolectric.shadows.ShadowApplication;
|
import org.robolectric.shadows.ShadowApplication;
|
||||||
@@ -66,16 +69,22 @@ import org.robolectric.shadows.ShadowTelephonyManager;
|
|||||||
})
|
})
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
public class DataUsageSummaryTest {
|
public class DataUsageSummaryTest {
|
||||||
|
@Rule
|
||||||
|
public final MockitoRule mMockitoRule = MockitoJUnit.rule();
|
||||||
|
@Spy
|
||||||
|
Context mContext = ApplicationProvider.getApplicationContext();
|
||||||
|
@Mock
|
||||||
|
private UserManager mUserManager;
|
||||||
@Mock
|
@Mock
|
||||||
private NetworkPolicyManager mNetworkPolicyManager;
|
private NetworkPolicyManager mNetworkPolicyManager;
|
||||||
@Mock
|
@Mock
|
||||||
private NetworkStatsManager mNetworkStatsManager;
|
private NetworkStatsManager mNetworkStatsManager;
|
||||||
private TelephonyManager mTelephonyManager;
|
private TelephonyManager mTelephonyManager;
|
||||||
private Context mContext;
|
|
||||||
private Resources mResources;
|
private Resources mResources;
|
||||||
private FragmentActivity mActivity;
|
private FragmentActivity mActivity;
|
||||||
|
|
||||||
|
private DataUsageSummary mDataUsageSummary;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This set up is contrived to get a passing test so that the build doesn't block without tests.
|
* This set up is contrived to get a passing test so that the build doesn't block without tests.
|
||||||
* These tests should be updated as code gets refactored to improve testability.
|
* These tests should be updated as code gets refactored to improve testability.
|
||||||
@@ -83,12 +92,13 @@ public class DataUsageSummaryTest {
|
|||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
MockitoAnnotations.initMocks(this);
|
doReturn(mUserManager).when(mContext).getSystemService(UserManager.class);
|
||||||
|
doReturn(false).when(mUserManager).isGuestUser();
|
||||||
|
|
||||||
ShadowApplication shadowContext = ShadowApplication.getInstance();
|
ShadowApplication shadowContext = ShadowApplication.getInstance();
|
||||||
ShadowUserManager.getShadow().setIsAdminUser(true);
|
ShadowUserManager.getShadow().setIsAdminUser(true);
|
||||||
shadowContext.setSystemService(Context.NETWORK_POLICY_SERVICE, mNetworkPolicyManager);
|
shadowContext.setSystemService(Context.NETWORK_POLICY_SERVICE, mNetworkPolicyManager);
|
||||||
|
|
||||||
mContext = spy(RuntimeEnvironment.application);
|
|
||||||
mTelephonyManager = mContext.getSystemService(TelephonyManager.class);
|
mTelephonyManager = mContext.getSystemService(TelephonyManager.class);
|
||||||
final ShadowTelephonyManager shadowTelephonyManager = Shadows.shadowOf(mTelephonyManager);
|
final ShadowTelephonyManager shadowTelephonyManager = Shadows.shadowOf(mTelephonyManager);
|
||||||
shadowTelephonyManager.setTelephonyManagerForSubscriptionId(
|
shadowTelephonyManager.setTelephonyManagerForSubscriptionId(
|
||||||
@@ -101,6 +111,12 @@ public class DataUsageSummaryTest {
|
|||||||
doReturn(true).when(mResources).getBoolean(R.bool.config_show_sim_info);
|
doReturn(true).when(mResources).getBoolean(R.bool.config_show_sim_info);
|
||||||
|
|
||||||
doReturn(mNetworkStatsManager).when(mActivity).getSystemService(NetworkStatsManager.class);
|
doReturn(mNetworkStatsManager).when(mActivity).getSystemService(NetworkStatsManager.class);
|
||||||
|
|
||||||
|
mDataUsageSummary = spy(new DataUsageSummary());
|
||||||
|
doReturn(mContext).when(mDataUsageSummary).getContext();
|
||||||
|
doNothing().when(mDataUsageSummary).enableProxySubscriptionManager(any());
|
||||||
|
doReturn(true).when(mDataUsageSummary).removePreference(anyString());
|
||||||
|
doNothing().when(mDataUsageSummary).addWifiSection();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -201,4 +217,22 @@ public class DataUsageSummaryTest {
|
|||||||
verify(dataUsageSummary).addWifiSection();
|
verify(dataUsageSummary).addWifiSection();
|
||||||
verify(dataUsageSummary, never()).addMobileSection(anyInt());
|
verify(dataUsageSummary, never()).addMobileSection(anyInt());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onCreate_isNotGuestUser_shouldNotFinish() {
|
||||||
|
doReturn(false).when(mUserManager).isGuestUser();
|
||||||
|
|
||||||
|
mDataUsageSummary.onCreate(null);
|
||||||
|
|
||||||
|
verify(mDataUsageSummary, never()).finish();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onCreate_isGuestUser_shouldFinish() {
|
||||||
|
doReturn(true).when(mUserManager).isGuestUser();
|
||||||
|
|
||||||
|
mDataUsageSummary.onCreate(null);
|
||||||
|
|
||||||
|
verify(mDataUsageSummary).finish();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user