Loading services/java/com/android/server/accessibility/AccessibilityManagerService.java +47 −37 Original line number Diff line number Diff line Loading @@ -436,7 +436,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub public IAccessibilityServiceConnection registerEventListener(IEventListener listener) { mSecurityPolicy.enforceCallingPermission(Manifest.permission.RETRIEVE_WINDOW_CONTENT, FUNCTION_REGISTER_EVENT_LISTENER); ComponentName componentName = new ComponentName("foo.bar", "FakeAccessibilityService"); ComponentName componentName = new ComponentName("foo.bar", "AutomationAccessibilityService"); synchronized (mLock) { Service oldService = mComponentNameToServiceMap.get(componentName); if (oldService != null) { Loading Loading @@ -829,7 +830,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub boolean mCanRetrieveScreenContent; boolean mIsFake; boolean mIsAutomation; final Callback mCallback = new Callback(); Loading @@ -842,12 +843,12 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub new SparseArray<AccessibilityEvent>(); public Service(ComponentName componentName, AccessibilityServiceInfo accessibilityServiceInfo, boolean isFake) { AccessibilityServiceInfo accessibilityServiceInfo, boolean isAutomation) { mId = sIdCounter++; mComponentName = componentName; mAccessibilityServiceInfo = accessibilityServiceInfo; mIsFake = isFake; if (!isFake) { mIsAutomation = isAutomation; if (!isAutomation) { mCanRetrieveScreenContent = accessibilityServiceInfo.getCanRetrieveWindowContent(); mIntent = new Intent().setComponent(mComponentName); mIntent.putExtra(Intent.EXTRA_CLIENT_LABEL, Loading Loading @@ -881,7 +882,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub * @return True if binding is successful. */ public boolean bind() { if (!mIsFake && mService == null) { if (!mIsAutomation && mService == null) { return mContext.bindService(mIntent, this, Context.BIND_AUTO_CREATE); } return false; Loading @@ -898,7 +899,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub synchronized (mLock) { tryRemoveServiceLocked(this); } if (!mIsFake) { if (!mIsAutomation) { mContext.unbindService(this); } mService = null; Loading Loading @@ -938,16 +939,19 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub IAccessibilityInteractionConnection connection = null; synchronized (mLock) { final boolean permissionGranted = mSecurityPolicy.canRetrieveWindowContent(this); if (permissionGranted) { if (!permissionGranted) { return null; } else { connection = getConnectionToRetrievalAllowingWindowLocked(); } } if (connection == null) { if (DEBUG) { Slog.e(LOG_TAG, "No interaction connection to a retrieve allowing window."); Slog.e(LOG_TAG, "No interaction connection to a retrieve " + "allowing window."); } return null; } } } final long identityToken = Binder.clearCallingIdentity(); try { final int interactionId = mInteractionIdCounter.getAndIncrement(); Loading Loading @@ -982,16 +986,18 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub synchronized (mLock) { final boolean permissionGranted = mSecurityPolicy.canGetAccessibilityNodeInfoLocked(this, accessibilityWindowId); if (permissionGranted) { if (!permissionGranted) { return null; } else { connection = getConnectionToRetrievalAllowingWindowLocked(); } } if (connection == null) { if (DEBUG) { Slog.e(LOG_TAG, "No interaction connection to focused window."); } return null; } } } final long identityToken = Binder.clearCallingIdentity(); try { final int interactionId = mInteractionIdCounter.getAndIncrement(); Loading Loading @@ -1025,10 +1031,10 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub synchronized (mLock) { final boolean permissionGranted = mSecurityPolicy.canGetAccessibilityNodeInfoLocked(this, accessibilityWindowId); if (permissionGranted) { if (!permissionGranted) { return null; } else { connection = mWindowIdToInteractionConnectionMap.get(accessibilityWindowId); } } if (connection == null) { if (DEBUG) { Slog.e(LOG_TAG, "No interaction connection to window: " Loading @@ -1036,6 +1042,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub } return null; } } } final long identityToken = Binder.clearCallingIdentity(); try { final int interactionId = mInteractionIdCounter.getAndIncrement(); Loading Loading @@ -1066,10 +1074,10 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub synchronized (mLock) { final boolean permissionGranted = mSecurityPolicy.canPerformActionLocked(this, accessibilityWindowId, action); if (permissionGranted) { if (!permissionGranted) { return false; } else { connection = mWindowIdToInteractionConnectionMap.get(accessibilityWindowId); } } if (connection == null) { if (DEBUG) { Slog.e(LOG_TAG, "No interaction connection to window: " Loading @@ -1077,6 +1085,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub } return false; } } } final long identityToken = Binder.clearCallingIdentity(); try { final int interactionId = mInteractionIdCounter.getAndIncrement(); Loading Loading
services/java/com/android/server/accessibility/AccessibilityManagerService.java +47 −37 Original line number Diff line number Diff line Loading @@ -436,7 +436,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub public IAccessibilityServiceConnection registerEventListener(IEventListener listener) { mSecurityPolicy.enforceCallingPermission(Manifest.permission.RETRIEVE_WINDOW_CONTENT, FUNCTION_REGISTER_EVENT_LISTENER); ComponentName componentName = new ComponentName("foo.bar", "FakeAccessibilityService"); ComponentName componentName = new ComponentName("foo.bar", "AutomationAccessibilityService"); synchronized (mLock) { Service oldService = mComponentNameToServiceMap.get(componentName); if (oldService != null) { Loading Loading @@ -829,7 +830,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub boolean mCanRetrieveScreenContent; boolean mIsFake; boolean mIsAutomation; final Callback mCallback = new Callback(); Loading @@ -842,12 +843,12 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub new SparseArray<AccessibilityEvent>(); public Service(ComponentName componentName, AccessibilityServiceInfo accessibilityServiceInfo, boolean isFake) { AccessibilityServiceInfo accessibilityServiceInfo, boolean isAutomation) { mId = sIdCounter++; mComponentName = componentName; mAccessibilityServiceInfo = accessibilityServiceInfo; mIsFake = isFake; if (!isFake) { mIsAutomation = isAutomation; if (!isAutomation) { mCanRetrieveScreenContent = accessibilityServiceInfo.getCanRetrieveWindowContent(); mIntent = new Intent().setComponent(mComponentName); mIntent.putExtra(Intent.EXTRA_CLIENT_LABEL, Loading Loading @@ -881,7 +882,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub * @return True if binding is successful. */ public boolean bind() { if (!mIsFake && mService == null) { if (!mIsAutomation && mService == null) { return mContext.bindService(mIntent, this, Context.BIND_AUTO_CREATE); } return false; Loading @@ -898,7 +899,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub synchronized (mLock) { tryRemoveServiceLocked(this); } if (!mIsFake) { if (!mIsAutomation) { mContext.unbindService(this); } mService = null; Loading Loading @@ -938,16 +939,19 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub IAccessibilityInteractionConnection connection = null; synchronized (mLock) { final boolean permissionGranted = mSecurityPolicy.canRetrieveWindowContent(this); if (permissionGranted) { if (!permissionGranted) { return null; } else { connection = getConnectionToRetrievalAllowingWindowLocked(); } } if (connection == null) { if (DEBUG) { Slog.e(LOG_TAG, "No interaction connection to a retrieve allowing window."); Slog.e(LOG_TAG, "No interaction connection to a retrieve " + "allowing window."); } return null; } } } final long identityToken = Binder.clearCallingIdentity(); try { final int interactionId = mInteractionIdCounter.getAndIncrement(); Loading Loading @@ -982,16 +986,18 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub synchronized (mLock) { final boolean permissionGranted = mSecurityPolicy.canGetAccessibilityNodeInfoLocked(this, accessibilityWindowId); if (permissionGranted) { if (!permissionGranted) { return null; } else { connection = getConnectionToRetrievalAllowingWindowLocked(); } } if (connection == null) { if (DEBUG) { Slog.e(LOG_TAG, "No interaction connection to focused window."); } return null; } } } final long identityToken = Binder.clearCallingIdentity(); try { final int interactionId = mInteractionIdCounter.getAndIncrement(); Loading Loading @@ -1025,10 +1031,10 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub synchronized (mLock) { final boolean permissionGranted = mSecurityPolicy.canGetAccessibilityNodeInfoLocked(this, accessibilityWindowId); if (permissionGranted) { if (!permissionGranted) { return null; } else { connection = mWindowIdToInteractionConnectionMap.get(accessibilityWindowId); } } if (connection == null) { if (DEBUG) { Slog.e(LOG_TAG, "No interaction connection to window: " Loading @@ -1036,6 +1042,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub } return null; } } } final long identityToken = Binder.clearCallingIdentity(); try { final int interactionId = mInteractionIdCounter.getAndIncrement(); Loading Loading @@ -1066,10 +1074,10 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub synchronized (mLock) { final boolean permissionGranted = mSecurityPolicy.canPerformActionLocked(this, accessibilityWindowId, action); if (permissionGranted) { if (!permissionGranted) { return false; } else { connection = mWindowIdToInteractionConnectionMap.get(accessibilityWindowId); } } if (connection == null) { if (DEBUG) { Slog.e(LOG_TAG, "No interaction connection to window: " Loading @@ -1077,6 +1085,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub } return false; } } } final long identityToken = Binder.clearCallingIdentity(); try { final int interactionId = mInteractionIdCounter.getAndIncrement(); Loading