diff --git a/core/java/com/android/internal/accessibility/AccessibilityShortcutController.java b/core/java/com/android/internal/accessibility/AccessibilityShortcutController.java index 491ddba8959dc..2b4e09d668517 100644 --- a/core/java/com/android/internal/accessibility/AccessibilityShortcutController.java +++ b/core/java/com/android/internal/accessibility/AccessibilityShortcutController.java @@ -80,6 +80,8 @@ public class AccessibilityShortcutController { "com.android.server.accessibility.MagnificationController"; public static final ComponentName MAGNIFICATION_COMPONENT_NAME = new ComponentName("com.android.server.accessibility", "Magnification"); + public static final ComponentName REDUCE_BRIGHT_COLORS_COMPONENT_NAME = + new ComponentName("com.android.server.accessibility", "ReduceBrightColors"); private static final AudioAttributes VIBRATION_ATTRIBUTES = new AudioAttributes.Builder() .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION) @@ -126,6 +128,11 @@ public class AccessibilityShortcutController { Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED, "1" /* Value to enable */, "0" /* Value to disable */, R.string.color_correction_feature_name)); + featuresMap.put(REDUCE_BRIGHT_COLORS_COMPONENT_NAME, + new ToggleableFrameworkFeatureInfo( + Settings.Secure.REDUCE_BRIGHT_COLORS_ACTIVATED, + "1" /* Value to enable */, "0" /* Value to disable */, + R.string.reduce_bright_colors_feature_name)); sFrameworkShortcutFeaturesMap = Collections.unmodifiableMap(featuresMap); } return sFrameworkShortcutFeaturesMap; diff --git a/core/java/com/android/internal/accessibility/dialog/AccessibilityTargetHelper.java b/core/java/com/android/internal/accessibility/dialog/AccessibilityTargetHelper.java index a7c5f6d5e03fd..9d06bb92b2056 100644 --- a/core/java/com/android/internal/accessibility/dialog/AccessibilityTargetHelper.java +++ b/core/java/com/android/internal/accessibility/dialog/AccessibilityTargetHelper.java @@ -21,6 +21,7 @@ import static android.view.accessibility.AccessibilityManager.ACCESSIBILITY_BUTT import static com.android.internal.accessibility.AccessibilityShortcutController.COLOR_INVERSION_COMPONENT_NAME; import static com.android.internal.accessibility.AccessibilityShortcutController.DALTONIZER_COMPONENT_NAME; import static com.android.internal.accessibility.AccessibilityShortcutController.MAGNIFICATION_CONTROLLER_NAME; +import static com.android.internal.accessibility.AccessibilityShortcutController.REDUCE_BRIGHT_COLORS_COMPONENT_NAME; import static com.android.internal.accessibility.util.AccessibilityUtils.getAccessibilityServiceFragmentType; import static com.android.internal.accessibility.util.ShortcutUtils.isShortcutContained; @@ -112,7 +113,7 @@ public final class AccessibilityTargetHelper { @ShortcutType int shortcutType) { final List targets = new ArrayList<>(); targets.addAll(getAccessibilityFilteredTargets(context, shortcutType)); - targets.addAll(getWhiteListingFeatureTargets(context, shortcutType)); + targets.addAll(getAllowListingFeatureTargets(context, shortcutType)); return targets; } @@ -196,12 +197,12 @@ public final class AccessibilityTargetHelper { return targets; } - private static List getWhiteListingFeatureTargets(Context context, + private static List getAllowListingFeatureTargets(Context context, @ShortcutType int shortcutType) { final List targets = new ArrayList<>(); - final InvisibleToggleWhiteListingFeatureTarget magnification = - new InvisibleToggleWhiteListingFeatureTarget(context, + final InvisibleToggleAllowListingFeatureTarget magnification = + new InvisibleToggleAllowListingFeatureTarget(context, shortcutType, isShortcutContained(context, shortcutType, MAGNIFICATION_CONTROLLER_NAME), MAGNIFICATION_CONTROLLER_NAME, @@ -209,8 +210,8 @@ public final class AccessibilityTargetHelper { context.getDrawable(R.drawable.ic_accessibility_magnification), Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED); - final ToggleWhiteListingFeatureTarget daltonizer = - new ToggleWhiteListingFeatureTarget(context, + final ToggleAllowListingFeatureTarget daltonizer = + new ToggleAllowListingFeatureTarget(context, shortcutType, isShortcutContained(context, shortcutType, DALTONIZER_COMPONENT_NAME.flattenToString()), @@ -219,8 +220,8 @@ public final class AccessibilityTargetHelper { context.getDrawable(R.drawable.ic_accessibility_color_correction), Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED); - final ToggleWhiteListingFeatureTarget colorInversion = - new ToggleWhiteListingFeatureTarget(context, + final ToggleAllowListingFeatureTarget colorInversion = + new ToggleAllowListingFeatureTarget(context, shortcutType, isShortcutContained(context, shortcutType, COLOR_INVERSION_COMPONENT_NAME.flattenToString()), @@ -229,9 +230,21 @@ public final class AccessibilityTargetHelper { context.getDrawable(R.drawable.ic_accessibility_color_inversion), Settings.Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED); + // TODO: Update with shortcut icon + final ToggleAllowListingFeatureTarget reduceBrightColors = + new ToggleAllowListingFeatureTarget(context, + shortcutType, + isShortcutContained(context, shortcutType, + REDUCE_BRIGHT_COLORS_COMPONENT_NAME.flattenToString()), + REDUCE_BRIGHT_COLORS_COMPONENT_NAME.flattenToString(), + context.getString(R.string.reduce_bright_colors_feature_name), + null, + Settings.Secure.REDUCE_BRIGHT_COLORS_ACTIVATED); + targets.add(magnification); targets.add(daltonizer); targets.add(colorInversion); + targets.add(reduceBrightColors); return targets; } diff --git a/core/java/com/android/internal/accessibility/dialog/InvisibleToggleWhiteListingFeatureTarget.java b/core/java/com/android/internal/accessibility/dialog/InvisibleToggleAllowListingFeatureTarget.java similarity index 91% rename from core/java/com/android/internal/accessibility/dialog/InvisibleToggleWhiteListingFeatureTarget.java rename to core/java/com/android/internal/accessibility/dialog/InvisibleToggleAllowListingFeatureTarget.java index acd101bf28bac..e78036d9f1e9b 100644 --- a/core/java/com/android/internal/accessibility/dialog/InvisibleToggleWhiteListingFeatureTarget.java +++ b/core/java/com/android/internal/accessibility/dialog/InvisibleToggleAllowListingFeatureTarget.java @@ -26,9 +26,9 @@ import com.android.internal.accessibility.common.ShortcutConstants.Accessibility * Extension for {@link AccessibilityTarget} with {@link AccessibilityFragmentType#INVISIBLE_TOGGLE} * type. */ -class InvisibleToggleWhiteListingFeatureTarget extends AccessibilityTarget { +class InvisibleToggleAllowListingFeatureTarget extends AccessibilityTarget { - InvisibleToggleWhiteListingFeatureTarget(Context context, @ShortcutType int shortcutType, + InvisibleToggleAllowListingFeatureTarget(Context context, @ShortcutType int shortcutType, boolean isShortcutSwitched, String id, CharSequence label, Drawable icon, String key) { super(context, shortcutType, AccessibilityFragmentType.INVISIBLE_TOGGLE, isShortcutSwitched, id, label, icon, key); diff --git a/core/java/com/android/internal/accessibility/dialog/ToggleWhiteListingFeatureTarget.java b/core/java/com/android/internal/accessibility/dialog/ToggleAllowListingFeatureTarget.java similarity index 94% rename from core/java/com/android/internal/accessibility/dialog/ToggleWhiteListingFeatureTarget.java rename to core/java/com/android/internal/accessibility/dialog/ToggleAllowListingFeatureTarget.java index 5ab9eb84f0e46..38aac708de15d 100644 --- a/core/java/com/android/internal/accessibility/dialog/ToggleWhiteListingFeatureTarget.java +++ b/core/java/com/android/internal/accessibility/dialog/ToggleAllowListingFeatureTarget.java @@ -32,9 +32,9 @@ import com.android.internal.accessibility.dialog.TargetAdapter.ViewHolder; * Extension for {@link AccessibilityTarget} with {@link AccessibilityFragmentType#TOGGLE} * type. */ -class ToggleWhiteListingFeatureTarget extends AccessibilityTarget { +class ToggleAllowListingFeatureTarget extends AccessibilityTarget { - ToggleWhiteListingFeatureTarget(Context context, @ShortcutType int shortcutType, + ToggleAllowListingFeatureTarget(Context context, @ShortcutType int shortcutType, boolean isShortcutSwitched, String id, CharSequence label, Drawable icon, String key) { super(context, shortcutType, AccessibilityFragmentType.TOGGLE, isShortcutSwitched, id, label, icon, key); diff --git a/core/proto/android/app/settings_enums.proto b/core/proto/android/app/settings_enums.proto index 32ce5e26e929a..99fe1afc9c9db 100644 --- a/core/proto/android/app/settings_enums.proto +++ b/core/proto/android/app/settings_enums.proto @@ -2756,4 +2756,9 @@ enum PageId { // CATEGORY: SETTINGS // OS: S SCREEN_TIMEOUT = 1852; + + // OPEN: Settings > Accessibility > Reduce Bright Colors + // CATEGORY: SETTINGS + // OS: S + REDUCE_BRIGHT_COLORS_SETTINGS = 1853; } diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml index fc489b1bbe9b4..645bae728c02d 100644 --- a/core/res/res/values/strings.xml +++ b/core/res/res/values/strings.xml @@ -4494,6 +4494,9 @@ shown in the warning dialog about the accessibility shortcut. --> Color Correction + + Reduce Bright Colors + Held volume keys. %1$s turned on. diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 1249b17501c86..9b52f54693a24 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -3249,6 +3249,7 @@ +