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

Commit 9172a68c authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Don't allow an external service to be an A11y service" into tm-dev

parents 16ba50d5 6f4f7061
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -647,6 +647,14 @@ public class AccessibilitySecurityPolicy {
            return false;
        }

        if ((serviceInfo.flags & ServiceInfo.FLAG_EXTERNAL_SERVICE) != 0) {
            Slog.w(LOG_TAG, "Skipping accessibility service " + new ComponentName(
                    serviceInfo.packageName, serviceInfo.name).flattenToShortString()
                    + ": the service is the external one and doesn't allow to register as "
                    + "an accessibility service ");
            return false;
        }

        int servicePackageUid = serviceInfo.applicationInfo.uid;
        if (mAppOpsManager.noteOpNoThrow(AppOpsManager.OPSTR_BIND_ACCESSIBILITY_SERVICE,
                servicePackageUid, serviceInfo.packageName, null, null)
+12 −0
Original line number Diff line number Diff line
@@ -572,6 +572,18 @@ public class AccessibilitySecurityPolicyTest {
                serviceInfo.applicationInfo.uid, serviceInfo.packageName, null, null);
    }

    @Test
    public void canRegisterService_isExternalService_returnFalse() {
        final ServiceInfo serviceInfo = new ServiceInfo();
        serviceInfo.applicationInfo = new ApplicationInfo();
        serviceInfo.packageName = PACKAGE_NAME;
        serviceInfo.name = AccessibilitySecurityPolicyTest.class.getSimpleName();
        serviceInfo.permission = android.Manifest.permission.BIND_ACCESSIBILITY_SERVICE;
        serviceInfo.flags |= ServiceInfo.FLAG_EXTERNAL_SERVICE;

        assertFalse(mA11ySecurityPolicy.canRegisterService(serviceInfo));
    }

    @Test
    public void checkAccessibilityAccess_shouldCheckAppOps() {
        final AccessibilityServiceInfo mockServiceInfo = Mockito.mock(