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

Commit 07d9557b authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Make tether preference controllers extend BasePreferenceController"

parents fdd3a1fc 258fb7f6
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -20,7 +20,7 @@ import static android.net.ConnectivityManager.ACTION_TETHER_STATE_CHANGED;
import static android.net.ConnectivityManager.TETHERING_WIFI;
import static android.net.wifi.WifiManager.WIFI_AP_STATE_CHANGED_ACTION;

import static com.android.settings.network.WifiTetherDisablePreferenceController.KEY_ENABLE_WIFI_TETHERING;
import static com.android.settings.network.TetherEnabler.KEY_ENABLE_WIFI_TETHERING;

import android.app.settings.SettingsEnums;
import android.bluetooth.BluetoothAdapter;
+14 −20
Original line number Diff line number Diff line
@@ -33,34 +33,29 @@ import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
import androidx.preference.SwitchPreference;

import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settings.core.BasePreferenceController;

import com.google.common.annotations.VisibleForTesting;

/**
 * This controller helps to manage the switch state and visibility of bluetooth tether switch
 * preference. It stores preference value when preference changed.
 * TODO(b/147272749): Extend BasePreferenceController.java instead.
 */
public final class BluetoothTetherPreferenceController extends AbstractPreferenceController
public final class BluetoothTetherPreferenceController extends BasePreferenceController
        implements LifecycleObserver, Preference.OnPreferenceChangeListener {

    private static final String TAG = "BluetoothTetherPreferenceController";
    private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
    public static final String PREF_KEY = "enable_bluetooth_tethering";
    private final ConnectivityManager mCm;
    private int mBluetoothState;
    private Preference mPreference;
    private final SharedPreferences mSharedPreferences;

    public BluetoothTetherPreferenceController(Context context, Lifecycle lifecycle) {
        super(context);
    public BluetoothTetherPreferenceController(Context context, String prefKey) {
        super(context, prefKey);
        mCm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        mSharedPreferences =
                context.getSharedPreferences(TetherEnabler.SHARED_PREF, Context.MODE_PRIVATE);
        if (lifecycle != null) {
            lifecycle.addObserver(this);
        }
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_START)
@@ -75,19 +70,13 @@ public final class BluetoothTetherPreferenceController extends AbstractPreferenc
        mContext.unregisterReceiver(mBluetoothChangeReceiver);
    }

    @Override
    public boolean isAvailable() {
        final String[] bluetoothRegexs = mCm.getTetherableBluetoothRegexs();
        return bluetoothRegexs != null && bluetoothRegexs.length > 0;
    }

    @Override
    public void displayPreference(PreferenceScreen screen) {
        super.displayPreference(screen);
        mPreference = screen.findPreference(PREF_KEY);
        mPreference = screen.findPreference(mPreferenceKey);
        if (mPreference != null && mPreference instanceof SwitchPreference) {
            ((SwitchPreference) mPreference)
                    .setChecked(mSharedPreferences.getBoolean(PREF_KEY, false));
                    .setChecked(mSharedPreferences.getBoolean(mPreferenceKey, false));
        }
    }

@@ -110,8 +99,13 @@ public final class BluetoothTetherPreferenceController extends AbstractPreferenc
    }

    @Override
    public String getPreferenceKey() {
        return PREF_KEY;
    public int getAvailabilityStatus() {
        final String[] bluetoothRegexs = mCm.getTetherableBluetoothRegexs();
        if (bluetoothRegexs == null || bluetoothRegexs.length == 0) {
            return CONDITIONALLY_UNAVAILABLE;
        } else {
            return AVAILABLE;
        }
    }

    @VisibleForTesting
@@ -133,7 +127,7 @@ public final class BluetoothTetherPreferenceController extends AbstractPreferenc
            Log.d(TAG, "preference changing to " + o);
        }
        final SharedPreferences.Editor editor = mSharedPreferences.edit();
        editor.putBoolean(PREF_KEY, (Boolean) o);
        editor.putBoolean(mPreferenceKey, (Boolean) o);
        editor.apply();
        return true;
    }
+8 −7
Original line number Diff line number Diff line
@@ -61,13 +61,14 @@ public final class TetherEnabler implements SwitchWidgetController.OnSwitchChang

    public static final String SHARED_PREF = "tether_options";

    // This KEY is used for a shared preference value, not for any displayed preferences.
    public static final String KEY_ENABLE_WIFI_TETHERING = "enable_wifi_tethering";
    @VisibleForTesting
    static final String WIFI_TETHER_KEY =
            WifiTetherDisablePreferenceController.KEY_ENABLE_WIFI_TETHERING;
    static final String WIFI_TETHER_DISABLE_KEY = "disable_wifi_tethering";
    @VisibleForTesting
    static final String USB_TETHER_KEY = UsbTetherPreferenceController.PREF_KEY;
    static final String USB_TETHER_KEY = "enable_usb_tethering";
    @VisibleForTesting
    static final String BLUETOOTH_TETHER_KEY = BluetoothTetherPreferenceController.PREF_KEY;
    static final String BLUETOOTH_TETHER_KEY = "enable_bluetooth_tethering";

    private final SwitchWidgetController mSwitchWidgetController;
    private final WifiManager mWifiManager;
