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

Commit abb73492 authored by Zhen Zhang's avatar Zhen Zhang
Browse files

Let tether preference controllers extend TogglePreferenceController

Refactored USBTether, BluetoothTether and WifiTetherDisable preference
controllers to extend TogglePreferenceControllers, since they are all
SwitchPreference.

Bug: 150634051
Test: UsbTetherPreferenceControllerTest,
BluetoothTetherPreferenceControllerTest,
WifiTetherDisablePreferenceControllerTest,
CodeInspectionTest

Change-Id: I3b1d1c4e678c65ced8dd506a87c3c43ed300d64f
parent 084875a1
Loading
Loading
Loading
Loading
+19 −22
Original line number Diff line number Diff line
@@ -31,9 +31,8 @@ import androidx.lifecycle.LifecycleObserver;
import androidx.lifecycle.OnLifecycleEvent;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
import androidx.preference.SwitchPreference;

import com.android.settings.core.BasePreferenceController;
import com.android.settings.core.TogglePreferenceController;

import com.google.common.annotations.VisibleForTesting;

@@ -41,9 +40,8 @@ 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.
 */
public final class BluetoothTetherPreferenceController extends BasePreferenceController
        implements LifecycleObserver, Preference.OnPreferenceChangeListener,
        SharedPreferences.OnSharedPreferenceChangeListener {
public final class BluetoothTetherPreferenceController extends TogglePreferenceController
        implements LifecycleObserver, SharedPreferences.OnSharedPreferenceChangeListener {

    private static final String TAG = "BluetoothTetherPreferenceController";
    private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
@@ -59,6 +57,22 @@ public final class BluetoothTetherPreferenceController extends BasePreferenceCon
                context.getSharedPreferences(TetherEnabler.SHARED_PREF, Context.MODE_PRIVATE);
    }

    @Override
    public boolean isChecked() {
        return mSharedPreferences.getBoolean(mPreferenceKey, false);
    }

    @Override
    public boolean setChecked(boolean isChecked) {
        if (DEBUG) {
            Log.d(TAG, "preference changing to " + isChecked);
        }
        final SharedPreferences.Editor editor = mSharedPreferences.edit();
        editor.putBoolean(mPreferenceKey, isChecked);
        editor.apply();
        return true;
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_START)
    public void onStart() {
        mBluetoothState = BluetoothAdapter.getDefaultAdapter().getState();
@@ -107,11 +121,6 @@ public final class BluetoothTetherPreferenceController extends BasePreferenceCon
            default:
                preference.setEnabled(false);
        }

        if (preference instanceof SwitchPreference) {
            ((SwitchPreference) preference)
                    .setChecked(mSharedPreferences.getBoolean(mPreferenceKey, false));
        }
    }

    @Override
