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

Commit 3d626d8e authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Partial flag clean up: Remove large mouse pointer in A11y Setting screen" into main

parents 4c9232dd 38ed8808
Loading
Loading
Loading
Loading
+0 −4
Original line number Original line Diff line number Diff line
@@ -5521,10 +5521,6 @@
        screen magnification on app transitions</string>
        screen magnification on app transitions</string>
    <!-- Title for the accessibility preference to power button to end a call. [CHAR LIMIT=35] -->
    <!-- Title for the accessibility preference to power button to end a call. [CHAR LIMIT=35] -->
    <string name="accessibility_power_button_ends_call_prerefence_title">Power button ends call</string>
    <string name="accessibility_power_button_ends_call_prerefence_title">Power button ends call</string>
    <!-- Title for the accessibility preference for enabling/disabling large icons for mouse/trackpad pointers. [CHAR LIMIT=35] -->
    <string name="accessibility_toggle_large_pointer_icon_title">Large mouse pointer</string>
    <!-- Summary for the accessibility preference for enabling/disabling large icons for mouse/trackpad pointers. [CHAR LIMIT=60] -->
    <string name="accessibility_toggle_large_pointer_icon_summary">Make the mouse pointer more noticeable</string>
    <!-- Title for the accessibility preference for forcing all apps to use dark theme. [CHAR LIMIT=35] -->
    <!-- Title for the accessibility preference for forcing all apps to use dark theme. [CHAR LIMIT=35] -->
    <string name="accessibility_force_invert_title">Make more apps dark</string>
    <string name="accessibility_force_invert_title">Make more apps dark</string>
    <!-- Summary for the accessibility preference for forcing all apps to use dark theme. [CHAR LIMIT=100] -->
    <!-- Summary for the accessibility preference for forcing all apps to use dark theme. [CHAR LIMIT=100] -->
+0 −7
Original line number Original line Diff line number Diff line
@@ -58,13 +58,6 @@
        android:title="@string/accessibility_disable_animations"
        android:title="@string/accessibility_disable_animations"
        settings:controller="com.android.settings.accessibility.DisableAnimationsPreferenceController"/>
        settings:controller="com.android.settings.accessibility.DisableAnimationsPreferenceController"/>


    <SwitchPreferenceCompat
        android:key="toggle_large_pointer_icon"
        android:persistent="false"
        android:summary="@string/accessibility_toggle_large_pointer_icon_summary"
        android:title="@string/accessibility_toggle_large_pointer_icon_title"
        settings:controller="com.android.settings.accessibility.LargePointerIconPreferenceController"/>

    <PreferenceCategory
    <PreferenceCategory
        android:key="experimental_category"
        android:key="experimental_category"
        android:persistent="false"
        android:persistent="false"
