diff options
| author | 2024-07-19 05:50:32 +0000 | |
|---|---|---|
| committer | 2024-07-19 05:50:32 +0000 | |
| commit | 025298b1564b0dfc3d2e233710634d2c51d5eb07 (patch) | |
| tree | 8d9e9e609904085d5a842bd403428c100d98078b | |
| parent | 4492457a57e2b4a325dad49c20b32eb152414666 (diff) | |
| parent | f015abad0d098a4c2d6e27c3a4a51e2caca3046a (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.java | 44 | ||||
| -rw-r--r-- | services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java | 15 |
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, |