Merge "Fix for A11y Service bug regarding large parcel volumes"
This commit is contained in:
@@ -848,7 +848,7 @@ public final class AccessibilityManager {
|
||||
|
||||
List<AccessibilityServiceInfo> services = null;
|
||||
try {
|
||||
services = service.getInstalledAccessibilityServiceList(userId);
|
||||
services = service.getInstalledAccessibilityServiceList(userId).getList();
|
||||
if (DEBUG) {
|
||||
Log.i(LOG_TAG, "Installed AccessibilityServices " + services);
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@ import android.accessibilityservice.AccessibilityServiceInfo;
|
||||
import android.accessibilityservice.IAccessibilityServiceConnection;
|
||||
import android.accessibilityservice.IAccessibilityServiceClient;
|
||||
import android.content.ComponentName;
|
||||
import android.content.pm.ParceledListSlice;
|
||||
import android.view.accessibility.AccessibilityEvent;
|
||||
import android.view.accessibility.AccessibilityNodeInfo;
|
||||
import android.view.accessibility.IAccessibilityInteractionConnection;
|
||||
@@ -47,7 +48,7 @@ interface IAccessibilityManager {
|
||||
|
||||
boolean removeClient(IAccessibilityManagerClient client, int userId);
|
||||
|
||||
List<AccessibilityServiceInfo> getInstalledAccessibilityServiceList(int userId);
|
||||
ParceledListSlice<AccessibilityServiceInfo> getInstalledAccessibilityServiceList(int userId);
|
||||
|
||||
@UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
|
||||
List<AccessibilityServiceInfo> getEnabledAccessibilityServiceList(int feedbackType, int userId);
|
||||
|
||||
@@ -32,6 +32,7 @@ import android.app.Instrumentation;
|
||||
import android.app.PendingIntent;
|
||||
import android.app.RemoteAction;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.ParceledListSlice;
|
||||
import android.graphics.drawable.Icon;
|
||||
import android.os.UserHandle;
|
||||
|
||||
@@ -135,7 +136,7 @@ public class AccessibilityManagerTest {
|
||||
|
||||
// configure the mock service behavior
|
||||
when(mMockService.getInstalledAccessibilityServiceList(anyInt()))
|
||||
.thenReturn(expectedServices);
|
||||
.thenReturn(new ParceledListSlice<>(expectedServices));
|
||||
|
||||
// invoke the method under test
|
||||
AccessibilityManager manager = createManager(true);
|
||||
|
||||
@@ -43,6 +43,7 @@ import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.pm.ApplicationInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.ParceledListSlice;
|
||||
import android.content.pm.ResolveInfo;
|
||||
import android.content.pm.ServiceInfo;
|
||||
import android.os.Handler;
|
||||
@@ -111,7 +112,8 @@ public class AccessibilityShortcutChooserActivityTest {
|
||||
when(mResolveInfo.loadLabel(any(PackageManager.class))).thenReturn(TEST_LABEL);
|
||||
when(mAccessibilityServiceInfo.getComponentName()).thenReturn(TEST_COMPONENT_NAME);
|
||||
when(mAccessibilityManagerService.getInstalledAccessibilityServiceList(
|
||||
anyInt())).thenReturn(Collections.singletonList(mAccessibilityServiceInfo));
|
||||
anyInt())).thenReturn(new ParceledListSlice<>(
|
||||
Collections.singletonList(mAccessibilityServiceInfo)));
|
||||
when(mAccessibilityManagerService.isAccessibilityTargetAllowed(
|
||||
anyString(), anyInt(), anyInt())).thenReturn(true);
|
||||
TestAccessibilityShortcutChooserActivity.setupForTesting(mAccessibilityManagerService);
|
||||
|
||||
@@ -55,6 +55,7 @@ import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.pm.ApplicationInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.ParceledListSlice;
|
||||
import android.content.pm.ResolveInfo;
|
||||
import android.content.pm.ServiceInfo;
|
||||
import android.content.res.Resources;
|
||||
@@ -150,7 +151,7 @@ public class AccessibilityShortcutControllerTest {
|
||||
when(mContext.getContentResolver()).thenReturn(mContentResolver);
|
||||
|
||||
when(mAccessibilityManagerService.getInstalledAccessibilityServiceList(anyInt()))
|
||||
.thenReturn(Collections.singletonList(mServiceInfo));
|
||||
.thenReturn(new ParceledListSlice<>(Collections.singletonList(mServiceInfo)));
|
||||
|
||||
// Use the extra level of indirection in the object to mock framework objects
|
||||
AccessibilityManager accessibilityManager =
|
||||
|
||||
@@ -74,6 +74,7 @@ import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.PackageManagerInternal;
|
||||
import android.content.pm.ParceledListSlice;
|
||||
import android.content.pm.ResolveInfo;
|
||||
import android.content.pm.ServiceInfo;
|
||||
import android.database.ContentObserver;
|
||||
@@ -1250,7 +1251,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<AccessibilityServiceInfo> getInstalledAccessibilityServiceList(int userId) {
|
||||
public ParceledListSlice<AccessibilityServiceInfo> getInstalledAccessibilityServiceList(
|
||||
int userId) {
|
||||
if (mTraceManager.isA11yTracingEnabledForTypes(FLAGS_ACCESSIBILITY_MANAGER)) {
|
||||
mTraceManager.logTrace(LOG_TAG + ".getInstalledAccessibilityServiceList",
|
||||
FLAGS_ACCESSIBILITY_MANAGER, "userId=" + userId);
|
||||
@@ -1262,8 +1264,9 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
|
||||
final int deviceId = mProxyManager.getFirstDeviceIdForUidLocked(
|
||||
Binder.getCallingUid());
|
||||
if (mProxyManager.isProxyedDeviceId(deviceId)) {
|
||||
return mProxyManager.getInstalledAndEnabledServiceInfosLocked(
|
||||
AccessibilityServiceInfo.FEEDBACK_ALL_MASK, deviceId);
|
||||
return new ParceledListSlice<>(
|
||||
mProxyManager.getInstalledAndEnabledServiceInfosLocked(
|
||||
AccessibilityServiceInfo.FEEDBACK_ALL_MASK, deviceId));
|
||||
}
|
||||
// We treat calls from a profile as if made by its parent as profiles
|
||||
// share the accessibility state of the parent. The call below
|
||||
@@ -1275,7 +1278,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
|
||||
}
|
||||
|
||||
if (Binder.getCallingPid() == OWN_PROCESS_ID) {
|
||||
return serviceInfos;
|
||||
return new ParceledListSlice<>(serviceInfos);
|
||||
}
|
||||
final PackageManagerInternal pm = LocalServices.getService(
|
||||
PackageManagerInternal.class);
|
||||
@@ -1287,7 +1290,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
|
||||
serviceInfos.remove(i);
|
||||
}
|
||||
}
|
||||
return serviceInfos;
|
||||
return new ParceledListSlice<>(serviceInfos);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user