Merge "Throw an exception if accessibility service has not requested to retrieve window content."
This commit is contained in:
committed by
Android (Google) Code Review
commit
8eb89cc778
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user