summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Eugene Susla <eugenesusla@google.com> 2018-01-31 16:12:22 -0800
committer Eugene Susla <eugenesusla@google.com> 2018-02-21 13:38:52 -0800
commit75fbfc7ec1d9f5d82debea7ef67c460452d23b20 (patch)
tree79c894aa3e52d3cccb2f23147ee338f24fdf2d3b
parent4ab3a172950a12221f9f9218654887a8f6cd1718 (diff)
Use PooledLambda in A11yManagerService
This replaces the usage of handler messages with PooledLambda Test: cts tests Change-Id: I0c9db5deddef7c69444d1fbadc19d10e4071a4d0
-rw-r--r--services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java317
-rw-r--r--services/accessibility/java/com/android/server/accessibility/AccessibilityServiceConnection.java6
2 files changed, 138 insertions, 185 deletions
diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
index eba983011df8..50968a016f39 100644
--- a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
+++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
@@ -22,6 +22,7 @@ import static android.view.accessibility.AccessibilityNodeInfo.ACTION_ACCESSIBIL
import static android.view.accessibility.AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS;
import static com.android.internal.util.FunctionalUtils.ignoreRemoteException;
+import static com.android.internal.util.function.pooled.PooledLambda.obtainMessage;
import android.Manifest;
import android.accessibilityservice.AccessibilityService;
@@ -100,18 +101,20 @@ import android.view.accessibility.IAccessibilityManager;
import android.view.accessibility.IAccessibilityManagerClient;
import com.android.internal.R;
+import com.android.internal.accessibility.AccessibilityShortcutController;
+import com.android.internal.accessibility.AccessibilityShortcutController.ToggleableFrameworkFeatureInfo;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.content.PackageMonitor;
import com.android.internal.util.ArrayUtils;
import com.android.internal.util.DumpUtils;
import com.android.internal.util.IntPair;
+import com.android.internal.util.function.pooled.PooledLambda;
import com.android.server.LocalServices;
-import com.android.internal.accessibility.AccessibilityShortcutController;
-import com.android.internal.accessibility.AccessibilityShortcutController.ToggleableFrameworkFeatureInfo;
import com.android.server.wm.WindowManagerInternal;
import libcore.util.EmptyArray;
+
import org.xmlpull.v1.XmlPullParserException;
import java.io.FileDescriptor;
@@ -126,8 +129,8 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
-import java.util.concurrent.CopyOnWriteArrayList;
import java.util.function.Consumer;
+import java.util.function.IntSupplier;
/**
* This class is instantiated by the system as a system level service and can be
@@ -293,6 +296,12 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
return mFingerprintGestureDispatcher;
}
+ private UserState getUserState(int userId) {
+ synchronized (mLock) {
+ return getUserStateLocked(userId);
+ }
+ }
+
private UserState getUserStateLocked(int userId) {
UserState state = mUserStates.get(userId);
if (state == null) {
@@ -540,9 +549,9 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
dispatchEvent = true;
}
if (mHasInputFilter && mInputFilter != null) {
- mMainHandler.obtainMessage(
- MainHandler.MSG_SEND_ACCESSIBILITY_EVENT_TO_INPUT_FILTER,
- AccessibilityEvent.obtain(event)).sendToTarget();
+ mMainHandler.sendMessage(obtainMessage(
+ AccessibilityManagerService::sendAccessibilityEventToInputFilter,
+ this, AccessibilityEvent.obtain(event)));
}
}
}
@@ -568,6 +577,15 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
}
}
+ private void sendAccessibilityEventToInputFilter(AccessibilityEvent event) {
+ synchronized (mLock) {
+ if (mHasInputFilter && mInputFilter != null) {
+ mInputFilter.notifyAccessibilityEvent(event);
+ }
+ }
+ event.recycle();
+ }
+
@Override
public List<AccessibilityServiceInfo> getInstalledAccessibilityServiceList(int userId) {
synchronized (mLock) {
@@ -1024,8 +1042,9 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
// Disable the local managers for the old user.
if (oldUserState.mUserClients.getRegisteredCallbackCount() > 0) {
- mMainHandler.obtainMessage(MainHandler.MSG_SEND_CLEARED_STATE_TO_CLIENTS_FOR_USER,
- oldUserState.mUserId, 0).sendToTarget();
+ mMainHandler.sendMessage(obtainMessage(
+ AccessibilityManagerService::sendStateToClients,
+ this, 0, oldUserState.mUserId));
}
// Announce user changes only if more that one exist.
@@ -1045,12 +1064,29 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
if (announceNewUser) {
// Schedule announcement of the current user if needed.
- mMainHandler.sendEmptyMessageDelayed(MainHandler.MSG_ANNOUNCE_NEW_USER_IF_NEEDED,
+ mMainHandler.sendMessageDelayed(
+ obtainMessage(AccessibilityManagerService::announceNewUserIfNeeded, this),
WAIT_FOR_USER_STATE_FULLY_INITIALIZED_MILLIS);
}
}
}
+ private void announceNewUserIfNeeded() {
+ synchronized (mLock) {
+ UserState userState = getCurrentUserStateLocked();
+ if (userState.isHandlingAccessibilityEvents()) {
+ UserManager userManager = (UserManager) mContext.getSystemService(
+ Context.USER_SERVICE);
+ String message = mContext.getString(R.string.user_switched,
+ userManager.getUserInfo(mCurrentUserId).name);
+ AccessibilityEvent event = AccessibilityEvent.obtain(
+ AccessibilityEvent.TYPE_ANNOUNCEMENT);
+ event.getText().add(message);
+ sendAccessibilityEventLocked(event, mCurrentUserId);
+ }
+ }
+ }
+
private void unlockUser(int userId) {
synchronized (mLock) {
int parentUserId = mSecurityPolicy.resolveProfileParentLocked(userId);
@@ -1154,8 +1190,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
}
if (potentialTargets == 1) {
if (state.mIsNavBarMagnificationEnabled) {
- mMainHandler.obtainMessage(
- MainHandler.MSG_SEND_ACCESSIBILITY_BUTTON_TO_INPUT_FILTER).sendToTarget();
+ mMainHandler.sendMessage(obtainMessage(
+ AccessibilityManagerService::sendAccessibilityButtonToInputFilter, this));
return;
} else {
for (int i = state.mBoundServices.size() - 1; i >= 0; i--) {
@@ -1169,12 +1205,12 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
} else {
if (state.mServiceAssignedToAccessibilityButton == null
&& !state.mIsNavBarMagnificationAssignedToAccessibilityButton) {
- mMainHandler.obtainMessage(
- MainHandler.MSG_SHOW_ACCESSIBILITY_BUTTON_CHOOSER).sendToTarget();
+ mMainHandler.sendMessage(obtainMessage(
+ AccessibilityManagerService::showAccessibilityButtonTargetSelection, this));
} else if (state.mIsNavBarMagnificationEnabled
&& state.mIsNavBarMagnificationAssignedToAccessibilityButton) {
- mMainHandler.obtainMessage(
- MainHandler.MSG_SEND_ACCESSIBILITY_BUTTON_TO_INPUT_FILTER).sendToTarget();
+ mMainHandler.sendMessage(obtainMessage(
+ AccessibilityManagerService::sendAccessibilityButtonToInputFilter, this));
return;
} else {
for (int i = state.mBoundServices.size() - 1; i >= 0; i--) {
@@ -1187,11 +1223,25 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
}
}
// The user may have turned off the assigned service or feature
- mMainHandler.obtainMessage(
- MainHandler.MSG_SHOW_ACCESSIBILITY_BUTTON_CHOOSER).sendToTarget();
+ mMainHandler.sendMessage(obtainMessage(
+ AccessibilityManagerService::showAccessibilityButtonTargetSelection, this));
+ }
+ }
+
+ private void sendAccessibilityButtonToInputFilter() {
+ synchronized (mLock) {
+ if (mHasInputFilter && mInputFilter != null) {
+ mInputFilter.notifyAccessibilityButtonClicked();
+ }
}
}
+ private void showAccessibilityButtonTargetSelection() {
+ Intent intent = new Intent(AccessibilityManager.ACTION_CHOOSE_ACCESSIBILITY_BUTTON);
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
+ mContext.startActivityAsUser(intent, UserHandle.of(mCurrentUserId));
+ }
+
private void notifyAccessibilityButtonVisibilityChangedLocked(boolean available) {
final UserState state = getCurrentUserStateLocked();
mIsAccessibilityButtonShown = available;
@@ -1555,28 +1605,54 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
&& (mGlobalClients.getRegisteredCallbackCount() > 0
|| userState.mUserClients.getRegisteredCallbackCount() > 0)) {
userState.mLastSentClientState = clientState;
- mMainHandler.obtainMessage(MainHandler.MSG_SEND_STATE_TO_CLIENTS,
- clientState, userState.mUserId).sendToTarget();
+ mMainHandler.sendMessage(obtainMessage(
+ AccessibilityManagerService::sendStateToAllClients,
+ this, clientState, userState.mUserId));
}
}
- private void showAccessibilityButtonTargetSelection() {
- Intent intent = new Intent(AccessibilityManager.ACTION_CHOOSE_ACCESSIBILITY_BUTTON);
- intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
- mContext.startActivityAsUser(intent, UserHandle.of(mCurrentUserId));
+ private void sendStateToAllClients(int clientState, int userId) {
+ sendStateToClients(clientState, mGlobalClients);
+ sendStateToClients(clientState, userId);
+ }
+
+ private void sendStateToClients(int clientState, int userId) {
+ sendStateToClients(clientState, getUserState(userId).mUserClients);
+ }
+
+ private void sendStateToClients(int clientState,
+ RemoteCallbackList<IAccessibilityManagerClient> clients) {
+ clients.broadcast(ignoreRemoteException(
+ client -> client.setState(clientState)));
}
private void scheduleNotifyClientsOfServicesStateChange(UserState userState) {
- mMainHandler.obtainMessage(MainHandler.MSG_SEND_SERVICES_STATE_CHANGED_TO_CLIENTS,
- userState.mUserId).sendToTarget();
+ mMainHandler.sendMessage(obtainMessage(
+ AccessibilityManagerService::sendServicesStateChanged,
+ this, userState.mUserClients));
+ }
+
+ private void sendServicesStateChanged(
+ RemoteCallbackList<IAccessibilityManagerClient> userClients) {
+ notifyClientsOfServicesStateChange(mGlobalClients);
+ notifyClientsOfServicesStateChange(userClients);
+ }
+
+ private void notifyClientsOfServicesStateChange(
+ RemoteCallbackList<IAccessibilityManagerClient> clients) {
+ clients.broadcast(ignoreRemoteException(
+ client -> client.notifyServicesStateChanged()));
}
private void scheduleUpdateInputFilter(UserState userState) {
- mMainHandler.obtainMessage(MainHandler.MSG_UPDATE_INPUT_FILTER, userState).sendToTarget();
+ mMainHandler.sendMessage(obtainMessage(
+ AccessibilityManagerService::updateInputFilter, this, userState));
}
private void scheduleUpdateFingerprintGestureHandling(UserState userState) {
- mMainHandler.obtainMessage(MainHandler.MSG_UPDATE_FINGERPRINT, userState).sendToTarget();
+ mMainHandler.sendMessage(obtainMessage(
+ AccessibilityManagerService::updateFingerprintGestureHandling,
+ this, userState));
}
private void updateInputFilter(UserState userState) {
@@ -2039,9 +2115,9 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
return true;
} else if (mEnableTouchExplorationDialog == null
|| !mEnableTouchExplorationDialog.isShowing()) {
- mMainHandler.obtainMessage(
- MainHandler.MSG_SHOW_ENABLED_TOUCH_EXPLORATION_DIALOG,
- service).sendToTarget();
+ mMainHandler.sendMessage(obtainMessage(
+ AccessibilityManagerService::showEnableTouchExplorationDialog,
+ this, service));
}
} else {
// Starting in JB-MR2 we request an accessibility service to declare
@@ -2293,9 +2369,9 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
private void sendAccessibilityEventLocked(AccessibilityEvent event, int userId) {
// Resync to avoid calling out with the lock held
event.setEventTime(SystemClock.uptimeMillis());
- mMainHandler.obtainMessage(
- MainHandler.MSG_SEND_ACCESSIBILITY_EVENT, userId, 0 /* unused */, event)
- .sendToTarget();
+ mMainHandler.sendMessage(obtainMessage(
+ AccessibilityManagerService::sendAccessibilityEvent,
+ this, event, userId));
}
/**
@@ -2419,22 +2495,9 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
}
}
+ //TODO remove after refactoring KeyEventDispatcherTest
final class MainHandler extends Handler {
- public static final int MSG_SEND_ACCESSIBILITY_EVENT_TO_INPUT_FILTER = 1;
- public static final int MSG_SEND_STATE_TO_CLIENTS = 2;
- public static final int MSG_SEND_CLEARED_STATE_TO_CLIENTS_FOR_USER = 3;
- public static final int MSG_ANNOUNCE_NEW_USER_IF_NEEDED = 5;
- public static final int MSG_UPDATE_INPUT_FILTER = 6;
- public static final int MSG_SHOW_ENABLED_TOUCH_EXPLORATION_DIALOG = 7;
public static final int MSG_SEND_KEY_EVENT_TO_INPUT_FILTER = 8;
- public static final int MSG_CLEAR_ACCESSIBILITY_FOCUS = 9;
- public static final int MSG_SEND_SERVICES_STATE_CHANGED_TO_CLIENTS = 10;
- public static final int MSG_UPDATE_FINGERPRINT = 11;
- public static final int MSG_SEND_RELEVANT_EVENTS_CHANGED_TO_CLIENTS = 12;
- public static final int MSG_SEND_ACCESSIBILITY_BUTTON_TO_INPUT_FILTER = 13;
- public static final int MSG_SHOW_ACCESSIBILITY_BUTTON_CHOOSER = 14;
- public static final int MSG_INIT_SERVICE = 15;
- public static final int MSG_SEND_ACCESSIBILITY_EVENT = 16;
public MainHandler(Looper looper) {
super(looper);
@@ -2442,143 +2505,25 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
@Override
public void handleMessage(Message msg) {
- final int type = msg.what;
- switch (type) {
- case MSG_SEND_ACCESSIBILITY_EVENT_TO_INPUT_FILTER: {
- AccessibilityEvent event = (AccessibilityEvent) msg.obj;
- synchronized (mLock) {
- if (mHasInputFilter && mInputFilter != null) {
- mInputFilter.notifyAccessibilityEvent(event);
- }
- }
- event.recycle();
- } break;
-
- case MSG_SEND_KEY_EVENT_TO_INPUT_FILTER: {
- KeyEvent event = (KeyEvent) msg.obj;
- final int policyFlags = msg.arg1;
- synchronized (mLock) {
- if (mHasInputFilter && mInputFilter != null) {
- mInputFilter.sendInputEvent(event, policyFlags);
- }
- }
- event.recycle();
- } break;
-
- case MSG_SEND_STATE_TO_CLIENTS: {
- final int clientState = msg.arg1;
- final int userId = msg.arg2;
- sendStateToClients(clientState, mGlobalClients);
- sendStateToClients(clientState, getUserClientsForId(userId));
- } break;
-
- case MSG_SEND_CLEARED_STATE_TO_CLIENTS_FOR_USER: {
- final int userId = msg.arg1;
- sendStateToClients(0, getUserClientsForId(userId));
- } break;
-
- case MSG_ANNOUNCE_NEW_USER_IF_NEEDED: {
- announceNewUserIfNeeded();
- } break;
-
- case MSG_UPDATE_INPUT_FILTER: {
- UserState userState = (UserState) msg.obj;
- updateInputFilter(userState);
- } break;
-
- case MSG_SHOW_ENABLED_TOUCH_EXPLORATION_DIALOG: {
- AccessibilityServiceConnection service =
- (AccessibilityServiceConnection) msg.obj;
- showEnableTouchExplorationDialog(service);
- } break;
-
- case MSG_CLEAR_ACCESSIBILITY_FOCUS: {
- final int windowId = msg.arg1;
- getInteractionBridge().clearAccessibilityFocusNotLocked(windowId);
- } break;
-
- case MSG_SEND_SERVICES_STATE_CHANGED_TO_CLIENTS: {
- final int userId = msg.arg1;
- notifyClientsOfServicesStateChange(mGlobalClients);
- notifyClientsOfServicesStateChange(getUserClientsForId(userId));
- } break;
-
- case MSG_UPDATE_FINGERPRINT: {
- updateFingerprintGestureHandling((UserState) msg.obj);
- } break;
-
- case MSG_SEND_RELEVANT_EVENTS_CHANGED_TO_CLIENTS: {
- final int userId = msg.arg1;
- final int relevantEventTypes = msg.arg2;
- final UserState userState;
- synchronized (mLock) {
- userState = getUserStateLocked(userId);
- }
- broadcastToClients(userState, ignoreRemoteException(
- client -> client.mCallback.setRelevantEventTypes(relevantEventTypes)));
- } break;
-
- case MSG_SEND_ACCESSIBILITY_BUTTON_TO_INPUT_FILTER: {
- synchronized (mLock) {
- if (mHasInputFilter && mInputFilter != null) {
- mInputFilter.notifyAccessibilityButtonClicked();
- }
+ if (msg.what == MSG_SEND_KEY_EVENT_TO_INPUT_FILTER) {
+ KeyEvent event = (KeyEvent) msg.obj;
+ final int policyFlags = msg.arg1;
+ synchronized (mLock) {
+ if (mHasInputFilter && mInputFilter != null) {
+ mInputFilter.sendInputEvent(event, policyFlags);
}
- } break;
-
- case MSG_SHOW_ACCESSIBILITY_BUTTON_CHOOSER: {
- showAccessibilityButtonTargetSelection();
- } break;
-
- case MSG_INIT_SERVICE: {
- final AccessibilityServiceConnection service =
- (AccessibilityServiceConnection) msg.obj;
- service.initializeService();
- } break;
-
- case MSG_SEND_ACCESSIBILITY_EVENT: {
- final AccessibilityEvent event = (AccessibilityEvent) msg.obj;
- final int userId = msg.arg1;
- sendAccessibilityEvent(event, userId);
- }
- }
- }
-
- private void announceNewUserIfNeeded() {
- synchronized (mLock) {
- UserState userState = getCurrentUserStateLocked();
- if (userState.isHandlingAccessibilityEvents()) {
- UserManager userManager = (UserManager) mContext.getSystemService(
- Context.USER_SERVICE);
- String message = mContext.getString(R.string.user_switched,
- userManager.getUserInfo(mCurrentUserId).name);
- AccessibilityEvent event = AccessibilityEvent.obtain(
- AccessibilityEvent.TYPE_ANNOUNCEMENT);
- event.getText().add(message);
- sendAccessibilityEventLocked(event, mCurrentUserId);
}
+ event.recycle();
}
}
+ }
- private RemoteCallbackList<IAccessibilityManagerClient> getUserClientsForId(int userId) {
- final UserState userState;
- synchronized (mLock) {
- userState = getUserStateLocked(userId);
- }
- return userState.mUserClients;
- }
-
- private void sendStateToClients(int clientState,
- RemoteCallbackList<IAccessibilityManagerClient> clients) {
- clients.broadcast(ignoreRemoteException(
- client -> client.setState(clientState)));
- }
+ void clearAccessibilityFocus(IntSupplier windowId) {
+ clearAccessibilityFocus(windowId.getAsInt());
+ }
- private void notifyClientsOfServicesStateChange(
- RemoteCallbackList<IAccessibilityManagerClient> clients) {
- clients.broadcast(ignoreRemoteException(
- client -> client.notifyServicesStateChanged()));
- }
+ void clearAccessibilityFocus(int windowId) {
+ getInteractionBridge().clearAccessibilityFocusNotLocked(windowId);
}
private int findWindowIdLocked(IBinder token) {
@@ -2912,7 +2857,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
* Has no effect if no item has accessibility focus, if the item with accessibility
* focus does not expose the specified action, or if the action fails.
*
- * @param actionId The id of the action to perform.
+ * @param action The action to perform.
*
* @return {@code true} if the action was performed. {@code false} if it was not.
*/
@@ -3353,8 +3298,9 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
case AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED: {
synchronized (mLock) {
if (mAccessibilityFocusedWindowId != windowId) {
- mMainHandler.obtainMessage(MainHandler.MSG_CLEAR_ACCESSIBILITY_FOCUS,
- mAccessibilityFocusedWindowId, 0).sendToTarget();
+ mMainHandler.sendMessage(obtainMessage(
+ AccessibilityManagerService::clearAccessibilityFocus,
+ AccessibilityManagerService.this, 0));
mSecurityPolicy.setAccessibilityFocusedWindowLocked(windowId);
mAccessibilityFocusNodeId = nodeId;
}
@@ -3406,12 +3352,17 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
if (oldActiveWindow != mSecurityPolicy.mActiveWindowId
&& mAccessibilityFocusedWindowId == oldActiveWindow
&& getCurrentUserStateLocked().mAccessibilityFocusOnlyInActiveWindow) {
- mMainHandler.obtainMessage(MainHandler.MSG_CLEAR_ACCESSIBILITY_FOCUS,
- oldActiveWindow, 0).sendToTarget();
+ mMainHandler.sendMessage(obtainMessage(
+ AccessibilityManagerService::clearAccessibilityFocus,
+ AccessibilityManagerService.this, box(oldActiveWindow)));
}
}
}
+ private IntSupplier box(int value) {
+ return PooledLambda.obtainSupplier(value).recycleOnUse();
+ }
+
public int getActiveWindowId() {
if (mActiveWindowId == INVALID_WINDOW_ID && !mTouchInteractionInProgress) {
mActiveWindowId = getFocusedWindowId();
diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityServiceConnection.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityServiceConnection.java
index 96b897926136..89bf82d6f065 100644
--- a/services/accessibility/java/com/android/server/accessibility/AccessibilityServiceConnection.java
+++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityServiceConnection.java
@@ -18,6 +18,8 @@ package com.android.server.accessibility;
import static android.provider.Settings.Secure.SHOW_MODE_AUTO;
+import static com.android.internal.util.function.pooled.PooledLambda.obtainMessage;
+
import android.accessibilityservice.AccessibilityServiceInfo;
import android.accessibilityservice.IAccessibilityServiceClient;
import android.content.ComponentName;
@@ -158,8 +160,8 @@ class AccessibilityServiceConnection extends AbstractAccessibilityServiceConnect
mSystemSupport.onClientChange(false);
// Initialize the service on the main handler after we're done setting up for
// the new configuration (for example, initializing the input filter).
- mMainHandler.obtainMessage(
- AccessibilityManagerService.MainHandler.MSG_INIT_SERVICE, this).sendToTarget();
+ mMainHandler.sendMessage(obtainMessage(
+ AccessibilityServiceConnection::initializeService, this));
}
}