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

Commit 7ae0b641 authored by menghanli's avatar menghanli
Browse files

Fix transparency seekbar is enabled while fade feature is disabled.

Root cause: Show default status until setting key changed. It does not
show latest status when created.
Solution: Update the status when created.

Bug: 229566130
Test: make RunSettingsRoboTests ROBOTEST_FILTER=FloatingMenuTransparencyPreferenceControllerTest
Change-Id: Ia25fe5cec0444c1771e8ce31aae2a4cb3b0405a1
parent 361d42af
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -51,9 +51,7 @@ public class FloatingMenuTransparencyPreferenceController extends SliderPreferen
    private final ContentResolver mContentResolver;
    @VisibleForTesting
    final ContentObserver mContentObserver;

    @VisibleForTesting
    SeekBarPreference mPreference;
    private SeekBarPreference mPreference;

    public FloatingMenuTransparencyPreferenceController(Context context,
            String preferenceKey) {
@@ -83,6 +81,7 @@ public class FloatingMenuTransparencyPreferenceController extends SliderPreferen
        mPreference.setMin(getMin());
        mPreference.setHapticFeedbackMode(SeekBarPreference.HAPTIC_FEEDBACK_MODE_ON_ENDS);

        updateAvailabilityStatus();
        updateState(mPreference);
    }

+65 −3
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import static com.android.settings.core.BasePreferenceController.DISABLED_DEPEND

import static com.google.common.truth.Truth.assertThat;

import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

@@ -34,6 +35,7 @@ import android.content.ContentResolver;
import android.content.Context;
import android.provider.Settings;

import androidx.preference.PreferenceScreen;
import androidx.test.core.app.ApplicationProvider;

import com.android.settings.widget.SeekBarPreference;
@@ -60,11 +62,18 @@ public class FloatingMenuTransparencyPreferenceControllerTest {
    @Mock
    private ContentResolver mContentResolver;
    private FloatingMenuTransparencyPreferenceController mController;
    private SeekBarPreference mSeekBarPreference;

    @Mock
    private PreferenceScreen mScreen;

    @Before
    public void setUp() {
        when(mContext.getContentResolver()).thenReturn(mContentResolver);
        mController = new FloatingMenuTransparencyPreferenceController(mContext, "test_key");

        mSeekBarPreference = new SeekBarPreference(mContext);
        doReturn(mSeekBarPreference).when(mScreen).findPreference("test_key");
    }

    @Test
@@ -84,14 +93,67 @@ public class FloatingMenuTransparencyPreferenceControllerTest {
    }

    @Test
    public void onChange_a11yBtnModeChangeToNavigationBar_preferenceDisabled() {
        mController.mPreference = new SeekBarPreference(mContext);
    public void displayPreference_floatingMenuMode_fadeEnabled_preferenceEnabled() {
        Settings.Secure.putInt(mContentResolver, Settings.Secure.ACCESSIBILITY_BUTTON_MODE,
                ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU);
        Settings.Secure.putInt(mContentResolver,
                Settings.Secure.ACCESSIBILITY_FLOATING_MENU_FADE_ENABLED, /* ON */ 1);

        mController.displayPreference(mScreen);

        assertThat(mSeekBarPreference.isEnabled()).isTrue();
    }

    @Test
    public void displayPreference_floatingMenuMode_fadeDisabled_preferenceDisabled() {
        Settings.Secure.putInt(mContentResolver, Settings.Secure.ACCESSIBILITY_BUTTON_MODE,
                ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU);
        Settings.Secure.putInt(mContentResolver,
                Settings.Secure.ACCESSIBILITY_FLOATING_MENU_FADE_ENABLED, /* OFF */ 0);

        mController.displayPreference(mScreen);

        assertThat(mSeekBarPreference.isEnabled()).isFalse();
    }

    @Test
    public void displayPreference_navigationBarMode_preferenceDisabled() {
        Settings.Secure.putInt(mContentResolver, Settings.Secure.ACCESSIBILITY_BUTTON_MODE,
                ACCESSIBILITY_BUTTON_MODE_NAVIGATION_BAR);

        mController.displayPreference(mScreen);

        assertThat(mSeekBarPreference.isEnabled()).isFalse();
    }

    @Test
    public void onChange_floatingMenuModeChangeToNavigationBar_preferenceDisabled() {
        Settings.Secure.putInt(mContentResolver, Settings.Secure.ACCESSIBILITY_BUTTON_MODE,
                ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU);
        Settings.Secure.putInt(mContentResolver,
                Settings.Secure.ACCESSIBILITY_FLOATING_MENU_FADE_ENABLED, /* ON */ 1);
        mController.displayPreference(mScreen);

        Settings.Secure.putInt(mContentResolver, Settings.Secure.ACCESSIBILITY_BUTTON_MODE,
                ACCESSIBILITY_BUTTON_MODE_NAVIGATION_BAR);
        mController.mContentObserver.onChange(false);

        assertThat(mSeekBarPreference.isEnabled()).isFalse();
    }

    @Test
    public void onChange_navigationBarModeChangeToFloatingMenu_preferenceDisabled() {
        Settings.Secure.putInt(mContentResolver, Settings.Secure.ACCESSIBILITY_BUTTON_MODE,
                ACCESSIBILITY_BUTTON_MODE_NAVIGATION_BAR);
        Settings.Secure.putInt(mContentResolver,
                Settings.Secure.ACCESSIBILITY_FLOATING_MENU_FADE_ENABLED, /* ON */ 1);
        mController.displayPreference(mScreen);

        Settings.Secure.putInt(mContentResolver, Settings.Secure.ACCESSIBILITY_BUTTON_MODE,
                ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU);
        mController.mContentObserver.onChange(false);

        assertThat(mController.mPreference.isEnabled()).isFalse();
        assertThat(mSeekBarPreference.isEnabled()).isTrue();
    }

    @Test