Loading core/java/com/android/internal/accessibility/AccessibilityShortcutController.java +42 −2 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -152,6 +153,7 @@ public class AccessibilityShortcutController { */ public static Map<ComponentName, FrameworkFeatureInfo> getFrameworkShortcutFeaturesMap() { if (sFrameworkShortcutFeaturesMap == null) { Map<ComponentName, FrameworkFeatureInfo> featuresMap = new ArrayMap<>(4); featuresMap.put(COLOR_INVERSION_COMPONENT_NAME, Loading @@ -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)); Loading Loading @@ -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) { Loading services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java +15 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading @@ -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); Loading @@ -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, Loading Loading
core/java/com/android/internal/accessibility/AccessibilityShortcutController.java +42 −2 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -152,6 +153,7 @@ public class AccessibilityShortcutController { */ public static Map<ComponentName, FrameworkFeatureInfo> getFrameworkShortcutFeaturesMap() { if (sFrameworkShortcutFeaturesMap == null) { Map<ComponentName, FrameworkFeatureInfo> featuresMap = new ArrayMap<>(4); featuresMap.put(COLOR_INVERSION_COMPONENT_NAME, Loading @@ -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)); Loading Loading @@ -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) { Loading
services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java +15 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading @@ -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); Loading @@ -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, Loading