+0 −7
Original line number Original line Diff line number Diff line
@@ -48,11 +48,9 @@ public class ColorAndMotionFragment extends DashboardFragment {


    // Preferences
    // Preferences
    private static final String DISPLAY_DALTONIZER_PREFERENCE_SCREEN = "daltonizer_preference";
    private static final String DISPLAY_DALTONIZER_PREFERENCE_SCREEN = "daltonizer_preference";
    private static final String TOGGLE_LARGE_POINTER_ICON = "toggle_large_pointer_icon";


    private Preference mDisplayDaltonizerPreferenceScreen;
    private Preference mDisplayDaltonizerPreferenceScreen;
    private TwoStatePreference mToggleDisableAnimationsPreference;
    private TwoStatePreference mToggleDisableAnimationsPreference;
    private TwoStatePreference mToggleLargePointerIconPreference;
    private AccessibilitySettingsContentObserver mSettingsContentObserver;
    private AccessibilitySettingsContentObserver mSettingsContentObserver;


    private final List<String> mShortcutFeatureKeys = new ArrayList<>();
    private final List<String> mShortcutFeatureKeys = new ArrayList<>();
@@ -116,9 +114,6 @@ public class ColorAndMotionFragment extends DashboardFragment {


        // Disable animation.
        // Disable animation.
        mToggleDisableAnimationsPreference = findPreference(RemoveAnimationsPreference.KEY);
        mToggleDisableAnimationsPreference = findPreference(RemoveAnimationsPreference.KEY);

        // Large pointer icon.
        mToggleLargePointerIconPreference = findPreference(TOGGLE_LARGE_POINTER_ICON);
    }
    }


    /**
    /**
@@ -134,10 +129,8 @@ public class ColorAndMotionFragment extends DashboardFragment {
            // hardware-accelerated color transform.
            // hardware-accelerated color transform.
            getPreferenceScreen().removePreference(mDisplayDaltonizerPreferenceScreen);
            getPreferenceScreen().removePreference(mDisplayDaltonizerPreferenceScreen);
            getPreferenceScreen().removePreference(mToggleDisableAnimationsPreference);
            getPreferenceScreen().removePreference(mToggleDisableAnimationsPreference);
            getPreferenceScreen().removePreference(mToggleLargePointerIconPreference);
            experimentalCategory.addPreference(mDisplayDaltonizerPreferenceScreen);
            experimentalCategory.addPreference(mDisplayDaltonizerPreferenceScreen);
            experimentalCategory.addPreference(mToggleDisableAnimationsPreference);
            experimentalCategory.addPreference(mToggleDisableAnimationsPreference);
            experimentalCategory.addPreference(mToggleLargePointerIconPreference);
        }
        }
    }
    }


+0 −60
Original line number Original line Diff line number Diff line
/*
 * Copyright (C) 2019 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.settings.accessibility;

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

import androidx.annotation.VisibleForTesting;

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

public class LargePointerIconPreferenceController extends TogglePreferenceController {

    @VisibleForTesting
    static final int ON = 1;
    @VisibleForTesting
    static final int OFF = 0;

    public LargePointerIconPreferenceController(Context context, String preferenceKey) {
        super(context, preferenceKey);
    }

    @Override
    public boolean isChecked() {
        return Settings.Secure.getInt(mContext.getContentResolver(),
                Settings.Secure.ACCESSIBILITY_LARGE_POINTER_ICON, OFF) != OFF;
    }

    @Override
    public boolean setChecked(boolean isChecked) {
        return Settings.Secure.putInt(mContext.getContentResolver(),
                Settings.Secure.ACCESSIBILITY_LARGE_POINTER_ICON, isChecked ? ON : OFF);
    }

    @Override
    public int getAvailabilityStatus() {
        return android.view.flags.Flags.enableVectorCursorA11ySettings() ? CONDITIONALLY_UNAVAILABLE
                : AVAILABLE;
    }

    @Override
    public int getSliceHighlightMenuRes() {
        return R.string.menu_key_accessibility;
    }
}
+0 −114
Original line number Original line Diff line number Diff line
/*
 * Copyright (C) 2020 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.settings.accessibility;

import static android.view.flags.Flags.FLAG_ENABLE_VECTOR_CURSOR_A11Y_SETTINGS;

import static com.android.settings.accessibility.LargePointerIconPreferenceController.OFF;
import static com.android.settings.accessibility.LargePointerIconPreferenceController.ON;

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

import android.content.Context;
import android.platform.test.annotations.RequiresFlagsDisabled;
import android.platform.test.annotations.RequiresFlagsEnabled;
import android.platform.test.flag.junit.CheckFlagsRule;
import android.platform.test.flag.junit.DeviceFlagsValueProvider;
import android.provider.Settings;

import androidx.preference.SwitchPreference;
import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;

import com.android.settings.core.BasePreferenceController;

import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;

@RunWith(AndroidJUnit4.class)
public class LargePointerIconPreferenceControllerTest {

    @Rule
    public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule();

    private static final int UNKNOWN = -1;

    private Context mContext;
    private SwitchPreference mPreference;
    private LargePointerIconPreferenceController mController;

    @Before
    public void setUp() {
        mContext = ApplicationProvider.getApplicationContext();
        mPreference = new SwitchPreference(mContext);
        mController = new LargePointerIconPreferenceController(mContext, "large_pointer");
    }

    @Test
    @RequiresFlagsDisabled(FLAG_ENABLE_VECTOR_CURSOR_A11Y_SETTINGS)
    public void getAvailabilityStatus_shouldReturnAvailable() {
        assertThat(mController.getAvailabilityStatus())
                .isEqualTo(BasePreferenceController.AVAILABLE);
    }

    @Test
    @RequiresFlagsEnabled(FLAG_ENABLE_VECTOR_CURSOR_A11Y_SETTINGS)
    public void getAvailabilityStatus_shouldReturnConditionallyUnavailable() {
        assertThat(mController.getAvailabilityStatus())
                .isEqualTo(BasePreferenceController.CONDITIONALLY_UNAVAILABLE);
    }

    @Test
    public void isChecked_enabledLargePointer_shouldReturnTrue() {
        Settings.Secure.putInt(mContext.getContentResolver(),
                Settings.Secure.ACCESSIBILITY_LARGE_POINTER_ICON, ON);

        mController.updateState(mPreference);

        assertThat(mController.isChecked()).isTrue();
        assertThat(mPreference.isChecked()).isTrue();
    }

    @Test
    public void isChecked_disabledLargePointer_shouldReturnFalse() {
        Settings.Secure.putInt(mContext.getContentResolver(),
                Settings.Secure.ACCESSIBILITY_LARGE_POINTER_ICON, OFF);

        mController.updateState(mPreference);

        assertThat(mController.isChecked()).isFalse();
        assertThat(mPreference.isChecked()).isFalse();
    }

    @Test
    public void setChecked_enabled_shouldEnableLargePointer() {
        mController.setChecked(true);

        assertThat(Settings.Secure.getInt(mContext.getContentResolver(),
                Settings.Secure.ACCESSIBILITY_LARGE_POINTER_ICON, UNKNOWN)).isEqualTo(ON);
    }

    @Test
    public void setChecked_disabled_shouldDisableLargePointer() {
        mController.setChecked(false);

        assertThat(Settings.Secure.getInt(mContext.getContentResolver(),
                Settings.Secure.ACCESSIBILITY_LARGE_POINTER_ICON, UNKNOWN)).isEqualTo(OFF);
    }
}