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

Commit 58dc3173 authored by wangmingming1's avatar wangmingming1
Browse files

a11y: don't crash the system when illegal component name encounted

Bug: https://issuetracker.google.com/issues/139695999


Test: A11y unit tests (I did't find a way to reproduce the bug)

Change-Id: I0aa8f417b157ca3d96b61b8d9356dd65df360dae
Signed-off-by: default avatarwangmingming1 <wangmingming1@xiaomi.com>
parent 13b0b1a7
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -126,7 +126,7 @@ public class SettingsStringUtil {


        @Override
        @Override
        protected String itemToString(ComponentName item) {
        protected String itemToString(ComponentName item) {
            return item.flattenToString();
            return item != null ? item.flattenToString() : "null";
        }
        }


        public static String add(String delimitedElements, ComponentName element) {
        public static String add(String delimitedElements, ComponentName element) {
+12 −14
Original line number Original line Diff line number Diff line
@@ -74,8 +74,6 @@ import android.os.UserHandle;
import android.os.UserManager;
import android.os.UserManager;
import android.os.UserManagerInternal;
import android.os.UserManagerInternal;
import android.provider.Settings;
import android.provider.Settings;
import android.provider.SettingsStringUtil;
import android.provider.SettingsStringUtil.ComponentNameSet;
import android.provider.SettingsStringUtil.SettingStringHelper;
import android.provider.SettingsStringUtil.SettingStringHelper;
import android.text.TextUtils;
import android.text.TextUtils;
import android.text.TextUtils.SimpleStringSplitter;
import android.text.TextUtils.SimpleStringSplitter;
@@ -2333,12 +2331,12 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
     * Enables accessibility service specified by {@param componentName} for the {@param userId}.
     * Enables accessibility service specified by {@param componentName} for the {@param userId}.
     */
     */
    private void enableAccessibilityServiceLocked(ComponentName componentName, int userId) {
    private void enableAccessibilityServiceLocked(ComponentName componentName, int userId) {
        final SettingStringHelper setting =
        mTempComponentNameSet.clear();
                new SettingStringHelper(
        readComponentNamesFromSettingLocked(Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES,
                        mContext.getContentResolver(),
                userId, mTempComponentNameSet);
                        Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES,
        mTempComponentNameSet.add(componentName);
                        userId);
        persistComponentNamesToSettingLocked(Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES,
        setting.write(ComponentNameSet.add(setting.read(), componentName));
                mTempComponentNameSet, userId);


        UserState userState = getUserStateLocked(userId);
        UserState userState = getUserStateLocked(userId);
        if (userState.mEnabledServices.add(componentName)) {
        if (userState.mEnabledServices.add(componentName)) {
@@ -2350,12 +2348,12 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
     * Disables accessibility service specified by {@param componentName} for the {@param userId}.
     * Disables accessibility service specified by {@param componentName} for the {@param userId}.
     */
     */
    private void disableAccessibilityServiceLocked(ComponentName componentName, int userId) {
    private void disableAccessibilityServiceLocked(ComponentName componentName, int userId) {
        final SettingsStringUtil.SettingStringHelper setting =
        mTempComponentNameSet.clear();
                new SettingStringHelper(
        readComponentNamesFromSettingLocked(Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES,
                        mContext.getContentResolver(),
                userId, mTempComponentNameSet);
                        Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES,
        mTempComponentNameSet.remove(componentName);
                        userId);
        persistComponentNamesToSettingLocked(Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES,
        setting.write(ComponentNameSet.remove(setting.read(), componentName));
                mTempComponentNameSet, userId);


        UserState userState = getUserStateLocked(userId);
        UserState userState = getUserStateLocked(userId);
        if (userState.mEnabledServices.remove(componentName)) {
        if (userState.mEnabledServices.remove(componentName)) {