Loading src/com/android/settings/datausage/DataUsageSummary.java +16 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ import android.app.settings.SettingsEnums; import android.content.Context; import android.net.NetworkTemplate; import android.os.Bundle; import android.os.UserManager; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import android.text.BidiFormatter; Loading @@ -27,6 +28,8 @@ import android.text.SpannableString; import android.text.TextUtils; import android.text.format.Formatter; import android.text.style.RelativeSizeSpan; import android.util.EventLog; import android.util.Log; import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; Loading Loading @@ -83,6 +86,12 @@ public class DataUsageSummary extends DataUsageBaseFragment implements DataUsage public void onCreate(Bundle icicle) { super.onCreate(icicle); 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)) { finish(); Loading Loading @@ -282,4 +291,11 @@ public class DataUsageSummary extends DataUsageBaseFragment implements DataUsage updateState(); 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(); } } tests/robotests/src/com/android/settings/datausage/DataUsageSummaryTest.java +41 −7 Original line number Diff line number Diff line Loading @@ -31,13 +31,14 @@ import android.app.usage.NetworkStatsManager; import android.content.Context; import android.content.res.Resources; import android.net.NetworkPolicyManager; import android.os.UserManager; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import androidx.fragment.app.FragmentActivity; import androidx.test.core.app.ApplicationProvider; import com.android.settings.R; import com.android.settings.testutils.shadow.ShadowDashboardFragment; import com.android.settings.testutils.shadow.ShadowDataUsageUtils; import com.android.settings.testutils.shadow.ShadowUserManager; Loading @@ -45,13 +46,15 @@ import com.android.settings.testutils.shadow.ShadowUtils; import org.junit.Before; import org.junit.Ignore; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; 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.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.Shadows; import org.robolectric.annotation.Config; import org.robolectric.shadows.ShadowApplication; Loading @@ -66,16 +69,22 @@ import org.robolectric.shadows.ShadowTelephonyManager; }) @RunWith(RobolectricTestRunner.class) public class DataUsageSummaryTest { @Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule(); @Spy Context mContext = ApplicationProvider.getApplicationContext(); @Mock private UserManager mUserManager; @Mock private NetworkPolicyManager mNetworkPolicyManager; @Mock private NetworkStatsManager mNetworkStatsManager; private TelephonyManager mTelephonyManager; private Context mContext; private Resources mResources; 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. * These tests should be updated as code gets refactored to improve testability. Loading @@ -83,12 +92,13 @@ public class DataUsageSummaryTest { @Before public void setUp() { MockitoAnnotations.initMocks(this); doReturn(mUserManager).when(mContext).getSystemService(UserManager.class); doReturn(false).when(mUserManager).isGuestUser(); ShadowApplication shadowContext = ShadowApplication.getInstance(); ShadowUserManager.getShadow().setIsAdminUser(true); shadowContext.setSystemService(Context.NETWORK_POLICY_SERVICE, mNetworkPolicyManager); mContext = spy(RuntimeEnvironment.application); mTelephonyManager = mContext.getSystemService(TelephonyManager.class); final ShadowTelephonyManager shadowTelephonyManager = Shadows.shadowOf(mTelephonyManager); shadowTelephonyManager.setTelephonyManagerForSubscriptionId( Loading @@ -101,6 +111,12 @@ public class DataUsageSummaryTest { doReturn(true).when(mResources).getBoolean(R.bool.config_show_sim_info); 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 Loading Loading @@ -201,4 +217,22 @@ public class DataUsageSummaryTest { verify(dataUsageSummary).addWifiSection(); 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(); } } Loading
src/com/android/settings/datausage/DataUsageSummary.java +16 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ import android.app.settings.SettingsEnums; import android.content.Context; import android.net.NetworkTemplate; import android.os.Bundle; import android.os.UserManager; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import android.text.BidiFormatter; Loading @@ -27,6 +28,8 @@ import android.text.SpannableString; import android.text.TextUtils; import android.text.format.Formatter; import android.text.style.RelativeSizeSpan; import android.util.EventLog; import android.util.Log; import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; Loading Loading @@ -83,6 +86,12 @@ public class DataUsageSummary extends DataUsageBaseFragment implements DataUsage public void onCreate(Bundle icicle) { super.onCreate(icicle); 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)) { finish(); Loading Loading @@ -282,4 +291,11 @@ public class DataUsageSummary extends DataUsageBaseFragment implements DataUsage updateState(); 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(); } }
tests/robotests/src/com/android/settings/datausage/DataUsageSummaryTest.java +41 −7 Original line number Diff line number Diff line Loading @@ -31,13 +31,14 @@ import android.app.usage.NetworkStatsManager; import android.content.Context; import android.content.res.Resources; import android.net.NetworkPolicyManager; import android.os.UserManager; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import androidx.fragment.app.FragmentActivity; import androidx.test.core.app.ApplicationProvider; import com.android.settings.R; import com.android.settings.testutils.shadow.ShadowDashboardFragment; import com.android.settings.testutils.shadow.ShadowDataUsageUtils; import com.android.settings.testutils.shadow.ShadowUserManager; Loading @@ -45,13 +46,15 @@ import com.android.settings.testutils.shadow.ShadowUtils; import org.junit.Before; import org.junit.Ignore; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; 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.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.Shadows; import org.robolectric.annotation.Config; import org.robolectric.shadows.ShadowApplication; Loading @@ -66,16 +69,22 @@ import org.robolectric.shadows.ShadowTelephonyManager; }) @RunWith(RobolectricTestRunner.class) public class DataUsageSummaryTest { @Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule(); @Spy Context mContext = ApplicationProvider.getApplicationContext(); @Mock private UserManager mUserManager; @Mock private NetworkPolicyManager mNetworkPolicyManager; @Mock private NetworkStatsManager mNetworkStatsManager; private TelephonyManager mTelephonyManager; private Context mContext; private Resources mResources; 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. * These tests should be updated as code gets refactored to improve testability. Loading @@ -83,12 +92,13 @@ public class DataUsageSummaryTest { @Before public void setUp() { MockitoAnnotations.initMocks(this); doReturn(mUserManager).when(mContext).getSystemService(UserManager.class); doReturn(false).when(mUserManager).isGuestUser(); ShadowApplication shadowContext = ShadowApplication.getInstance(); ShadowUserManager.getShadow().setIsAdminUser(true); shadowContext.setSystemService(Context.NETWORK_POLICY_SERVICE, mNetworkPolicyManager); mContext = spy(RuntimeEnvironment.application); mTelephonyManager = mContext.getSystemService(TelephonyManager.class); final ShadowTelephonyManager shadowTelephonyManager = Shadows.shadowOf(mTelephonyManager); shadowTelephonyManager.setTelephonyManagerForSubscriptionId( Loading @@ -101,6 +111,12 @@ public class DataUsageSummaryTest { doReturn(true).when(mResources).getBoolean(R.bool.config_show_sim_info); 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 Loading Loading @@ -201,4 +217,22 @@ public class DataUsageSummaryTest { verify(dataUsageSummary).addWifiSection(); 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(); } }