Loading services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java +6 −2 Original line number Diff line number Diff line Loading @@ -217,6 +217,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub private final AppOpsManager mAppOpsManager; private final ActivityTaskManagerInternal mActivityTaskManagerService; private final MainHandler mMainHandler; private final GlobalActionPerformer mGlobalActionPerformer; Loading Loading @@ -308,6 +310,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub mMainHandler = new MainHandler(mContext.getMainLooper()); mGlobalActionPerformer = new GlobalActionPerformer(mContext, mWindowManagerService); mA11yDisplayListener = new AccessibilityDisplayListener(mContext, mMainHandler); mActivityTaskManagerService = LocalServices.getService(ActivityTaskManagerInternal.class); registerBroadcastReceivers(); new AccessibilityContentObserver(mMainHandler).register( Loading Loading @@ -1635,7 +1638,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub if (service == null) { service = new AccessibilityServiceConnection(userState, mContext, componentName, installedService, sIdCounter++, mMainHandler, mLock, mSecurityPolicy, this, mWindowManagerService, mGlobalActionPerformer); this, mWindowManagerService, mGlobalActionPerformer, mActivityTaskManagerService); } else if (userState.mBoundServices.contains(service)) { continue; } Loading Loading @@ -3028,7 +3032,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub userState, mContext, COMPONENT_NAME, info, sIdCounter++, mMainHandler, mLock, mSecurityPolicy, AccessibilityManagerService.this, mWindowManagerService, mGlobalActionPerformer) { mGlobalActionPerformer, mActivityTaskManagerService) { @Override public boolean supportsFlagForNotImportantViews(AccessibilityServiceInfo info) { return true; Loading services/accessibility/java/com/android/server/accessibility/AccessibilityServiceConnection.java +17 −1 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ import android.util.Slog; import com.android.server.accessibility.AccessibilityManagerService.SecurityPolicy; import com.android.server.accessibility.AccessibilityManagerService.UserState; import com.android.server.wm.ActivityTaskManagerInternal; import com.android.server.wm.WindowManagerInternal; import java.lang.ref.WeakReference; Loading @@ -58,6 +59,7 @@ class AccessibilityServiceConnection extends AbstractAccessibilityServiceConnect */ final WeakReference<UserState> mUserStateWeakReference; final Intent mIntent; final ActivityTaskManagerInternal mActivityTaskManagerService; private final Handler mMainHandler; Loading @@ -69,7 +71,8 @@ class AccessibilityServiceConnection extends AbstractAccessibilityServiceConnect AccessibilityServiceInfo accessibilityServiceInfo, int id, Handler mainHandler, Object lock, SecurityPolicy securityPolicy, SystemSupport systemSupport, WindowManagerInternal windowManagerInternal, GlobalActionPerformer globalActionPerfomer) { GlobalActionPerformer globalActionPerfomer, ActivityTaskManagerInternal activityTaskManagerService) { super(context, componentName, accessibilityServiceInfo, id, mainHandler, lock, securityPolicy, systemSupport, windowManagerInternal, globalActionPerfomer); mUserStateWeakReference = new WeakReference<UserState>(userState); Loading @@ -77,6 +80,7 @@ class AccessibilityServiceConnection extends AbstractAccessibilityServiceConnect mMainHandler = mainHandler; mIntent.putExtra(Intent.EXTRA_CLIENT_LABEL, com.android.internal.R.string.accessibility_binding_label); mActivityTaskManagerService = activityTaskManagerService; final long identity = Binder.clearCallingIdentity(); try { mIntent.putExtra(Intent.EXTRA_CLIENT_INTENT, mSystemSupport.getPendingIntentActivity( Loading @@ -103,6 +107,9 @@ class AccessibilityServiceConnection extends AbstractAccessibilityServiceConnect } finally { Binder.restoreCallingIdentity(identity); } mActivityTaskManagerService.setAllowAppSwitches(mComponentName.flattenToString(), mAccessibilityServiceInfo.getResolveInfo().serviceInfo.applicationInfo.uid, userState.mUserId); } public void unbindLocked() { Loading @@ -111,6 +118,9 @@ class AccessibilityServiceConnection extends AbstractAccessibilityServiceConnect if (userState == null) return; userState.removeServiceLocked(this); mSystemSupport.getMagnificationController().resetAllIfNeeded(mId); // Set uid to -1 to clear allowing app switches. mActivityTaskManagerService.setAllowAppSwitches(mComponentName.flattenToString(), /* uid= */ -1, userState.mUserId); resetLocked(); } Loading Loading @@ -208,6 +218,12 @@ class AccessibilityServiceConnection extends AbstractAccessibilityServiceConnect @Override public void onServiceDisconnected(ComponentName componentName) { binderDied(); UserState userState = mUserStateWeakReference.get(); if (userState != null) { // Set uid to -1 to clear allowing app switches. mActivityTaskManagerService.setAllowAppSwitches(mComponentName.flattenToString(), /* uid= */ -1, userState.mUserId); } } @Override Loading services/tests/servicestests/src/com/android/server/accessibility/AccessibilityServiceConnectionTest.java +4 −1 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ import android.os.IBinder; import android.os.RemoteException; import android.os.UserHandle; import com.android.server.wm.ActivityTaskManagerInternal; import com.android.server.wm.WindowManagerInternal; import org.junit.After; Loading Loading @@ -67,6 +68,7 @@ public class AccessibilityServiceConnectionTest { @Mock AccessibilityServiceInfo mMockServiceInfo; @Mock ResolveInfo mMockResolveInfo; @Mock AccessibilityManagerService.SecurityPolicy mMockSecurityPolicy; @Mock ActivityTaskManagerInternal mMockActivityTaskManagerInternal; @Mock AbstractAccessibilityServiceConnection.SystemSupport mMockSystemSupport; @Mock WindowManagerInternal mMockWindowManagerInternal; @Mock GlobalActionPerformer mMockGlobalActionPerformer; Loading @@ -89,7 +91,8 @@ public class AccessibilityServiceConnectionTest { mConnection = new AccessibilityServiceConnection(mMockUserState, mMockContext, COMPONENT_NAME, mMockServiceInfo, SERVICE_ID, mHandler, new Object(), mMockSecurityPolicy, mMockSystemSupport, mMockWindowManagerInternal, mMockGlobalActionPerformer); mMockGlobalActionPerformer, mMockActivityTaskManagerInternal); when(mMockSecurityPolicy.canPerformGestures(mConnection)).thenReturn(true); } @After Loading Loading
services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java +6 −2 Original line number Diff line number Diff line Loading @@ -217,6 +217,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub private final AppOpsManager mAppOpsManager; private final ActivityTaskManagerInternal mActivityTaskManagerService; private final MainHandler mMainHandler; private final GlobalActionPerformer mGlobalActionPerformer; Loading Loading @@ -308,6 +310,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub mMainHandler = new MainHandler(mContext.getMainLooper()); mGlobalActionPerformer = new GlobalActionPerformer(mContext, mWindowManagerService); mA11yDisplayListener = new AccessibilityDisplayListener(mContext, mMainHandler); mActivityTaskManagerService = LocalServices.getService(ActivityTaskManagerInternal.class); registerBroadcastReceivers(); new AccessibilityContentObserver(mMainHandler).register( Loading Loading @@ -1635,7 +1638,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub if (service == null) { service = new AccessibilityServiceConnection(userState, mContext, componentName, installedService, sIdCounter++, mMainHandler, mLock, mSecurityPolicy, this, mWindowManagerService, mGlobalActionPerformer); this, mWindowManagerService, mGlobalActionPerformer, mActivityTaskManagerService); } else if (userState.mBoundServices.contains(service)) { continue; } Loading Loading @@ -3028,7 +3032,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub userState, mContext, COMPONENT_NAME, info, sIdCounter++, mMainHandler, mLock, mSecurityPolicy, AccessibilityManagerService.this, mWindowManagerService, mGlobalActionPerformer) { mGlobalActionPerformer, mActivityTaskManagerService) { @Override public boolean supportsFlagForNotImportantViews(AccessibilityServiceInfo info) { return true; Loading
services/accessibility/java/com/android/server/accessibility/AccessibilityServiceConnection.java +17 −1 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ import android.util.Slog; import com.android.server.accessibility.AccessibilityManagerService.SecurityPolicy; import com.android.server.accessibility.AccessibilityManagerService.UserState; import com.android.server.wm.ActivityTaskManagerInternal; import com.android.server.wm.WindowManagerInternal; import java.lang.ref.WeakReference; Loading @@ -58,6 +59,7 @@ class AccessibilityServiceConnection extends AbstractAccessibilityServiceConnect */ final WeakReference<UserState> mUserStateWeakReference; final Intent mIntent; final ActivityTaskManagerInternal mActivityTaskManagerService; private final Handler mMainHandler; Loading @@ -69,7 +71,8 @@ class AccessibilityServiceConnection extends AbstractAccessibilityServiceConnect AccessibilityServiceInfo accessibilityServiceInfo, int id, Handler mainHandler, Object lock, SecurityPolicy securityPolicy, SystemSupport systemSupport, WindowManagerInternal windowManagerInternal, GlobalActionPerformer globalActionPerfomer) { GlobalActionPerformer globalActionPerfomer, ActivityTaskManagerInternal activityTaskManagerService) { super(context, componentName, accessibilityServiceInfo, id, mainHandler, lock, securityPolicy, systemSupport, windowManagerInternal, globalActionPerfomer); mUserStateWeakReference = new WeakReference<UserState>(userState); Loading @@ -77,6 +80,7 @@ class AccessibilityServiceConnection extends AbstractAccessibilityServiceConnect mMainHandler = mainHandler; mIntent.putExtra(Intent.EXTRA_CLIENT_LABEL, com.android.internal.R.string.accessibility_binding_label); mActivityTaskManagerService = activityTaskManagerService; final long identity = Binder.clearCallingIdentity(); try { mIntent.putExtra(Intent.EXTRA_CLIENT_INTENT, mSystemSupport.getPendingIntentActivity( Loading @@ -103,6 +107,9 @@ class AccessibilityServiceConnection extends AbstractAccessibilityServiceConnect } finally { Binder.restoreCallingIdentity(identity); } mActivityTaskManagerService.setAllowAppSwitches(mComponentName.flattenToString(), mAccessibilityServiceInfo.getResolveInfo().serviceInfo.applicationInfo.uid, userState.mUserId); } public void unbindLocked() { Loading @@ -111,6 +118,9 @@ class AccessibilityServiceConnection extends AbstractAccessibilityServiceConnect if (userState == null) return; userState.removeServiceLocked(this); mSystemSupport.getMagnificationController().resetAllIfNeeded(mId); // Set uid to -1 to clear allowing app switches. mActivityTaskManagerService.setAllowAppSwitches(mComponentName.flattenToString(), /* uid= */ -1, userState.mUserId); resetLocked(); } Loading Loading @@ -208,6 +218,12 @@ class AccessibilityServiceConnection extends AbstractAccessibilityServiceConnect @Override public void onServiceDisconnected(ComponentName componentName) { binderDied(); UserState userState = mUserStateWeakReference.get(); if (userState != null) { // Set uid to -1 to clear allowing app switches. mActivityTaskManagerService.setAllowAppSwitches(mComponentName.flattenToString(), /* uid= */ -1, userState.mUserId); } } @Override Loading
services/tests/servicestests/src/com/android/server/accessibility/AccessibilityServiceConnectionTest.java +4 −1 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ import android.os.IBinder; import android.os.RemoteException; import android.os.UserHandle; import com.android.server.wm.ActivityTaskManagerInternal; import com.android.server.wm.WindowManagerInternal; import org.junit.After; Loading Loading @@ -67,6 +68,7 @@ public class AccessibilityServiceConnectionTest { @Mock AccessibilityServiceInfo mMockServiceInfo; @Mock ResolveInfo mMockResolveInfo; @Mock AccessibilityManagerService.SecurityPolicy mMockSecurityPolicy; @Mock ActivityTaskManagerInternal mMockActivityTaskManagerInternal; @Mock AbstractAccessibilityServiceConnection.SystemSupport mMockSystemSupport; @Mock WindowManagerInternal mMockWindowManagerInternal; @Mock GlobalActionPerformer mMockGlobalActionPerformer; Loading @@ -89,7 +91,8 @@ public class AccessibilityServiceConnectionTest { mConnection = new AccessibilityServiceConnection(mMockUserState, mMockContext, COMPONENT_NAME, mMockServiceInfo, SERVICE_ID, mHandler, new Object(), mMockSecurityPolicy, mMockSystemSupport, mMockWindowManagerInternal, mMockGlobalActionPerformer); mMockGlobalActionPerformer, mMockActivityTaskManagerInternal); when(mMockSecurityPolicy.canPerformGestures(mConnection)).thenReturn(true); } @After Loading