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

Commit 9a845de9 authored by Peter_Liang's avatar Peter_Liang
Browse files

Fix that the toggle of High contrast text doesn't change to turn off after...

Fix that the toggle of High contrast text doesn't change to turn off after tapping the Reset button.

Solution:
Triggered the updateState() after setChecked() to ensure the UI with the correct state.

Fix: 220081053
Test: atest HighTextContrastPreferenceControllerTest
Change-Id: I33c61d4e5602dfd67ec93a0826613304a1af7c2d
parent 0e2cb579
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -19,6 +19,9 @@ package com.android.settings.accessibility;
import android.content.Context;
import android.provider.Settings;

import androidx.preference.PreferenceScreen;
import androidx.preference.SwitchPreference;

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

@@ -27,6 +30,7 @@ import com.android.settings.core.TogglePreferenceController;
 */
public class HighTextContrastPreferenceController extends TogglePreferenceController implements
        TextReadingResetController.ResetStateListener {
    private SwitchPreference mSwitchPreference;

    public HighTextContrastPreferenceController(Context context, String preferenceKey) {
        super(context, preferenceKey);
@@ -54,8 +58,15 @@ public class HighTextContrastPreferenceController extends TogglePreferenceContro
        return R.string.menu_key_accessibility;
    }

    @Override
    public void displayPreference(PreferenceScreen screen) {
        super.displayPreference(screen);
        mSwitchPreference = screen.findPreference(getPreferenceKey());
    }

    @Override
    public void resetState() {
        setChecked(false);
        updateState(mSwitchPreference);
    }
}
+16 −1
Original line number Diff line number Diff line
@@ -19,8 +19,11 @@ package com.android.settings.accessibility;
import static com.google.common.truth.Truth.assertThat;

import android.content.Context;
import android.os.Looper;
import android.provider.Settings;

import androidx.preference.PreferenceManager;
import androidx.preference.PreferenceScreen;
import androidx.preference.SwitchPreference;
import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;
@@ -37,6 +40,7 @@ import org.junit.runner.RunWith;
@RunWith(AndroidJUnit4.class)
public class HighTextContrastPreferenceControllerTest {

    private static final String PREF_KEY = "text_contrast";
    private static final int ON = 1;
    private static final int OFF = 0;
    private static final int UNKNOWN = -1;
@@ -44,12 +48,20 @@ public class HighTextContrastPreferenceControllerTest {
    private Context mContext;
    private SwitchPreference mPreference;
    private HighTextContrastPreferenceController mController;
    private PreferenceScreen mScreen;

    @Before
    public void setUp() {
        mContext = ApplicationProvider.getApplicationContext();
        if (Looper.myLooper() == null) {
            Looper.prepare();
        }
        final PreferenceManager preferenceManager = new PreferenceManager(mContext);
        mScreen = preferenceManager.createPreferenceScreen(mContext);
        mPreference = new SwitchPreference(mContext);
        mController = new HighTextContrastPreferenceController(mContext, "text_contrast");
        mPreference.setKey(PREF_KEY);
        mScreen.addPreference(mPreference);
        mController = new HighTextContrastPreferenceController(mContext, PREF_KEY);
    }

    @Test
@@ -99,10 +111,13 @@ public class HighTextContrastPreferenceControllerTest {

    @Test
    public void resetState_shouldDisableTextContrast() {
        mController.displayPreference(mScreen);
        mController.setChecked(true);
        mPreference.setChecked(true);

        mController.resetState();

        assertThat(mPreference.isChecked()).isFalse();
        assertThat(Settings.Secure.getInt(mContext.getContentResolver(),
                Settings.Secure.ACCESSIBILITY_HIGH_TEXT_CONTRAST_ENABLED, UNKNOWN)).isEqualTo(OFF);
    }