Make it so client code does not tie tether to wifi

The wifi service already handles turning off tethering if
multi-interface is/isn't supported. We don't need to do tie wifi
and tethering stuff together in the UI.

Test: robotests still pass
Bug: 79213401
Change-Id: I699dfe2d7646f248a54faa5a8429176697614cdf
This commit is contained in:
Salvador Martinez
2018-05-07 13:34:59 -07:00
parent 0e197112e3
commit 188af9439e
4 changed files with 29 additions and 23 deletions

View File

@@ -160,7 +160,7 @@ public class WifiEnabler implements SwitchWidgetController.OnSwitchChangeListene
setSwitchBarChecked(false); setSwitchBarChecked(false);
mSwitchWidget.setEnabled(true); mSwitchWidget.setEnabled(true);
} }
if (mayDisableTethering(!mSwitchWidget.isChecked())) {
if (RestrictedLockUtils.hasBaseUserRestriction(mContext, if (RestrictedLockUtils.hasBaseUserRestriction(mContext,
UserManager.DISALLOW_CONFIG_TETHERING, UserHandle.myUserId())) { UserManager.DISALLOW_CONFIG_TETHERING, UserHandle.myUserId())) {
mSwitchWidget.setEnabled(false); mSwitchWidget.setEnabled(false);
@@ -170,7 +170,6 @@ public class WifiEnabler implements SwitchWidgetController.OnSwitchChangeListene
mSwitchWidget.setDisabledByAdmin(admin); mSwitchWidget.setDisabledByAdmin(admin);
} }
} }
}
private void setSwitchBarChecked(boolean checked) { private void setSwitchBarChecked(boolean checked) {
mStateMachineEvent = true; mStateMachineEvent = true;
@@ -203,15 +202,11 @@ public class WifiEnabler implements SwitchWidgetController.OnSwitchChangeListene
// Show toast message if Wi-Fi is not allowed in airplane mode // Show toast message if Wi-Fi is not allowed in airplane mode
if (isChecked && !WirelessUtils.isRadioAllowed(mContext, Settings.Global.RADIO_WIFI)) { if (isChecked && !WirelessUtils.isRadioAllowed(mContext, Settings.Global.RADIO_WIFI)) {
Toast.makeText(mContext, R.string.wifi_in_airplane_mode, Toast.LENGTH_SHORT).show(); Toast.makeText(mContext, R.string.wifi_in_airplane_mode, Toast.LENGTH_SHORT).show();
// Reset switch to off. No infinite check/listenenr loop. // Reset switch to off. No infinite check/listener loop.
mSwitchWidget.setChecked(false); mSwitchWidget.setChecked(false);
return false; return false;
} }
// Disable tethering if enabling Wifi
if (mayDisableTethering(isChecked)) {
mConnectivityManager.stopTethering(ConnectivityManager.TETHERING_WIFI);
}
if (isChecked) { if (isChecked) {
mMetricsFeatureProvider.action(mContext, MetricsEvent.ACTION_WIFI_ON); mMetricsFeatureProvider.action(mContext, MetricsEvent.ACTION_WIFI_ON);
} else { } else {
@@ -226,10 +221,4 @@ public class WifiEnabler implements SwitchWidgetController.OnSwitchChangeListene
} }
return true; return true;
} }
private boolean mayDisableTethering(boolean isChecked) {
final int wifiApState = mWifiManager.getWifiApState();
return isChecked && ((wifiApState == WifiManager.WIFI_AP_STATE_ENABLING) ||
(wifiApState == WifiManager.WIFI_AP_STATE_ENABLED));
}
} }

View File

@@ -89,6 +89,18 @@ public class ShadowRestrictedLockUtils {
return (sKeyguardDisabledFeatures & features) == 0 ? null : new EnforcedAdmin(); return (sKeyguardDisabledFeatures & features) == 0 ? null : new EnforcedAdmin();
} }
@Implementation
public static boolean hasBaseUserRestriction(Context context,
String userRestriction, int userId) {
return sIsRestricted;
}
@Implementation
public static EnforcedAdmin checkIfRestrictionEnforced(Context context,
String userRestriction, int userId) {
return sIsRestricted ? new EnforcedAdmin() : null;
}
public static boolean hasAdminSupportDetailsIntentLaunched() { public static boolean hasAdminSupportDetailsIntentLaunched() {
return sAdminSupportDetailsIntentLaunched; return sAdminSupportDetailsIntentLaunched;
} }

View File

@@ -16,6 +16,8 @@
package com.android.settings.wifi; package com.android.settings.wifi;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
@@ -25,6 +27,7 @@ import android.net.ConnectivityManager;
import android.net.wifi.WifiManager; import android.net.wifi.WifiManager;
import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.testutils.shadow.ShadowRestrictedLockUtils;
import com.android.settings.widget.SwitchWidgetController; import com.android.settings.widget.SwitchWidgetController;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
@@ -33,8 +36,10 @@ 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.MockitoAnnotations;
import org.robolectric.annotation.Config;
@RunWith(SettingsRobolectricTestRunner.class) @RunWith(SettingsRobolectricTestRunner.class)
@Config(shadows = ShadowRestrictedLockUtils.class)
public class WifiEnablerTest { public class WifiEnablerTest {
@Mock @Mock
@@ -59,8 +64,6 @@ public class WifiEnablerTest {
when(mWifiManager.setWifiEnabled(true)).thenReturn(true); when(mWifiManager.setWifiEnabled(true)).thenReturn(true);
when(mWifiManager.getWifiApState()).thenReturn(WifiManager.WIFI_AP_STATE_ENABLED); when(mWifiManager.getWifiApState()).thenReturn(WifiManager.WIFI_AP_STATE_ENABLED);
mEnabler.onSwitchToggled(true); assertThat(mEnabler.onSwitchToggled(true)).isTrue();
verify(mConnectivityManager).stopTethering(ConnectivityManager.TETHERING_WIFI);
} }
} }

View File

@@ -36,6 +36,7 @@ import androidx.preference.PreferenceScreen;
import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.testutils.shadow.ShadowRestrictedLockUtils;
import com.android.settings.widget.MasterSwitchPreference; import com.android.settings.widget.MasterSwitchPreference;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
@@ -48,6 +49,7 @@ import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
@RunWith(SettingsRobolectricTestRunner.class) @RunWith(SettingsRobolectricTestRunner.class)
@Config(shadows = ShadowRestrictedLockUtils.class)
public class WifiMasterSwitchPreferenceControllerTest { public class WifiMasterSwitchPreferenceControllerTest {
@Mock @Mock