@@ -176,7 +177,7 @@ public final class TetherEnabler implements SwitchWidgetController.OnSwitchChang
    private void stopTether() {

        // Wi-Fi tether is selected by default.
        if (mSharedPreferences.getBoolean(WIFI_TETHER_KEY, true)) {
        if (mSharedPreferences.getBoolean(KEY_ENABLE_WIFI_TETHERING, true)) {
            stopTethering(TETHERING_WIFI);
        }

@@ -202,7 +203,7 @@ public final class TetherEnabler implements SwitchWidgetController.OnSwitchChang
    void startTether() {

        // Wi-Fi tether is selected by default.
        if (mSharedPreferences.getBoolean(WIFI_TETHER_KEY, true)) {
        if (mSharedPreferences.getBoolean(KEY_ENABLE_WIFI_TETHERING, true)) {
            startTethering(TETHERING_WIFI);
        }

@@ -328,7 +329,7 @@ public final class TetherEnabler implements SwitchWidgetController.OnSwitchChang
        if (!mSwitchWidgetController.isChecked()) {
            return;
        }
        if (TextUtils.equals(WIFI_TETHER_KEY, key)) {
        if (TextUtils.equals(KEY_ENABLE_WIFI_TETHERING, key)) {
            if (sharedPreferences.getBoolean(key, true)) {
                startTethering(TETHERING_WIFI);
            } else {
+13 −19
Original line number Diff line number Diff line
@@ -36,20 +36,18 @@ import androidx.preference.SwitchPreference;

import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.Utils;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settings.core.BasePreferenceController;

/**
 * This controller helps to manage the switch state and visibility of USB tether switch
 * preference. It stores preference values when preference changed.
 * TODO(b/147272749): Extend BasePreferenceController.java instead.
 *
 */
public final class UsbTetherPreferenceController extends AbstractPreferenceController implements
public final class UsbTetherPreferenceController extends BasePreferenceController implements
        LifecycleObserver, Preference.OnPreferenceChangeListener {

    private static final String TAG = "UsbTetherPrefController";
    private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
    public static final String PREF_KEY = "enable_usb_tethering";

    private final ConnectivityManager mCm;
    private boolean mUsbConnected;
@@ -57,14 +55,11 @@ public final class UsbTetherPreferenceController extends AbstractPreferenceContr
    private Preference mPreference;
    private final SharedPreferences mSharedPreferences;

    public UsbTetherPreferenceController(Context context, Lifecycle lifecycle) {
        super(context);
    public UsbTetherPreferenceController(Context context, String prefKey) {
        super(context, prefKey);
        mCm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        mSharedPreferences =
                context.getSharedPreferences(TetherEnabler.SHARED_PREF, Context.MODE_PRIVATE);
        if (lifecycle != null) {
            lifecycle.addObserver(this);
        }
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_START)
@@ -82,23 +77,22 @@ public final class UsbTetherPreferenceController extends AbstractPreferenceContr
    }

    @Override
    public boolean isAvailable() {
    public int getAvailabilityStatus() {
        String[] usbRegexs = mCm.getTetherableUsbRegexs();
        return usbRegexs != null && usbRegexs.length > 0 && !Utils.isMonkeyRunning();
        if (usbRegexs == null || usbRegexs.length == 0 || Utils.isMonkeyRunning()) {
            return CONDITIONALLY_UNAVAILABLE;
        } else {
            return AVAILABLE;
        }

    @Override
    public String getPreferenceKey() {
        return PREF_KEY;
    }

    @Override
    public void displayPreference(PreferenceScreen screen) {
        super.displayPreference(screen);
        mPreference = screen.findPreference(PREF_KEY);
        mPreference = screen.findPreference(mPreferenceKey);
        if (mPreference != null && mPreference instanceof SwitchPreference) {
            ((SwitchPreference) mPreference)
                    .setChecked(mSharedPreferences.getBoolean(PREF_KEY, false));
                    .setChecked(mSharedPreferences.getBoolean(mPreferenceKey, false));
        }
    }

@@ -136,7 +130,7 @@ public final class UsbTetherPreferenceController extends AbstractPreferenceContr
            Log.d(TAG, "preference changing to " + o);
        }
        final SharedPreferences.Editor editor = mSharedPreferences.edit();
        editor.putBoolean(PREF_KEY, (Boolean) o);
        editor.putBoolean(mPreferenceKey, (Boolean) o);
        editor.apply();
        return true;
    }
+16 −25
Original line number Diff line number Diff line
@@ -30,7 +30,7 @@ import androidx.preference.PreferenceScreen;
import androidx.preference.SwitchPreference;

import com.android.internal.annotations.VisibleForTesting;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settings.core.BasePreferenceController;

/**
 * This controller helps to manage the switch state and visibility of wifi tether disable switch
@@ -40,19 +40,13 @@ import com.android.settingslib.core.AbstractPreferenceController;
 *
 * @see BluetoothTetherPreferenceController
 * @see UsbTetherPreferenceController
 * TODO(b/147272749): Extend BasePreferenceController.java instead.
 *
 */
public final class WifiTetherDisablePreferenceController extends AbstractPreferenceController
public final class WifiTetherDisablePreferenceController extends BasePreferenceController
        implements LifecycleObserver, Preference.OnPreferenceChangeListener,
        SharedPreferences.OnSharedPreferenceChangeListener {

    private static final String TAG = "WifiTetherDisablePreferenceController";
    private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
    public static final String PREF_KEY = "disable_wifi_tethering";

    // This KEY is used for a shared preference value, not for any displayed preferences.
    public static final String KEY_ENABLE_WIFI_TETHERING = "enable_wifi_tethering";

    private final ConnectivityManager mCm;
    private boolean mBluetoothTetherEnabled;
@@ -61,8 +55,8 @@ public final class WifiTetherDisablePreferenceController extends AbstractPrefere
    private Preference mPreference;
    private final SharedPreferences mSharedPreferences;

    public WifiTetherDisablePreferenceController(Context context, Lifecycle lifecycle) {
        super(context);
    public WifiTetherDisablePreferenceController(Context context, String prefKey) {
        super(context, prefKey);
        mSharedPreferences =
                context.getSharedPreferences(TetherEnabler.SHARED_PREF, Context.MODE_PRIVATE);
        mCm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
@@ -70,9 +64,6 @@ public final class WifiTetherDisablePreferenceController extends AbstractPrefere
                TetherEnabler.USB_TETHER_KEY, false);
        mBluetoothTetherEnabled = mSharedPreferences.getBoolean(
                TetherEnabler.BLUETOOTH_TETHER_KEY, false);
        if (lifecycle != null) {
            lifecycle.addObserver(this);
        }
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
@@ -85,20 +76,19 @@ public final class WifiTetherDisablePreferenceController extends AbstractPrefere
        mSharedPreferences.unregisterOnSharedPreferenceChangeListener(this);
    }

    @Override
    public boolean isAvailable() {
        final String[] wifiRegexs = mCm.getTetherableWifiRegexs();
        return wifiRegexs != null && wifiRegexs.length > 0 && shouldShow();
    }

    @VisibleForTesting
    boolean shouldShow() {
        return mBluetoothTetherEnabled || mUSBTetherEnabled;
    }

    @Override
    public String getPreferenceKey() {
        return PREF_KEY;
    public int getAvailabilityStatus() {
        final String[] wifiRegexs = mCm.getTetherableWifiRegexs();
        if (wifiRegexs == null || wifiRegexs.length == 0 || !shouldShow()) {
            return CONDITIONALLY_UNAVAILABLE;
        } else {
            return AVAILABLE;
        }
    }

    @Override
@@ -111,10 +101,11 @@ public final class WifiTetherDisablePreferenceController extends AbstractPrefere
    public void displayPreference(PreferenceScreen screen) {
        super.displayPreference(screen);
        mScreen = screen;
        mPreference = screen.findPreference(PREF_KEY);
        mPreference = screen.findPreference(mPreferenceKey);
        if (mPreference != null && mPreference instanceof SwitchPreference) {
            ((SwitchPreference) mPreference)
                    .setChecked(!mSharedPreferences.getBoolean(KEY_ENABLE_WIFI_TETHERING, true));
                    .setChecked(!mSharedPreferences.getBoolean(
                            TetherEnabler.KEY_ENABLE_WIFI_TETHERING, true));
            mPreference.setOnPreferenceChangeListener(this);
        }
        updateState(mPreference);
@@ -123,7 +114,7 @@ public final class WifiTetherDisablePreferenceController extends AbstractPrefere
    @Override
    public void updateState(Preference preference) {
        super.updateState(preference);
        setVisible(mScreen, PREF_KEY, shouldShow());
        setVisible(mScreen, mPreferenceKey, shouldShow());
    }

    @Override
@@ -162,7 +153,7 @@ public final class WifiTetherDisablePreferenceController extends AbstractPrefere
            Log.d(TAG, "check state changing to " + o);
        }
        final SharedPreferences.Editor editor = mSharedPreferences.edit();
        editor.putBoolean(KEY_ENABLE_WIFI_TETHERING, enableWifi);
        editor.putBoolean(TetherEnabler.KEY_ENABLE_WIFI_TETHERING, enableWifi);
        editor.apply();
        return true;
    }
Loading