Move PreferenceControllers to member variables to prevent memory leak
- Move PreferenceControllers to xml - Clean up the PreferenceController so that it's less tied to a fragment - Update and clean up the related robolectric test, so there are less mocks needed Bug: 352606511 Test: manually check the Color Correction screen is shown correctly, and choosing color correction options are reflected correctly Test: atest DaltonizerRadioButtonPreferenceControllerTest Test: atest ToggleDaltonizerPreferenceFragmentTest Flag: EXEMPT (moving controller to xml can't be flagged) Change-Id: I89b9366cfd7a398bb0572d34226d31d49373fd94
This commit is contained in:
@@ -24,8 +24,6 @@ import static com.android.settings.accessibility.AccessibilityUtil.State.ON;
|
||||
|
||||
import android.app.settings.SettingsEnums;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
import android.os.Bundle;
|
||||
import android.provider.Settings;
|
||||
import android.view.LayoutInflater;
|
||||
@@ -33,14 +31,11 @@ import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
import androidx.preference.Preference;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.accessibility.AccessibilityUtil.QuickSettingsTooltipType;
|
||||
import com.android.settings.search.BaseSearchIndexProvider;
|
||||
import com.android.settings.widget.SettingsMainSwitchPreference;
|
||||
import com.android.settingslib.core.AbstractPreferenceController;
|
||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||
import com.android.settingslib.search.SearchIndexable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -48,40 +43,18 @@ import java.util.List;
|
||||
|
||||
/** Settings for daltonizer. */
|
||||
@SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC)
|
||||
public class ToggleDaltonizerPreferenceFragment extends ToggleFeaturePreferenceFragment
|
||||
implements DaltonizerRadioButtonPreferenceController.OnChangeListener {
|
||||
public class ToggleDaltonizerPreferenceFragment extends ToggleFeaturePreferenceFragment {
|
||||
|
||||
private static final String TAG = "ToggleDaltonizerPreferenceFragment";
|
||||
private static final String ENABLED = Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED;
|
||||
private static final String KEY_PREVIEW = "daltonizer_preview";
|
||||
@VisibleForTesting
|
||||
static final String KEY_DEUTERANOMALY = "daltonizer_mode_deuteranomaly";
|
||||
@VisibleForTesting
|
||||
static final String KEY_PROTANOMALY = "daltonizer_mode_protanomaly";
|
||||
@VisibleForTesting
|
||||
static final String KEY_TRITANOMEALY = "daltonizer_mode_tritanomaly";
|
||||
@VisibleForTesting
|
||||
static final String KEY_GRAYSCALE = "daltonizer_mode_grayscale";
|
||||
private static final String KEY_DEUTERANOMALY = "daltonizer_mode_deuteranomaly";
|
||||
private static final String KEY_PROTANOMALY = "daltonizer_mode_protanomaly";
|
||||
private static final String KEY_TRITANOMEALY = "daltonizer_mode_tritanomaly";
|
||||
private static final String KEY_GRAYSCALE = "daltonizer_mode_grayscale";
|
||||
@VisibleForTesting
|
||||
static final String KEY_SATURATION = "daltonizer_saturation";
|
||||
|
||||
private static final List<AbstractPreferenceController> sControllers = new ArrayList<>();
|
||||
|
||||
private static List<AbstractPreferenceController> buildPreferenceControllers(Context context,
|
||||
Lifecycle lifecycle) {
|
||||
if (sControllers.size() == 0) {
|
||||
final Resources resources = context.getResources();
|
||||
final String[] daltonizerKeys = resources.getStringArray(
|
||||
R.array.daltonizer_mode_keys);
|
||||
|
||||
for (String daltonizerKey : daltonizerKeys) {
|
||||
sControllers.add(new DaltonizerRadioButtonPreferenceController(
|
||||
context, lifecycle, daltonizerKey));
|
||||
}
|
||||
}
|
||||
return sControllers;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void registerKeysToObserverCallback(
|
||||
AccessibilitySettingsContentObserver contentObserver) {
|
||||
@@ -117,13 +90,6 @@ public class ToggleDaltonizerPreferenceFragment extends ToggleFeaturePreferenceF
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCheckedChanged(Preference preference) {
|
||||
for (AbstractPreferenceController controller : sControllers) {
|
||||
controller.updateState(preference);
|
||||
}
|
||||
}
|
||||
|
||||
private void updateFooterPreference() {
|
||||
final String title = getPrefContext()
|
||||
.getString(R.string.accessibility_daltonizer_about_title);
|
||||
@@ -155,21 +121,6 @@ public class ToggleDaltonizerPreferenceFragment extends ToggleFeaturePreferenceF
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
updateSwitchBarToggleSwitch();
|
||||
for (AbstractPreferenceController controller :
|
||||
buildPreferenceControllers(getPrefContext(), getSettingsLifecycle())) {
|
||||
((DaltonizerRadioButtonPreferenceController) controller).setOnChangeListener(this);
|
||||
((DaltonizerRadioButtonPreferenceController) controller).displayPreference(
|
||||
getPreferenceScreen());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPause() {
|
||||
for (AbstractPreferenceController controller :
|
||||
buildPreferenceControllers(getPrefContext(), getSettingsLifecycle())) {
|
||||
((DaltonizerRadioButtonPreferenceController) controller).setOnChangeListener(null);
|
||||
}
|
||||
super.onPause();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
Reference in New Issue
Block a user