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

Commit 0dd5b944 authored by Casey Burkhardt's avatar Casey Burkhardt
Browse files

Fix AccessibilityManager returning duplicate services

Prevents AccessibilityManagerService from providing duplicate
accessibility service records to clients calling
getEnabledAccessibilityServiceList if a service contains more
than one feedback flag.

Bug: 36493113
Test: Behavioral CTS test

Change-Id: I2f836e15fdd70543bc8aa9a5602330b0b6846fec
parent 3ab5c017
Loading
Loading
Loading
Loading
+6 −11
Original line number Diff line number Diff line
@@ -584,20 +584,15 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub {
            result = mEnabledServicesForFeedbackTempList;
            result.clear();
            List<Service> services = userState.mBoundServices;
            while (feedbackType != 0) {
                final int feedbackTypeBit = (1 << Integer.numberOfTrailingZeros(feedbackType));
                feedbackType &= ~feedbackTypeBit;
                final int serviceCount = services.size();
                for (int i = 0; i < serviceCount; i++) {
            for (int serviceCount = services.size(), i = 0; i < serviceCount; ++i) {
                Service service = services.get(i);
                // Don't report the UIAutomation (fake service)
                if (!sFakeAccessibilityServiceComponentName.equals(service.mComponentName)
                            && (service.mFeedbackType & feedbackTypeBit) != 0) {
                        && (service.mFeedbackType & feedbackType) != 0) {
                    result.add(service.mAccessibilityServiceInfo);
                }
            }
        }
        }
        return result;
    }