@@ -136,18 +145,6 @@ public final class BluetoothTetherPreferenceController extends BasePreferenceCon
        }
    };


    @Override
    public boolean onPreferenceChange(Preference preference, Object o) {
        if (DEBUG) {
            Log.d(TAG, "preference changing to " + o);
        }
        final SharedPreferences.Editor editor = mSharedPreferences.edit();
        editor.putBoolean(mPreferenceKey, (Boolean) o);
        editor.apply();
        return true;
    }

    @Override
    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
        if (TextUtils.equals(mPreferenceKey, key)) {
+21 −24
Original line number Diff line number Diff line
@@ -32,20 +32,18 @@ import androidx.lifecycle.LifecycleObserver;
import androidx.lifecycle.OnLifecycleEvent;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
import androidx.preference.SwitchPreference;

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

/**
 * This controller helps to manage the switch state and visibility of USB tether switch
 * preference. It stores preference values when preference changed.
 *
 */
public final class UsbTetherPreferenceController extends BasePreferenceController implements
        LifecycleObserver, Preference.OnPreferenceChangeListener,
        SharedPreferences.OnSharedPreferenceChangeListener {
public final class UsbTetherPreferenceController extends TogglePreferenceController implements
        LifecycleObserver, SharedPreferences.OnSharedPreferenceChangeListener {

    private static final String TAG = "UsbTetherPrefController";
    private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
@@ -63,6 +61,22 @@ public final class UsbTetherPreferenceController extends BasePreferenceControlle
                context.getSharedPreferences(TetherEnabler.SHARED_PREF, Context.MODE_PRIVATE);
    }

    @Override
    public boolean isChecked() {
        return mSharedPreferences.getBoolean(mPreferenceKey, false);
    }

    @Override
    public boolean setChecked(boolean isChecked) {
        if (DEBUG) {
            Log.d(TAG, "preference changing to " + isChecked);
        }
        final SharedPreferences.Editor editor = mSharedPreferences.edit();
        editor.putBoolean(mPreferenceKey, isChecked);
        editor.apply();
        return true;
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_START)
    public void onStart() {
        mMassStorageActive = Environment.MEDIA_SHARED.equals(Environment.getExternalStorageState());
@@ -107,16 +121,10 @@ public final class UsbTetherPreferenceController extends BasePreferenceControlle
    @Override
    public void updateState(Preference preference) {
        super.updateState(preference);
        if (preference == null) {
            return;
        }

        if (preference instanceof SwitchPreference) {
            ((SwitchPreference) preference)
                    .setChecked(mSharedPreferences.getBoolean(mPreferenceKey, false));
        }
        if (preference != null) {
            preference.setEnabled(mUsbConnected && !mMassStorageActive);
        }
    }

    @VisibleForTesting
    final BroadcastReceiver mUsbChangeReceiver = new BroadcastReceiver() {
@@ -134,17 +142,6 @@ public final class UsbTetherPreferenceController extends BasePreferenceControlle
        }
    };

    @Override
    public boolean onPreferenceChange(Preference preference, Object o) {
        if (DEBUG) {
            Log.d(TAG, "preference changing to " + o);
        }
        final SharedPreferences.Editor editor = mSharedPreferences.edit();
        editor.putBoolean(mPreferenceKey, (Boolean) o);
        editor.apply();
        return true;
    }

    @Override
    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
        if (TextUtils.equals(mPreferenceKey, key)) {
+21 −23
Original line number Diff line number Diff line
@@ -31,7 +31,7 @@ import androidx.preference.SwitchPreference;

import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.core.TogglePreferenceController;
import com.android.settingslib.TetherUtil;

/**
@@ -43,9 +43,8 @@ import com.android.settingslib.TetherUtil;
 * @see BluetoothTetherPreferenceController
 * @see UsbTetherPreferenceController
 */
public final class WifiTetherDisablePreferenceController extends BasePreferenceController
        implements LifecycleObserver, Preference.OnPreferenceChangeListener,
        SharedPreferences.OnSharedPreferenceChangeListener {
public final class WifiTetherDisablePreferenceController extends TogglePreferenceController
        implements LifecycleObserver, SharedPreferences.OnSharedPreferenceChangeListener {

    private static final String TAG = "WifiTetherDisablePreferenceController";
    private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
@@ -68,6 +67,24 @@ public final class WifiTetherDisablePreferenceController extends BasePreferenceC
                TetherEnabler.BLUETOOTH_TETHER_KEY, false);
    }

    @Override
    public boolean isChecked() {
        return !mSharedPreferences.getBoolean(TetherEnabler.KEY_ENABLE_WIFI_TETHERING, true);
    }

    @Override
    public boolean setChecked(boolean isChecked) {
        // The shared preference's value is in the opposite of this preference's value.
        final boolean enableWifi = !isChecked;
        if (DEBUG) {
            Log.d(TAG, "check state changing to " + isChecked);
        }
        final SharedPreferences.Editor editor = mSharedPreferences.edit();
        editor.putBoolean(TetherEnabler.KEY_ENABLE_WIFI_TETHERING, enableWifi);
        editor.apply();
        return true;
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
    public void onResume() {
        mSharedPreferences.registerOnSharedPreferenceChangeListener(this);
@@ -119,12 +136,6 @@ public final class WifiTetherDisablePreferenceController extends BasePreferenceC
    @Override
    public void updateState(Preference preference) {
        super.updateState(preference);

        if (preference instanceof SwitchPreference) {
            ((SwitchPreference) preference)
                    .setChecked(!mSharedPreferences.getBoolean(
                            TetherEnabler.KEY_ENABLE_WIFI_TETHERING, true));
        }
        setVisible(mScreen, mPreferenceKey, shouldShow());
    }

@@ -167,17 +178,4 @@ public final class WifiTetherDisablePreferenceController extends BasePreferenceC
            updateState(mPreference);
        }
    }

    @Override
    public boolean onPreferenceChange(Preference preference, Object o) {
        // The shared preference's value is in the opposite of this preference's value.
        final boolean enableWifi = !(boolean) o;
        if (DEBUG) {
            Log.d(TAG, "check state changing to " + o);
        }
        final SharedPreferences.Editor editor = mSharedPreferences.edit();
        editor.putBoolean(TetherEnabler.KEY_ENABLE_WIFI_TETHERING, enableWifi);
        editor.apply();
        return true;
    }
}