Loading res/xml/accessibility_settings.xml +2 −1 Original line number Diff line number Diff line Loading @@ -79,7 +79,8 @@ <SwitchPreference android:key="toggle_disable_animations" android:title="@string/accessibility_disable_animations"/> android:title="@string/accessibility_disable_animations" settings:controller="com.android.settings.accessibility.DisableAnimationsPreferenceController"/> </PreferenceCategory> Loading src/com/android/settings/accessibility/AccessibilitySettings.java +0 −34 Original line number Diff line number Diff line Loading @@ -150,14 +150,6 @@ public class AccessibilitySettings extends DashboardFragment implements // presentation. private static final long DELAY_UPDATE_SERVICES_MILLIS = 1000; // Settings that should be changed when toggling animations private static final String[] TOGGLE_ANIMATION_TARGETS = { Settings.Global.WINDOW_ANIMATION_SCALE, Settings.Global.TRANSITION_ANIMATION_SCALE, Settings.Global.ANIMATOR_DURATION_SCALE }; private static final String ANIMATION_ON_VALUE = "1"; private static final String ANIMATION_OFF_VALUE = "0"; static final String RAMPING_RINGER_ENABLED = "ramping_ringer_enabled"; private final Map<String, String> mLongPressTimeoutValueToTitleMap = new HashMap<>(); Loading Loading @@ -332,9 +324,6 @@ public class AccessibilitySettings extends DashboardFragment implements } else if (mToggleLargePointerIconPreference == preference) { handleToggleLargePointerIconPreferenceClick(); return true; } else if (mToggleDisableAnimationsPreference == preference) { handleToggleDisableAnimations(); return true; } else if (mToggleMasterMonoPreference == preference) { handleToggleMasterMonoPreferenceClick(); return true; Loading Loading @@ -398,14 +387,6 @@ public class AccessibilitySettings extends DashboardFragment implements mToggleLargePointerIconPreference.isChecked() ? 1 : 0); } private void handleToggleDisableAnimations() { String newAnimationValue = mToggleDisableAnimationsPreference.isChecked() ? ANIMATION_OFF_VALUE : ANIMATION_ON_VALUE; for (String animationPreference : TOGGLE_ANIMATION_TARGETS) { Settings.Global.putString(getContentResolver(), animationPreference, newAnimationValue); } } private void handleToggleMasterMonoPreferenceClick() { Settings.System.putIntForUser(getContentResolver(), Settings.System.MASTER_MONO, mToggleMasterMonoPreference.isChecked() ? 1 : 0, UserHandle.USER_CURRENT); Loading Loading @@ -722,8 +703,6 @@ public class AccessibilitySettings extends DashboardFragment implements mToggleLargePointerIconPreference.setChecked(Settings.Secure.getInt(getContentResolver(), Settings.Secure.ACCESSIBILITY_LARGE_POINTER_ICON, 0) != 0); updateDisableAnimationsToggle(); // Master mono updateMasterMono(); Loading Loading @@ -842,19 +821,6 @@ public class AccessibilitySettings extends DashboardFragment implements } } private void updateDisableAnimationsToggle() { boolean allAnimationsDisabled = true; for (String animationSetting : TOGGLE_ANIMATION_TARGETS) { if (!TextUtils.equals( Settings.Global.getString(getContentResolver(), animationSetting), ANIMATION_OFF_VALUE)) { allAnimationsDisabled = false; break; } } mToggleDisableAnimationsPreference.setChecked(allAnimationsDisabled); } private void updateMasterMono() { final boolean masterMono = Settings.System.getIntForUser( getContentResolver(), Settings.System.MASTER_MONO, Loading src/com/android/settings/accessibility/DisableAnimationsPreferenceController.java 0 → 100644 +74 −0 Original line number 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 android.text.TextUtils; import androidx.annotation.VisibleForTesting; import com.android.settings.core.TogglePreferenceController; public class DisableAnimationsPreferenceController extends TogglePreferenceController { @VisibleForTesting static final String ANIMATION_ON_VALUE = "1"; @VisibleForTesting static final String ANIMATION_OFF_VALUE = "0"; // Settings that should be changed when toggling animations @VisibleForTesting static final String[] TOGGLE_ANIMATION_TARGETS = { Settings.Global.WINDOW_ANIMATION_SCALE, Settings.Global.TRANSITION_ANIMATION_SCALE, Settings.Global.ANIMATOR_DURATION_SCALE }; public DisableAnimationsPreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); } @Override public boolean isChecked() { boolean allAnimationsDisabled = true; for (String animationSetting : TOGGLE_ANIMATION_TARGETS) { if (!TextUtils.equals( Settings.Global.getString(mContext.getContentResolver(), animationSetting), ANIMATION_OFF_VALUE)) { allAnimationsDisabled = false; break; } } return allAnimationsDisabled; } @Override public boolean setChecked(boolean isChecked) { final String newAnimationValue = isChecked ? ANIMATION_OFF_VALUE : ANIMATION_ON_VALUE; boolean allAnimationSet = true; for (String animationPreference : TOGGLE_ANIMATION_TARGETS) { allAnimationSet &= Settings.Global.putString(mContext.getContentResolver(), animationPreference, newAnimationValue); } return allAnimationSet; } @Override public int getAvailabilityStatus() { return AVAILABLE; } } tests/robotests/src/com/android/settings/accessibility/DisableAnimationsPreferenceControllerTest.java 0 → 100644 +103 −0 Original line number 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 static com.android.settings.accessibility.DisableAnimationsPreferenceController.ANIMATION_OFF_VALUE; import static com.android.settings.accessibility.DisableAnimationsPreferenceController.ANIMATION_ON_VALUE; import static com.android.settings.accessibility.DisableAnimationsPreferenceController.TOGGLE_ANIMATION_TARGETS; import static com.google.common.truth.Truth.assertThat; import android.content.Context; import android.provider.Settings; import androidx.preference.SwitchPreference; import com.android.settings.core.BasePreferenceController; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; @RunWith(RobolectricTestRunner.class) public class DisableAnimationsPreferenceControllerTest { private Context mContext; private SwitchPreference mPreference; private DisableAnimationsPreferenceController mController; @Before public void setUp() { mContext = RuntimeEnvironment.application; mPreference = new SwitchPreference(mContext); mController = new DisableAnimationsPreferenceController(mContext, "disable_animation"); } @Test public void getAvailabilityStatus_shouldReturnAvailable() { assertThat(mController.getAvailabilityStatus()).isEqualTo( BasePreferenceController.AVAILABLE); } @Test public void isChecked_enabledAnimation_shouldReturnFalse() { for (String animationPreference : TOGGLE_ANIMATION_TARGETS) { Settings.Global.putString(mContext.getContentResolver(), animationPreference, ANIMATION_ON_VALUE); } mController.updateState(mPreference); assertThat(mController.isChecked()).isFalse(); assertThat(mPreference.isChecked()).isFalse(); } @Test public void isChecked_disabledAnimation_shouldReturnTrue() { for (String animationPreference : TOGGLE_ANIMATION_TARGETS) { Settings.Global.putString(mContext.getContentResolver(), animationPreference, ANIMATION_OFF_VALUE); } mController.updateState(mPreference); assertThat(mController.isChecked()).isTrue(); assertThat(mPreference.isChecked()).isTrue(); } @Test public void setChecked_disabledAnimation_shouldDisableAnimationTargets() { mController.setChecked(true); for (String animationSetting : TOGGLE_ANIMATION_TARGETS) { assertThat(Settings.Global.getString(mContext.getContentResolver(), animationSetting)) .isEqualTo(ANIMATION_OFF_VALUE); } } @Test public void setChecked_enabledAnimation_shouldEnableAnimationTargets() { mController.setChecked(false); for (String animationSetting : TOGGLE_ANIMATION_TARGETS) { assertThat(Settings.Global.getString(mContext.getContentResolver(), animationSetting)) .isEqualTo(ANIMATION_ON_VALUE); } } } Loading
res/xml/accessibility_settings.xml +2 −1 Original line number Diff line number Diff line Loading @@ -79,7 +79,8 @@ <SwitchPreference android:key="toggle_disable_animations" android:title="@string/accessibility_disable_animations"/> android:title="@string/accessibility_disable_animations" settings:controller="com.android.settings.accessibility.DisableAnimationsPreferenceController"/> </PreferenceCategory> Loading
src/com/android/settings/accessibility/AccessibilitySettings.java +0 −34 Original line number Diff line number Diff line Loading @@ -150,14 +150,6 @@ public class AccessibilitySettings extends DashboardFragment implements // presentation. private static final long DELAY_UPDATE_SERVICES_MILLIS = 1000; // Settings that should be changed when toggling animations private static final String[] TOGGLE_ANIMATION_TARGETS = { Settings.Global.WINDOW_ANIMATION_SCALE, Settings.Global.TRANSITION_ANIMATION_SCALE, Settings.Global.ANIMATOR_DURATION_SCALE }; private static final String ANIMATION_ON_VALUE = "1"; private static final String ANIMATION_OFF_VALUE = "0"; static final String RAMPING_RINGER_ENABLED = "ramping_ringer_enabled"; private final Map<String, String> mLongPressTimeoutValueToTitleMap = new HashMap<>(); Loading Loading @@ -332,9 +324,6 @@ public class AccessibilitySettings extends DashboardFragment implements } else if (mToggleLargePointerIconPreference == preference) { handleToggleLargePointerIconPreferenceClick(); return true; } else if (mToggleDisableAnimationsPreference == preference) { handleToggleDisableAnimations(); return true; } else if (mToggleMasterMonoPreference == preference) { handleToggleMasterMonoPreferenceClick(); return true; Loading Loading @@ -398,14 +387,6 @@ public class AccessibilitySettings extends DashboardFragment implements mToggleLargePointerIconPreference.isChecked() ? 1 : 0); } private void handleToggleDisableAnimations() { String newAnimationValue = mToggleDisableAnimationsPreference.isChecked() ? ANIMATION_OFF_VALUE : ANIMATION_ON_VALUE; for (String animationPreference : TOGGLE_ANIMATION_TARGETS) { Settings.Global.putString(getContentResolver(), animationPreference, newAnimationValue); } } private void handleToggleMasterMonoPreferenceClick() { Settings.System.putIntForUser(getContentResolver(), Settings.System.MASTER_MONO, mToggleMasterMonoPreference.isChecked() ? 1 : 0, UserHandle.USER_CURRENT); Loading Loading @@ -722,8 +703,6 @@ public class AccessibilitySettings extends DashboardFragment implements mToggleLargePointerIconPreference.setChecked(Settings.Secure.getInt(getContentResolver(), Settings.Secure.ACCESSIBILITY_LARGE_POINTER_ICON, 0) != 0); updateDisableAnimationsToggle(); // Master mono updateMasterMono(); Loading Loading @@ -842,19 +821,6 @@ public class AccessibilitySettings extends DashboardFragment implements } } private void updateDisableAnimationsToggle() { boolean allAnimationsDisabled = true; for (String animationSetting : TOGGLE_ANIMATION_TARGETS) { if (!TextUtils.equals( Settings.Global.getString(getContentResolver(), animationSetting), ANIMATION_OFF_VALUE)) { allAnimationsDisabled = false; break; } } mToggleDisableAnimationsPreference.setChecked(allAnimationsDisabled); } private void updateMasterMono() { final boolean masterMono = Settings.System.getIntForUser( getContentResolver(), Settings.System.MASTER_MONO, Loading
src/com/android/settings/accessibility/DisableAnimationsPreferenceController.java 0 → 100644 +74 −0 Original line number 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 android.text.TextUtils; import androidx.annotation.VisibleForTesting; import com.android.settings.core.TogglePreferenceController; public class DisableAnimationsPreferenceController extends TogglePreferenceController { @VisibleForTesting static final String ANIMATION_ON_VALUE = "1"; @VisibleForTesting static final String ANIMATION_OFF_VALUE = "0"; // Settings that should be changed when toggling animations @VisibleForTesting static final String[] TOGGLE_ANIMATION_TARGETS = { Settings.Global.WINDOW_ANIMATION_SCALE, Settings.Global.TRANSITION_ANIMATION_SCALE, Settings.Global.ANIMATOR_DURATION_SCALE }; public DisableAnimationsPreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); } @Override public boolean isChecked() { boolean allAnimationsDisabled = true; for (String animationSetting : TOGGLE_ANIMATION_TARGETS) { if (!TextUtils.equals( Settings.Global.getString(mContext.getContentResolver(), animationSetting), ANIMATION_OFF_VALUE)) { allAnimationsDisabled = false; break; } } return allAnimationsDisabled; } @Override public boolean setChecked(boolean isChecked) { final String newAnimationValue = isChecked ? ANIMATION_OFF_VALUE : ANIMATION_ON_VALUE; boolean allAnimationSet = true; for (String animationPreference : TOGGLE_ANIMATION_TARGETS) { allAnimationSet &= Settings.Global.putString(mContext.getContentResolver(), animationPreference, newAnimationValue); } return allAnimationSet; } @Override public int getAvailabilityStatus() { return AVAILABLE; } }
tests/robotests/src/com/android/settings/accessibility/DisableAnimationsPreferenceControllerTest.java 0 → 100644 +103 −0 Original line number 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 static com.android.settings.accessibility.DisableAnimationsPreferenceController.ANIMATION_OFF_VALUE; import static com.android.settings.accessibility.DisableAnimationsPreferenceController.ANIMATION_ON_VALUE; import static com.android.settings.accessibility.DisableAnimationsPreferenceController.TOGGLE_ANIMATION_TARGETS; import static com.google.common.truth.Truth.assertThat; import android.content.Context; import android.provider.Settings; import androidx.preference.SwitchPreference; import com.android.settings.core.BasePreferenceController; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; @RunWith(RobolectricTestRunner.class) public class DisableAnimationsPreferenceControllerTest { private Context mContext; private SwitchPreference mPreference; private DisableAnimationsPreferenceController mController; @Before public void setUp() { mContext = RuntimeEnvironment.application; mPreference = new SwitchPreference(mContext); mController = new DisableAnimationsPreferenceController(mContext, "disable_animation"); } @Test public void getAvailabilityStatus_shouldReturnAvailable() { assertThat(mController.getAvailabilityStatus()).isEqualTo( BasePreferenceController.AVAILABLE); } @Test public void isChecked_enabledAnimation_shouldReturnFalse() { for (String animationPreference : TOGGLE_ANIMATION_TARGETS) { Settings.Global.putString(mContext.getContentResolver(), animationPreference, ANIMATION_ON_VALUE); } mController.updateState(mPreference); assertThat(mController.isChecked()).isFalse(); assertThat(mPreference.isChecked()).isFalse(); } @Test public void isChecked_disabledAnimation_shouldReturnTrue() { for (String animationPreference : TOGGLE_ANIMATION_TARGETS) { Settings.Global.putString(mContext.getContentResolver(), animationPreference, ANIMATION_OFF_VALUE); } mController.updateState(mPreference); assertThat(mController.isChecked()).isTrue(); assertThat(mPreference.isChecked()).isTrue(); } @Test public void setChecked_disabledAnimation_shouldDisableAnimationTargets() { mController.setChecked(true); for (String animationSetting : TOGGLE_ANIMATION_TARGETS) { assertThat(Settings.Global.getString(mContext.getContentResolver(), animationSetting)) .isEqualTo(ANIMATION_OFF_VALUE); } } @Test public void setChecked_enabledAnimation_shouldEnableAnimationTargets() { mController.setChecked(false); for (String animationSetting : TOGGLE_ANIMATION_TARGETS) { assertThat(Settings.Global.getString(mContext.getContentResolver(), animationSetting)) .isEqualTo(ANIMATION_ON_VALUE); } } }