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

Commit 60afc125 authored by SongFerng Wang's avatar SongFerng Wang Committed by Android (Google) Code Review
Browse files

Merge "Skip Data usage in Settings Widgets" into udc-qpr-dev

parents a5027a20 8007efdb
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -45,11 +45,14 @@ import androidx.preference.PreferenceGroup;

import com.android.settings.R;
import com.android.settings.Settings;
import com.android.settings.Settings.DataUsageSummaryActivity;
import com.android.settings.Settings.TetherSettingsActivity;
import com.android.settings.Settings.WifiTetherSettingsActivity;
import com.android.settings.activityembedding.ActivityEmbeddingUtils;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.gestures.OneHandedSettingsUtils;
import com.android.settings.network.SubscriptionUtil;
import com.android.settings.network.telephony.MobileNetworkUtils;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.wifi.WifiUtils;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
@@ -204,12 +207,24 @@ public class CreateShortcutPreferenceController extends BasePreferenceController
                Log.d(TAG, "Skipping non-system app: " + info.activityInfo);
                continue;
            }
            if (info.activityInfo.name.endsWith(DataUsageSummaryActivity.class.getSimpleName())) {
                if (!canShowDataUsage()) {
                    Log.d(TAG, "Skipping data usage settings:" + info.activityInfo);
                    continue;
                }
            }
            shortcuts.add(info);
        }
        Collections.sort(shortcuts, SHORTCUT_COMPARATOR);
        return shortcuts;
    }

    @VisibleForTesting
    boolean canShowDataUsage() {
        return SubscriptionUtil.isSimHardwareVisible(mContext)
                && !MobileNetworkUtils.isMobileNetworkUserRestricted(mContext);
    }

    @VisibleForTesting
    boolean canShowWifiHotspot() {
        return WifiUtils.canShowWifiHotspot(mContext);
+71 −0
Original line number Diff line number Diff line
@@ -36,8 +36,11 @@ import android.content.pm.ApplicationInfo;
import android.content.pm.ResolveInfo;
import android.content.pm.ShortcutInfo;
import android.content.pm.ShortcutManager;
import android.content.res.Resources;
import android.os.SystemProperties;
import android.os.UserManager;

import com.android.settings.R;
import com.android.settings.Settings;
import com.android.settings.testutils.shadow.ShadowConnectivityManager;

@@ -69,6 +72,10 @@ public class CreateShortcutPreferenceControllerTest {
    private ShortcutManager mShortcutManager;
    @Mock
    private Activity mHost;
    @Mock
    private Resources mResources;
    @Mock
    private UserManager mUserManager;

    private Context mContext;
    private ShadowConnectivityManager mShadowConnectivityManager;
@@ -188,6 +195,70 @@ public class CreateShortcutPreferenceControllerTest {
        assertThat(mController.queryShortcuts()).hasSize(0);
    }

    @Test
    public void queryShortcuts_configShowDataUsage_ShouldEnableShortcuts() {
        doReturn(true).when(mController).canShowDataUsage();
        setupActivityInfo(Settings.DataUsageSummaryActivity.class.getSimpleName());

        assertThat(mController.queryShortcuts()).hasSize(1);
    }

    @Test
    public void queryShortcuts_configNotShowDataUsage_ShouldDisableShortcuts() {
        doReturn(false).when(mController).canShowDataUsage();
        setupActivityInfo(Settings.DataUsageSummaryActivity.class.getSimpleName());

        assertThat(mController.queryShortcuts()).hasSize(0);
    }

    @Test
    public void canShowDataUsage_configShowDataUsage_returnTrue() {
        when(mContext.getResources()).thenReturn(mResources);
        when(mResources.getBoolean(R.bool.config_show_sim_info)).thenReturn(true);
        when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager);
        when(mUserManager.isGuestUser()).thenReturn(false);
        when(mUserManager.hasUserRestriction(
                UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS)).thenReturn(false);

        assertThat(mController.canShowDataUsage()).isTrue();
    }

    @Test
    public void canShowDataUsage_noSimCapability_returnFalse() {
        when(mContext.getResources()).thenReturn(mResources);
        when(mResources.getBoolean(R.bool.config_show_sim_info)).thenReturn(false);
        when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager);
        when(mUserManager.isGuestUser()).thenReturn(false);
        when(mUserManager.hasUserRestriction(
                UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS)).thenReturn(false);

        assertThat(mController.canShowDataUsage()).isFalse();
    }

    @Test
    public void canShowDataUsage_isGuestUser_returnFalse() {
        when(mContext.getResources()).thenReturn(mResources);
        when(mResources.getBoolean(R.bool.config_show_sim_info)).thenReturn(true);
        when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager);
        when(mUserManager.isGuestUser()).thenReturn(true);
        when(mUserManager.hasUserRestriction(
                UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS)).thenReturn(false);

        assertThat(mController.canShowDataUsage()).isFalse();
    }

    @Test
    public void canShowDataUsage_isMobileNetworkUserRestricted_returnFalse() {
        when(mContext.getResources()).thenReturn(mResources);
        when(mResources.getBoolean(R.bool.config_show_sim_info)).thenReturn(true);
        when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager);
        when(mUserManager.isGuestUser()).thenReturn(false);
        when(mUserManager.hasUserRestriction(
                UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS)).thenReturn(true);

        assertThat(mController.canShowDataUsage()).isFalse();
    }

    private void setupActivityInfo(String name) {
        ResolveInfo ri = new ResolveInfo();
        ri.activityInfo = new ActivityInfo();