Loading services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java +1 −33 Original line number Diff line number Diff line Loading @@ -5084,39 +5084,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub final List<String> permittedServices = dpm.getPermittedAccessibilityServices(userId); // permittedServices null means all accessibility services are allowed. boolean allowed = permittedServices == null || permittedServices.contains(packageName); if (allowed) { if (android.permission.flags.Flags.enhancedConfirmationModeApisEnabled() && android.security.Flags.extendEcmToAllSettings()) { try { final EnhancedConfirmationManager userContextEcm = mContext.createContextAsUser(UserHandle.of(userId), /* flags = */ 0) .getSystemService(EnhancedConfirmationManager.class); if (userContextEcm != null) { return !userContextEcm.isRestricted(packageName, AppOpsManager.OPSTR_BIND_ACCESSIBILITY_SERVICE); } return false; } catch (PackageManager.NameNotFoundException e) { Log.e(LOG_TAG, "Exception when retrieving package:" + packageName, e); return false; } } else { try { final int mode = mContext.getSystemService(AppOpsManager.class) .noteOpNoThrow(AppOpsManager.OP_ACCESS_RESTRICTED_SETTINGS, uid, packageName); final boolean ecmEnabled = mContext.getResources().getBoolean( com.android.internal.R.bool.config_enhancedConfirmationModeEnabled); return !ecmEnabled || mode == AppOpsManager.MODE_ALLOWED || mode == AppOpsManager.MODE_DEFAULT; } catch (Exception e) { // Fallback in case if app ops is not available in testing. return false; } } } return false; return permittedServices == null || permittedServices.contains(packageName); } finally { Binder.restoreCallingIdentity(identity); } Loading services/tests/servicestests/src/com/android/server/accessibility/AccessibilityManagerServiceTest.java +0 −18 Original line number Diff line number Diff line Loading @@ -68,7 +68,6 @@ import android.annotation.UserIdInt; import android.app.PendingIntent; import android.app.RemoteAction; import android.app.admin.DevicePolicyManager; import android.app.ecm.EnhancedConfirmationManager; import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.Context; Loading Loading @@ -2119,23 +2118,6 @@ public class AccessibilityManagerServiceTest { .isEqualTo(SOFTWARE); } @Test @EnableFlags({android.permission.flags.Flags.FLAG_ENHANCED_CONFIRMATION_MODE_APIS_ENABLED, android.security.Flags.FLAG_EXTEND_ECM_TO_ALL_SETTINGS}) public void isAccessibilityTargetAllowed_nonSystemUserId_useEcmWithNonSystemUserId() { String fakePackageName = "FAKE_PACKAGE_NAME"; int uid = 0; // uid is not used in the actual implementation when flags are on int userId = mTestableContext.getUserId() + 1234; when(mDevicePolicyManager.getPermittedAccessibilityServices(userId)).thenReturn( List.of(fakePackageName)); Context mockUserContext = mock(Context.class); mTestableContext.addMockUserContext(userId, mockUserContext); mA11yms.isAccessibilityTargetAllowed(fakePackageName, uid, userId); verify(mockUserContext).getSystemService(EnhancedConfirmationManager.class); } @Test @EnableFlags(com.android.hardware.input.Flags.FLAG_ENABLE_TALKBACK_AND_MAGNIFIER_KEY_GESTURES) public void handleKeyGestureEvent_toggleMagnifier() { Loading Loading
services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java +1 −33 Original line number Diff line number Diff line Loading @@ -5084,39 +5084,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub final List<String> permittedServices = dpm.getPermittedAccessibilityServices(userId); // permittedServices null means all accessibility services are allowed. boolean allowed = permittedServices == null || permittedServices.contains(packageName); if (allowed) { if (android.permission.flags.Flags.enhancedConfirmationModeApisEnabled() && android.security.Flags.extendEcmToAllSettings()) { try { final EnhancedConfirmationManager userContextEcm = mContext.createContextAsUser(UserHandle.of(userId), /* flags = */ 0) .getSystemService(EnhancedConfirmationManager.class); if (userContextEcm != null) { return !userContextEcm.isRestricted(packageName, AppOpsManager.OPSTR_BIND_ACCESSIBILITY_SERVICE); } return false; } catch (PackageManager.NameNotFoundException e) { Log.e(LOG_TAG, "Exception when retrieving package:" + packageName, e); return false; } } else { try { final int mode = mContext.getSystemService(AppOpsManager.class) .noteOpNoThrow(AppOpsManager.OP_ACCESS_RESTRICTED_SETTINGS, uid, packageName); final boolean ecmEnabled = mContext.getResources().getBoolean( com.android.internal.R.bool.config_enhancedConfirmationModeEnabled); return !ecmEnabled || mode == AppOpsManager.MODE_ALLOWED || mode == AppOpsManager.MODE_DEFAULT; } catch (Exception e) { // Fallback in case if app ops is not available in testing. return false; } } } return false; return permittedServices == null || permittedServices.contains(packageName); } finally { Binder.restoreCallingIdentity(identity); } Loading
services/tests/servicestests/src/com/android/server/accessibility/AccessibilityManagerServiceTest.java +0 −18 Original line number Diff line number Diff line Loading @@ -68,7 +68,6 @@ import android.annotation.UserIdInt; import android.app.PendingIntent; import android.app.RemoteAction; import android.app.admin.DevicePolicyManager; import android.app.ecm.EnhancedConfirmationManager; import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.Context; Loading Loading @@ -2119,23 +2118,6 @@ public class AccessibilityManagerServiceTest { .isEqualTo(SOFTWARE); } @Test @EnableFlags({android.permission.flags.Flags.FLAG_ENHANCED_CONFIRMATION_MODE_APIS_ENABLED, android.security.Flags.FLAG_EXTEND_ECM_TO_ALL_SETTINGS}) public void isAccessibilityTargetAllowed_nonSystemUserId_useEcmWithNonSystemUserId() { String fakePackageName = "FAKE_PACKAGE_NAME"; int uid = 0; // uid is not used in the actual implementation when flags are on int userId = mTestableContext.getUserId() + 1234; when(mDevicePolicyManager.getPermittedAccessibilityServices(userId)).thenReturn( List.of(fakePackageName)); Context mockUserContext = mock(Context.class); mTestableContext.addMockUserContext(userId, mockUserContext); mA11yms.isAccessibilityTargetAllowed(fakePackageName, uid, userId); verify(mockUserContext).getSystemService(EnhancedConfirmationManager.class); } @Test @EnableFlags(com.android.hardware.input.Flags.FLAG_ENABLE_TALKBACK_AND_MAGNIFIER_KEY_GESTURES) public void handleKeyGestureEvent_toggleMagnifier() { Loading