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

Commit 64aa2889 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Restrict DataUsageSummary for guest user" into tm-qpr-dev am: b6399c95

parents b3599ae3 b6399c95
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -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;
@@ -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;
@@ -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();
@@ -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();
    }
}
+41 −7
Original line number Diff line number Diff line
@@ -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;
@@ -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;
@@ -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.
@@ -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(
@@ -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
@@ -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();
    }
}