Merge "Don't allow an external service to be an A11y service" into tm-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
9172a68c1a
@@ -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)
|
||||
|
||||
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user