diff options
| author | Svetoslav Ganov <svetoslavganov@google.com> | 2011-07-17 12:26:14 -0700 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-07-17 12:26:14 -0700 |
| commit | 8eb89cc7789314ea28f899def3fa34529724f80f (patch) | |
| tree | e3d5f68c1750835a18fb0b4fc607c3f2b71a3015 | |
| parent | d53f8a86d3a483d96b9d87fd89b09942d40e0a41 (diff) | |
| parent | 4a49d9fe52a76c7f91f81113e0a8e9f97ac3f24c (diff) | |
| download | frameworks_base-8eb89cc7789314ea28f899def3fa34529724f80f.zip frameworks_base-8eb89cc7789314ea28f899def3fa34529724f80f.tar.gz frameworks_base-8eb89cc7789314ea28f899def3fa34529724f80f.tar.bz2 | |
Merge "Throw an exception if accessibility service has not requested to retrieve window content."
| -rw-r--r-- | services/java/com/android/server/accessibility/AccessibilityManagerService.java | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/services/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/java/com/android/server/accessibility/AccessibilityManagerService.java index f99951fa..a8dc885 100644 --- a/services/java/com/android/server/accessibility/AccessibilityManagerService.java +++ b/services/java/com/android/server/accessibility/AccessibilityManagerService.java @@ -935,9 +935,11 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub } } - public AccessibilityNodeInfo findAccessibilityNodeInfoByViewIdInActiveWindow(int viewId) { + public AccessibilityNodeInfo findAccessibilityNodeInfoByViewIdInActiveWindow(int viewId) + throws RemoteException { IAccessibilityInteractionConnection connection = null; synchronized (mLock) { + mSecurityPolicy.enforceCanRetrieveWindowContent(this); final boolean permissionGranted = mSecurityPolicy.canRetrieveWindowContent(this); if (!permissionGranted) { return null; @@ -975,15 +977,16 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub } public List<AccessibilityNodeInfo> findAccessibilityNodeInfosByViewTextInActiveWindow( - String text) { + String text) throws RemoteException { return findAccessibilityNodeInfosByViewText(text, mSecurityPolicy.mRetrievalAlowingWindowId, View.NO_ID); } public List<AccessibilityNodeInfo> findAccessibilityNodeInfosByViewText(String text, - int accessibilityWindowId, int accessibilityViewId) { + int accessibilityWindowId, int accessibilityViewId) throws RemoteException { IAccessibilityInteractionConnection connection = null; synchronized (mLock) { + mSecurityPolicy.enforceCanRetrieveWindowContent(this); final boolean permissionGranted = mSecurityPolicy.canGetAccessibilityNodeInfoLocked(this, accessibilityWindowId); if (!permissionGranted) { @@ -1026,9 +1029,10 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub } public AccessibilityNodeInfo findAccessibilityNodeInfoByAccessibilityId( - int accessibilityWindowId, int accessibilityViewId) { + int accessibilityWindowId, int accessibilityViewId) throws RemoteException { IAccessibilityInteractionConnection connection = null; synchronized (mLock) { + mSecurityPolicy.enforceCanRetrieveWindowContent(this); final boolean permissionGranted = mSecurityPolicy.canGetAccessibilityNodeInfoLocked(this, accessibilityWindowId); if (!permissionGranted) { @@ -1199,6 +1203,15 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub return service.mCanRetrieveScreenContent; } + public void enforceCanRetrieveWindowContent(Service service) throws RemoteException { + // This happens due to incorrect registration so make it apparent. + if (!canRetrieveWindowContent(service)) { + Slog.e(LOG_TAG, "Accessibility serivce " + service.mComponentName + " does not " + + "declare android:canRetrieveWindowContent."); + throw new RemoteException(); + } + } + private boolean isRetrievalAllowingWindow(int windowId) { return (mRetrievalAlowingWindowId == windowId); } |
