summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Candice Lo <chihtinglo@google.com> 2024-07-19 05:50:32 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2024-07-19 05:50:32 +0000
commit025298b1564b0dfc3d2e233710634d2c51d5eb07 (patch)
tree8d9e9e609904085d5a842bd403428c100d98078b
parent4492457a57e2b4a325dad49c20b32eb152414666 (diff)
parentf015abad0d098a4c2d6e27c3a4a51e2caca3046a (diff)
Merge "feat(EvenDimmer): Create a ExtraDimFrameworkFeatureInfo for ExtraDim if the device applies EvenDimmer" into main
-rw-r--r--core/java/com/android/internal/accessibility/AccessibilityShortcutController.java44
-rw-r--r--services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java15
2 files changed, 57 insertions, 2 deletions
diff --git a/core/java/com/android/internal/accessibility/AccessibilityShortcutController.java b/core/java/com/android/internal/accessibility/AccessibilityShortcutController.java
index 75ddb58590a1..f9c294758bf0 100644
--- a/core/java/com/android/internal/accessibility/AccessibilityShortcutController.java
+++ b/core/java/com/android/internal/accessibility/AccessibilityShortcutController.java
@@ -48,6 +48,7 @@ import android.os.Handler;
import android.os.UserHandle;
import android.os.Vibrator;
import android.provider.Settings;
+import android.provider.SettingsStringUtil;
import android.speech.tts.TextToSpeech;
import android.speech.tts.Voice;
import android.text.TextUtils;
@@ -151,7 +152,8 @@ public class AccessibilityShortcutController {
* info for toggling a framework feature
*/
public static Map<ComponentName, FrameworkFeatureInfo>
- getFrameworkShortcutFeaturesMap() {
+ getFrameworkShortcutFeaturesMap() {
+
if (sFrameworkShortcutFeaturesMap == null) {
Map<ComponentName, FrameworkFeatureInfo> featuresMap = new ArrayMap<>(4);
featuresMap.put(COLOR_INVERSION_COMPONENT_NAME,
@@ -172,7 +174,7 @@ public class AccessibilityShortcutController {
R.string.one_handed_mode_feature_name));
}
featuresMap.put(REDUCE_BRIGHT_COLORS_COMPONENT_NAME,
- new ToggleableFrameworkFeatureInfo(
+ new ExtraDimFrameworkFeatureInfo(
Settings.Secure.REDUCE_BRIGHT_COLORS_ACTIVATED,
"1" /* Value to enable */, "0" /* Value to disable */,
R.string.reduce_bright_colors_feature_name));
@@ -828,6 +830,44 @@ public class AccessibilityShortcutController {
}
}
+
+ public static class ExtraDimFrameworkFeatureInfo extends FrameworkFeatureInfo {
+ ExtraDimFrameworkFeatureInfo(String settingKey, String settingOnValue,
+ String settingOffValue, int labelStringResourceId) {
+ super(settingKey, settingOnValue, settingOffValue, labelStringResourceId);
+ }
+
+ /**
+ * Perform shortcut action.
+ *
+ * @return True if the accessibility service is enabled, false otherwise.
+ */
+ public boolean activateShortcut(Context context, int userId) {
+ if (com.android.server.display.feature.flags.Flags.evenDimmer()
+ && context.getResources().getBoolean(
+ com.android.internal.R.bool.config_evenDimmerEnabled)) {
+ launchExtraDimDialog();
+ return true;
+ } else {
+ // Assuming that the default state will be to have the feature off
+ final SettingsStringUtil.SettingStringHelper
+ setting = new SettingsStringUtil.SettingStringHelper(
+ context.getContentResolver(), getSettingKey(), userId);
+ if (!TextUtils.equals(getSettingOnValue(), setting.read())) {
+ setting.write(getSettingOnValue());
+ return true;
+ } else {
+ setting.write(getSettingOffValue());
+ return false;
+ }
+ }
+ }
+
+ private void launchExtraDimDialog() {
+ // TODO: launch Extra dim dialog for feature migration
+ }
+ }
+
// Class to allow mocking of static framework calls
public static class FrameworkObjectProvider {
public AccessibilityManager getAccessibilityManagerInstance(Context context) {
diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
index b918d80fc63d..30c743e508b6 100644
--- a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
+++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
@@ -161,6 +161,7 @@ import android.view.inputmethod.EditorInfo;
import com.android.internal.R;
import com.android.internal.accessibility.AccessibilityShortcutController;
+import com.android.internal.accessibility.AccessibilityShortcutController.ExtraDimFrameworkFeatureInfo;
import com.android.internal.accessibility.AccessibilityShortcutController.FrameworkFeatureInfo;
import com.android.internal.accessibility.AccessibilityShortcutController.LaunchableFrameworkFeatureInfo;
import com.android.internal.accessibility.common.ShortcutConstants;
@@ -3910,6 +3911,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
Slog.d(LOG_TAG, "Perform shortcut failed, invalid target name:" + targetName);
return;
}
+
// In case user assigned an accessibility framework feature to the given shortcut.
if (performAccessibilityFrameworkFeature(displayId, targetComponentName, shortcutType)) {
return;
@@ -3933,6 +3935,10 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
if (!frameworkFeatureMap.containsKey(assignedTarget)) {
return false;
}
+ final int userId;
+ synchronized (mLock) {
+ userId = mCurrentUserId;
+ }
final FrameworkFeatureInfo featureInfo = frameworkFeatureMap.get(assignedTarget);
final SettingStringHelper setting = new SettingStringHelper(mContext.getContentResolver(),
featureInfo.getSettingKey(), mCurrentUserId);
@@ -3944,6 +3950,15 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
return true;
}
+ if (featureInfo instanceof ExtraDimFrameworkFeatureInfo) {
+ boolean serviceEnabled =
+ ((ExtraDimFrameworkFeatureInfo) featureInfo)
+ .activateShortcut(mContext, userId);
+ logAccessibilityShortcutActivated(mContext, assignedTarget, shortcutType,
+ serviceEnabled);
+ return true;
+ }
+
// Assuming that the default state will be to have the feature off
if (!TextUtils.equals(featureInfo.getSettingOnValue(), setting.read())) {
logAccessibilityShortcutActivated(mContext, assignedTarget, shortcutType,