Loading services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java +22 −13 Original line number Diff line number Diff line Loading @@ -1111,9 +1111,11 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub { private void addServiceLocked(Service service, UserState userState) { try { if (!userState.mBoundServices.contains(service)) { service.onAdded(); userState.mBoundServices.add(service); userState.mComponentNameToServiceMap.put(service.mComponentName, service); } } catch (RemoteException re) { /* do nothing */ } Loading @@ -1126,8 +1128,14 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub { */ private void removeServiceLocked(Service service, UserState userState) { userState.mBoundServices.remove(service); userState.mComponentNameToServiceMap.remove(service.mComponentName); service.onRemoved(); // It may be possible to bind a service twice, which confuses the map. Rebuild the map // to make sure we can still reach a service userState.mComponentNameToServiceMap.clear(); for (int i = 0; i < userState.mBoundServices.size(); i++) { Service boundService = userState.mBoundServices.get(i); userState.mComponentNameToServiceMap.put(boundService.mComponentName, boundService); } } /** Loading Loading @@ -2324,15 +2332,12 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub { } /** * Unbinds form the accessibility service and removes it from the data * Unbinds from the accessibility service and removes it from the data * structures for service management. * * @return True if unbinding is successful. */ public boolean unbindLocked() { if (mService == null) { return false; } UserState userState = getUserStateLocked(mUserId); getKeyEventDispatcher().flush(this); if (!mIsAutomation) { Loading Loading @@ -3033,7 +3038,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub { @Override public void onServiceDisconnected(ComponentName componentName) { /* do nothing - #binderDied takes care */ binderDied(); } public void onAdded() throws RemoteException { Loading Loading @@ -3062,14 +3067,18 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub { } public void unlinkToOwnDeathLocked() { if (mService != null) { mService.unlinkToDeath(this, 0); } } public void resetLocked() { try { // Clear the proxy in the other process so this // IAccessibilityServiceConnection can be garbage collected. if (mServiceInterface != null) { mServiceInterface.init(null, mId, null); } } catch (RemoteException re) { /* ignore */ } Loading @@ -3093,10 +3102,10 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub { mWasConnectedAndDied = true; getKeyEventDispatcher().flush(this); UserState userState = getUserStateLocked(mUserId); // The death recipient is unregistered in removeServiceLocked removeServiceLocked(this, userState); resetLocked(); if (mIsAutomation) { // This is typically done when unbinding, but UiAutomation isn't bound. removeServiceLocked(this, userState); // We no longer have an automation service, so restore // the state based on values in the settings database. userState.mInstalledServices.remove(mAccessibilityServiceInfo); Loading Loading
services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java +22 −13 Original line number Diff line number Diff line Loading @@ -1111,9 +1111,11 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub { private void addServiceLocked(Service service, UserState userState) { try { if (!userState.mBoundServices.contains(service)) { service.onAdded(); userState.mBoundServices.add(service); userState.mComponentNameToServiceMap.put(service.mComponentName, service); } } catch (RemoteException re) { /* do nothing */ } Loading @@ -1126,8 +1128,14 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub { */ private void removeServiceLocked(Service service, UserState userState) { userState.mBoundServices.remove(service); userState.mComponentNameToServiceMap.remove(service.mComponentName); service.onRemoved(); // It may be possible to bind a service twice, which confuses the map. Rebuild the map // to make sure we can still reach a service userState.mComponentNameToServiceMap.clear(); for (int i = 0; i < userState.mBoundServices.size(); i++) { Service boundService = userState.mBoundServices.get(i); userState.mComponentNameToServiceMap.put(boundService.mComponentName, boundService); } } /** Loading Loading @@ -2324,15 +2332,12 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub { } /** * Unbinds form the accessibility service and removes it from the data * Unbinds from the accessibility service and removes it from the data * structures for service management. * * @return True if unbinding is successful. */ public boolean unbindLocked() { if (mService == null) { return false; } UserState userState = getUserStateLocked(mUserId); getKeyEventDispatcher().flush(this); if (!mIsAutomation) { Loading Loading @@ -3033,7 +3038,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub { @Override public void onServiceDisconnected(ComponentName componentName) { /* do nothing - #binderDied takes care */ binderDied(); } public void onAdded() throws RemoteException { Loading Loading @@ -3062,14 +3067,18 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub { } public void unlinkToOwnDeathLocked() { if (mService != null) { mService.unlinkToDeath(this, 0); } } public void resetLocked() { try { // Clear the proxy in the other process so this // IAccessibilityServiceConnection can be garbage collected. if (mServiceInterface != null) { mServiceInterface.init(null, mId, null); } } catch (RemoteException re) { /* ignore */ } Loading @@ -3093,10 +3102,10 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub { mWasConnectedAndDied = true; getKeyEventDispatcher().flush(this); UserState userState = getUserStateLocked(mUserId); // The death recipient is unregistered in removeServiceLocked removeServiceLocked(this, userState); resetLocked(); if (mIsAutomation) { // This is typically done when unbinding, but UiAutomation isn't bound. removeServiceLocked(this, userState); // We no longer have an automation service, so restore // the state based on values in the settings database. userState.mInstalledServices.remove(mAccessibilityServiceInfo); Loading