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

Commit de5cc27f authored by Salvador Martinez's avatar Salvador Martinez Committed by android-build-merger
Browse files

Merge "Make it so client code does not tie tether to wifi" into pi-dev

am: f005640b

Change-Id: Ib19d86fae333c7d363bc30e90a94027aefc91022
parents b422264d f005640b
Loading
Loading
Loading
Loading
+9 −20
Original line number Diff line number Diff line
@@ -160,7 +160,7 @@ public class WifiEnabler implements SwitchWidgetController.OnSwitchChangeListene
                setSwitchBarChecked(false);
                mSwitchWidget.setEnabled(true);
        }
        if (mayDisableTethering(!mSwitchWidget.isChecked())) {

        if (RestrictedLockUtils.hasBaseUserRestriction(mContext,
                UserManager.DISALLOW_CONFIG_TETHERING, UserHandle.myUserId())) {
            mSwitchWidget.setEnabled(false);
@@ -170,7 +170,6 @@ public class WifiEnabler implements SwitchWidgetController.OnSwitchChangeListene
            mSwitchWidget.setDisabledByAdmin(admin);
        }
    }
    }

    private void setSwitchBarChecked(boolean checked) {
        mStateMachineEvent = true;
@@ -203,15 +202,11 @@ public class WifiEnabler implements SwitchWidgetController.OnSwitchChangeListene
        // Show toast message if Wi-Fi is not allowed in airplane mode
        if (isChecked && !WirelessUtils.isRadioAllowed(mContext, Settings.Global.RADIO_WIFI)) {
            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);
            return false;
        }

        // Disable tethering if enabling Wifi
        if (mayDisableTethering(isChecked)) {
            mConnectivityManager.stopTethering(ConnectivityManager.TETHERING_WIFI);
        }
        if (isChecked) {
            mMetricsFeatureProvider.action(mContext, MetricsEvent.ACTION_WIFI_ON);
        } else {
@@ -226,10 +221,4 @@ public class WifiEnabler implements SwitchWidgetController.OnSwitchChangeListene
        }
        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));
    }
}
+29 −17
Original line number Diff line number Diff line
@@ -28,26 +28,26 @@ import org.robolectric.annotation.Resetter;

@Implements(RestrictedLockUtils.class)
public class ShadowRestrictedLockUtils {
    private static boolean isRestricted;
    private static String[] restrictedPkgs;
    private static boolean adminSupportDetailsIntentLaunched;
    private static int keyguardDisabledFeatures;
    private static boolean sIsRestricted;
    private static String[] sRestrictedPkgs;
    private static boolean sAdminSupportDetailsIntentLaunched;
    private static int sKeyguardDisabledFeatures;

    @Resetter
    public static void reset() {
        isRestricted = false;
        restrictedPkgs = null;
        adminSupportDetailsIntentLaunched = false;
        keyguardDisabledFeatures = 0;
        sIsRestricted = false;
        sRestrictedPkgs = null;
        sAdminSupportDetailsIntentLaunched = false;
        sKeyguardDisabledFeatures = 0;
    }

    @Implementation
    public static EnforcedAdmin checkIfMeteredDataRestricted(Context context,
            String packageName, int userId) {
        if (isRestricted) {
        if (sIsRestricted) {
            return new EnforcedAdmin();
        }
        if (ArrayUtils.contains(restrictedPkgs, packageName)) {
        if (ArrayUtils.contains(sRestrictedPkgs, packageName)) {
            return new EnforcedAdmin();
        }
        return null;
@@ -55,32 +55,44 @@ public class ShadowRestrictedLockUtils {

    @Implementation
    public static void sendShowAdminSupportDetailsIntent(Context context, EnforcedAdmin admin) {
        adminSupportDetailsIntentLaunched = true;
        sAdminSupportDetailsIntentLaunched = true;
    }

    @Implementation
    public static EnforcedAdmin checkIfKeyguardFeaturesDisabled(Context context,
            int features, final @UserIdInt int userId) {
        return (keyguardDisabledFeatures & 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() {
        return adminSupportDetailsIntentLaunched;
        return sAdminSupportDetailsIntentLaunched;
    }

    public static void clearAdminSupportDetailsIntentLaunch() {
        adminSupportDetailsIntentLaunched = false;
        sAdminSupportDetailsIntentLaunched = false;
    }

    public static void setRestricted(boolean restricted) {
        isRestricted = restricted;
        sIsRestricted = restricted;
    }

    public static void setRestrictedPkgs(String... pkgs) {
        restrictedPkgs = pkgs;
        sRestrictedPkgs = pkgs;
    }

    public static void setKeyguardDisabledFeatures(int features) {
        keyguardDisabledFeatures = features;
        sKeyguardDisabledFeatures = features;
    }
}
+6 −3
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package com.android.settings.wifi;

import static com.google.common.truth.Truth.assertThat;

import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -25,6 +27,7 @@ import android.net.ConnectivityManager;
import android.net.wifi.WifiManager;

import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.testutils.shadow.ShadowRestrictedLockUtils;
import com.android.settings.widget.SwitchWidgetController;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;

@@ -33,8 +36,10 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.annotation.Config;

@RunWith(SettingsRobolectricTestRunner.class)
@Config(shadows = ShadowRestrictedLockUtils.class)
public class WifiEnablerTest {

    @Mock
@@ -59,8 +64,6 @@ public class WifiEnablerTest {
        when(mWifiManager.setWifiEnabled(true)).thenReturn(true);
        when(mWifiManager.getWifiApState()).thenReturn(WifiManager.WIFI_AP_STATE_ENABLED);

        mEnabler.onSwitchToggled(true);

        verify(mConnectivityManager).stopTethering(ConnectivityManager.TETHERING_WIFI);
        assertThat(mEnabler.onSwitchToggled(true)).isTrue();
    }
}
+2 −0
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ import android.support.v7.preference.PreferenceScreen;

import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.testutils.shadow.ShadowRestrictedLockUtils;
import com.android.settings.widget.MasterSwitchPreference;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;

@@ -48,6 +49,7 @@ import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;

@RunWith(SettingsRobolectricTestRunner.class)
@Config(shadows = ShadowRestrictedLockUtils.class)
public class WifiMasterSwitchPreferenceControllerTest {

    @Mock