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

Commit 9fac24c1 authored by Jason Hsu's avatar Jason Hsu Committed by Android (Google) Code Review
Browse files

Merge "Fix transparency seekbar in accessibility button page is backwards" into sc-dev

parents 7ca749e3 ea6bb2dc
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -57,7 +57,7 @@
        android:key="accessibility_button_opacity"
        android:title="@string/accessibility_button_opacity_title"
        android:persistent="false"
        settings:controller="com.android.settings.accessibility.FloatingMenuOpacityPreferenceController"/>
        settings:controller="com.android.settings.accessibility.FloatingMenuTransparencyPreferenceController"/>

    <com.android.settings.accessibility.AccessibilityFooterPreference
        android:key="accessibility_button_footer"
+20 −17
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import android.os.Handler;
import android.os.Looper;
import android.provider.Settings;

import androidx.annotation.FloatRange;
import androidx.annotation.VisibleForTesting;
import androidx.preference.PreferenceScreen;

@@ -32,15 +33,18 @@ import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnPause;
import com.android.settingslib.core.lifecycle.events.OnResume;

/** Preference controller that controls the opacity seekbar in accessibility button page. */
public class FloatingMenuOpacityPreferenceController extends SliderPreferenceController
/** Preference controller that controls the transparency seekbar in accessibility button page. */
public class FloatingMenuTransparencyPreferenceController extends SliderPreferenceController
        implements LifecycleObserver, OnResume, OnPause {

    @VisibleForTesting
    static final float DEFAULT_OPACITY = 0.55f;
    @FloatRange(from = 0.0, to = 1.0)
    static final float DEFAULT_TRANSPARENCY = 0.45f;
    @VisibleForTesting
    static final float MAXIMUM_TRANSPARENCY = 1.0f;
    private static final int FADE_ENABLED = 1;
    private static final float MIN_PROGRESS = 10f;
    private static final float MAX_PROGRESS = 100f;
    private static final float MIN_PROGRESS = 0f;
    private static final float MAX_PROGRESS = 90f;
    @VisibleForTesting
    static final float PRECISION = 100f;

@@ -51,7 +55,7 @@ public class FloatingMenuOpacityPreferenceController extends SliderPreferenceCon
    @VisibleForTesting
    SeekBarPreference mPreference;

    public FloatingMenuOpacityPreferenceController(Context context,
    public FloatingMenuTransparencyPreferenceController(Context context,
            String preferenceKey) {
        super(context, preferenceKey);
        mContentResolver = context.getContentResolver();
@@ -101,15 +105,14 @@ public class FloatingMenuOpacityPreferenceController extends SliderPreferenceCon

    @Override
    public int getSliderPosition() {
        return convertOpacityFloatToInt(getOpacity());
        return convertTransparencyFloatToInt(getTransparency());
    }

    @Override
    public boolean setSliderPosition(int position) {
        final float value = convertOpacityIntToFloat(position);

        final float opacityValue = MAXIMUM_TRANSPARENCY - convertTransparencyIntToFloat(position);
        return Settings.Secure.putFloat(mContentResolver,
                Settings.Secure.ACCESSIBILITY_FLOATING_MENU_OPACITY, value);
                Settings.Secure.ACCESSIBILITY_FLOATING_MENU_OPACITY, opacityValue);
    }

    @Override
@@ -130,21 +133,21 @@ public class FloatingMenuOpacityPreferenceController extends SliderPreferenceCon
        mPreference.setEnabled(AccessibilityUtil.isFloatingMenuEnabled(mContext) && fadeEnabled);
    }

    private int convertOpacityFloatToInt(float value) {
    private int convertTransparencyFloatToInt(float value) {
        return Math.round(value * PRECISION);
    }

    private float convertOpacityIntToFloat(int value) {
    private float convertTransparencyIntToFloat(int value) {
        return (float) value / PRECISION;
    }

    private float getOpacity() {
        float value = Settings.Secure.getFloat(mContentResolver,
                Settings.Secure.ACCESSIBILITY_FLOATING_MENU_OPACITY, DEFAULT_OPACITY);
    private float getTransparency() {
        float transparencyValue = MAXIMUM_TRANSPARENCY - (Settings.Secure.getFloat(mContentResolver,
                Settings.Secure.ACCESSIBILITY_FLOATING_MENU_OPACITY, DEFAULT_TRANSPARENCY));
        final float minValue = MIN_PROGRESS / PRECISION;
        final float maxValue = MAX_PROGRESS / PRECISION;

        return (value < minValue || value > maxValue) ? DEFAULT_OPACITY : value;
        return (transparencyValue < minValue || transparencyValue > maxValue)
                ? DEFAULT_TRANSPARENCY : transparencyValue;
    }
}
+15 −11
Original line number Diff line number Diff line
@@ -19,8 +19,9 @@ package com.android.settings.accessibility;
import static android.provider.Settings.Secure.ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU;
import static android.provider.Settings.Secure.ACCESSIBILITY_BUTTON_MODE_NAVIGATION_BAR;

import static com.android.settings.accessibility.FloatingMenuOpacityPreferenceController.DEFAULT_OPACITY;
import static com.android.settings.accessibility.FloatingMenuOpacityPreferenceController.PRECISION;
import static com.android.settings.accessibility.FloatingMenuTransparencyPreferenceController.DEFAULT_TRANSPARENCY;
import static com.android.settings.accessibility.FloatingMenuTransparencyPreferenceController.MAXIMUM_TRANSPARENCY;
import static com.android.settings.accessibility.FloatingMenuTransparencyPreferenceController.PRECISION;
import static com.android.settings.core.BasePreferenceController.AVAILABLE;
import static com.android.settings.core.BasePreferenceController.DISABLED_DEPENDENT_SETTING;

@@ -47,9 +48,9 @@ import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
import org.robolectric.RobolectricTestRunner;

/** Tests for {@link FloatingMenuOpacityPreferenceController}. */
/** Tests for {@link FloatingMenuTransparencyPreferenceController}. */
@RunWith(RobolectricTestRunner.class)
public class FloatingMenuOpacityPreferenceControllerTest {
public class FloatingMenuTransparencyPreferenceControllerTest {

    @Rule
    public MockitoRule mocks = MockitoJUnit.rule();
@@ -58,12 +59,12 @@ public class FloatingMenuOpacityPreferenceControllerTest {
    private final Context mContext = ApplicationProvider.getApplicationContext();
    @Mock
    private ContentResolver mContentResolver;
    private FloatingMenuOpacityPreferenceController mController;
    private FloatingMenuTransparencyPreferenceController mController;

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

    @Test
@@ -95,10 +96,12 @@ public class FloatingMenuOpacityPreferenceControllerTest {

    @Test
    public void getSliderPosition_putNormalOpacityValue_expectedValue() {
        final float transparencyValue = 0.65f;
        Settings.Secure.putFloat(mContext.getContentResolver(),
                Settings.Secure.ACCESSIBILITY_FLOATING_MENU_OPACITY, 0.35f);
                Settings.Secure.ACCESSIBILITY_FLOATING_MENU_OPACITY,
                (MAXIMUM_TRANSPARENCY - transparencyValue));

        assertThat(mController.getSliderPosition()).isEqualTo(35);
        assertThat(mController.getSliderPosition()).isEqualTo((int) (transparencyValue * 100));
    }

    @Test
@@ -106,17 +109,18 @@ public class FloatingMenuOpacityPreferenceControllerTest {
        Settings.Secure.putFloat(mContext.getContentResolver(),
                Settings.Secure.ACCESSIBILITY_FLOATING_MENU_OPACITY, 0.01f);

        final int defaultValue = Math.round(DEFAULT_OPACITY * PRECISION);
        final int defaultValue = Math.round(DEFAULT_TRANSPARENCY * PRECISION);
        assertThat(mController.getSliderPosition()).isEqualTo(defaultValue);
    }

    @Test
    public void setSliderPosition_expectedValue() {
        mController.setSliderPosition(27);
        final float transparencyValue = 0.27f;
        mController.setSliderPosition((int) (transparencyValue * 100));

        final float value = Settings.Secure.getFloat(mContext.getContentResolver(),
                Settings.Secure.ACCESSIBILITY_FLOATING_MENU_OPACITY, -1);
        assertThat(value).isEqualTo(0.27f);
        assertThat(value).isEqualTo((MAXIMUM_TRANSPARENCY - transparencyValue));
    }

    @Test