Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 025298b1 authored by Candice Lo's avatar Candice Lo Committed by Android (Google) Code Review
Browse files

Merge "feat(EvenDimmer): Create a ExtraDimFrameworkFeatureInfo for ExtraDim if...

Merge "feat(EvenDimmer): Create a ExtraDimFrameworkFeatureInfo for ExtraDim if the device applies EvenDimmer" into main
parents 4492457a f015abad
Loading
Loading
Loading
Loading
+42 −2
Original line number Diff line number Diff line
@@ -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;
@@ -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,
@@ -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) {
+15 −0
Original line number Diff line number Diff line
@@ -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,