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
This commit is contained in:
Zhen Zhang
2020-03-03 11:28:18 -08:00
parent 084875a104
commit abb734920d
3 changed files with 61 additions and 69 deletions

View File

@@ -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,15 +121,9 @@ public final class UsbTetherPreferenceController extends BasePreferenceControlle
@Override
public void updateState(Preference preference) {
super.updateState(preference);
if (preference == null) {
return;
if (preference != null) {
preference.setEnabled(mUsbConnected && !mMassStorageActive);
}
if (preference instanceof SwitchPreference) {
((SwitchPreference) preference)
.setChecked(mSharedPreferences.getBoolean(mPreferenceKey, false));
}
preference.setEnabled(mUsbConnected && !mMassStorageActive);
}
@VisibleForTesting
@@ -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)) {