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

Commit efd5d04a authored by changbetty's avatar changbetty
Browse files

To disable Wi-Fi tethering when user restriction is set

Bug: 203168953
Test: make RunSettingsRoboTests ROBOTEST_FILTER=WifiTetherPreferenceControllerTest
Change-Id: I749de121c3918382bf03e437e683477bac23cae1
parent 69bf7679
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnStart;
import com.android.settingslib.core.lifecycle.events.OnStop;
import com.android.settingslib.wifi.WifiEnterpriseRestrictionUtils;

import java.util.List;

@@ -48,6 +49,8 @@ public class WifiTetherPreferenceController extends AbstractPreferenceController
    private final String[] mWifiRegexs;
    private final WifiManager mWifiManager;
    private final Lifecycle mLifecycle;
    @VisibleForTesting
    boolean mIsWifiTetheringAllow;
    private int mSoftApState;
    @VisibleForTesting
    Preference mPreference;
@@ -65,6 +68,7 @@ public class WifiTetherPreferenceController extends AbstractPreferenceController
        mTetheringManager = context.getSystemService(TetheringManager.class);
        mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
        mWifiRegexs = mTetheringManager.getTetherableWifiRegexs();
        mIsWifiTetheringAllow = WifiEnterpriseRestrictionUtils.isWifiTetheringAllowed(context);
        mLifecycle = lifecycle;
        if (lifecycle != null) {
            lifecycle.addObserver(this);
@@ -89,6 +93,7 @@ public class WifiTetherPreferenceController extends AbstractPreferenceController
            // unavailable
            return;
        }
        mPreference.setEnabled(mIsWifiTetheringAllow);
    }

    @Override
+27 −0
Original line number Diff line number Diff line
@@ -26,6 +26,8 @@ import android.content.Context;
import android.net.TetheringManager;
import android.net.wifi.SoftApConfiguration;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.os.UserManager;

import androidx.lifecycle.LifecycleOwner;
import androidx.preference.PreferenceScreen;
@@ -60,6 +62,10 @@ public class WifiTetherPreferenceControllerTest {
    @Mock
    private WifiManager mWifiManager;
    @Mock
    private UserManager mUserManager;
    @Mock
    private Bundle mBundle;
    @Mock
    private PreferenceScreen mScreen;
    private SoftApConfiguration mSoftApConfiguration;

@@ -79,6 +85,8 @@ public class WifiTetherPreferenceControllerTest {
        mPreference = new PrimarySwitchPreference(RuntimeEnvironment.application);
        when(mContext.getSystemService(Context.TETHERING_SERVICE)).thenReturn(mTetheringManager);
        when(mContext.getSystemService(Context.WIFI_SERVICE)).thenReturn(mWifiManager);
        when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager);
        when(mUserManager.getUserRestrictions()).thenReturn(mBundle);
        when(mScreen.findPreference(anyString())).thenReturn(mPreference);
        mSoftApConfiguration = new SoftApConfiguration.Builder().setSsid(SSID).build();
        when(mWifiManager.getSoftApConfiguration()).thenReturn(mSoftApConfiguration);
@@ -86,6 +94,7 @@ public class WifiTetherPreferenceControllerTest {
        when(mTetheringManager.getTetherableWifiRegexs()).thenReturn(new String[]{"1", "2"});
        mController = new WifiTetherPreferenceController(mContext, mLifecycle,
                false /* initSoftApManager */);
        mController.mIsWifiTetheringAllow = true;
        mController.displayPreference(mScreen);
    }

@@ -103,6 +112,24 @@ public class WifiTetherPreferenceControllerTest {
        assertThat(mController.isAvailable()).isTrue();
    }

    @Test
    public void displayPreference_wifiTetheringNotAllowed_shouldDisable() {
        mController.mIsWifiTetheringAllow = false;

        mController.displayPreference(mScreen);

        assertThat(mPreference.isEnabled()).isFalse();
    }

    @Test
    public void displayPreference_wifiTetheringAllowed_shouldEnable() {
        mController.mIsWifiTetheringAllow = true;

        mController.displayPreference(mScreen);

        assertThat(mPreference.isEnabled()).isTrue();
    }

    @Test
    public void testHandleWifiApStateChanged_stateEnabling_showEnablingSummary() {
        mController.handleWifiApStateChanged(WifiManager.WIFI_AP_STATE_ENABLING, 0 /* reason */);