diff options
| author | 2021-04-16 17:57:27 +0000 | |
|---|---|---|
| committer | 2021-04-16 17:57:27 +0000 | |
| commit | 0f4986c28f5913a936f53f7852215bdf603b8e51 (patch) | |
| tree | 37f1ec42010db0349105e66e4db2a679c6adf961 | |
| parent | e2b7cb3df2f93e568b84158cfb0407d1d1996296 (diff) | |
| parent | cc9c2a00a37356ca490532a3d885e69e7ae63fa1 (diff) | |
Merge "Restructure tracing code to prepare for the adding of filtering and searching features." into sc-dev
4 files changed, 244 insertions, 162 deletions
diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java index 05d4ba539a98..9abe00fba98c 100644 --- a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java +++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java @@ -149,7 +149,6 @@ import java.util.function.Predicate; */ public class AccessibilityManagerService extends IAccessibilityManager.Stub implements AbstractAccessibilityServiceConnection.SystemSupport, - AccessibilityTrace, AccessibilityUserState.ServiceInfoChangeListener, AccessibilityWindowManager.AccessibilityEventSender, AccessibilitySecurityPolicy.AccessibilityUserManager, @@ -244,7 +243,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub final SparseArray<AccessibilityUserState> mUserStates = new SparseArray<>(); private final UiAutomationManager mUiAutomationManager = new UiAutomationManager(mLock); - private final WindowManagerInternal.AccessibilityControllerInternal mA11yController; + private final AccessibilityTraceManager mTraceManager; private int mCurrentUserId = UserHandle.USER_SYSTEM; @@ -290,7 +289,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub mContext = context; mPowerManager = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE); mWindowManagerService = LocalServices.getService(WindowManagerInternal.class); - mA11yController = mWindowManagerService.getAccessibilityController(); + mTraceManager = new AccessibilityTraceManager( + mWindowManagerService.getAccessibilityController(), this); mMainHandler = new MainHandler(mContext.getMainLooper()); mActivityTaskManagerService = LocalServices.getService(ActivityTaskManagerInternal.class); mPackageManager = packageManager; @@ -311,7 +311,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub mContext = context; mPowerManager = context.getSystemService(PowerManager.class); mWindowManagerService = LocalServices.getService(WindowManagerInternal.class); - mA11yController = mWindowManagerService.getAccessibilityController(); + mTraceManager = new AccessibilityTraceManager( + mWindowManagerService.getAccessibilityController(), this); mMainHandler = new MainHandler(mContext.getMainLooper()); mActivityTaskManagerService = LocalServices.getService(ActivityTaskManagerInternal.class); mPackageManager = mContext.getPackageManager(); @@ -338,24 +339,25 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub @Override public int getCurrentUserIdLocked() { - if (isA11yTracingEnabled()) { - logTrace(LOG_TAG + ".getCurrentUserIdLocked"); + if (mTraceManager.isA11yTracingEnabled()) { + mTraceManager.logTrace(LOG_TAG + ".getCurrentUserIdLocked"); } return mCurrentUserId; } @Override public boolean isAccessibilityButtonShown() { - if (isA11yTracingEnabled()) { - logTrace(LOG_TAG + ".isAccessibilityButtonShown"); + if (mTraceManager.isA11yTracingEnabled()) { + mTraceManager.logTrace(LOG_TAG + ".isAccessibilityButtonShown"); } return mIsAccessibilityButtonShown; } @Override public void onServiceInfoChangedLocked(AccessibilityUserState userState) { - if (isA11yTracingEnabled()) { - logTrace(LOG_TAG + ".onServiceInfoChangedLocked", "userState=" + userState); + if (mTraceManager.isA11yTracingEnabled()) { + mTraceManager.logTrace( + LOG_TAG + ".onServiceInfoChangedLocked", "userState=" + userState); } mSecurityPolicy.onBoundServicesChangedLocked(userState.mUserId, userState.mBoundServices); @@ -376,6 +378,12 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub } } + AccessibilityUserState getCurrentUserState() { + synchronized (mLock) { + return getCurrentUserStateLocked(); + } + } + private AccessibilityUserState getUserState(int userId) { synchronized (mLock) { return getUserStateLocked(userId); @@ -416,8 +424,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub PackageMonitor monitor = new PackageMonitor() { @Override public void onSomePackagesChanged() { - if (isA11yTracingEnabled()) { - logTrace(LOG_TAG + ".PM.onSomePackagesChanged"); + if (mTraceManager.isA11yTracingEnabled()) { + mTraceManager.logTrace(LOG_TAG + ".PM.onSomePackagesChanged"); } synchronized (mLock) { @@ -444,8 +452,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub // mBindingServices in binderDied() during updating. Remove services from this // package from mBindingServices, and then update the user state to re-bind new // versions of them. - if (isA11yTracingEnabled()) { - logTrace(LOG_TAG + ".PM.onPackageUpdateFinished", + if (mTraceManager.isA11yTracingEnabled()) { + mTraceManager.logTrace(LOG_TAG + ".PM.onPackageUpdateFinished", "packageName=" + packageName + ";uid=" + uid); } synchronized (mLock) { @@ -477,8 +485,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub @Override public void onPackageRemoved(String packageName, int uid) { - if (isA11yTracingEnabled()) { - logTrace(LOG_TAG + ".PM.onPackageRemoved", + if (mTraceManager.isA11yTracingEnabled()) { + mTraceManager.logTrace(LOG_TAG + ".PM.onPackageRemoved", "packageName=" + packageName + ";uid=" + uid); } @@ -521,9 +529,10 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub @Override public boolean onHandleForceStop(Intent intent, String[] packages, int uid, boolean doit) { - if (isA11yTracingEnabled()) { - logTrace(LOG_TAG + ".PM.onHandleForceStop", "intent=" + intent + ";packages=" - + packages + ";uid=" + uid + ";doit=" + doit); + if (mTraceManager.isA11yTracingEnabled()) { + mTraceManager.logTrace(LOG_TAG + ".PM.onHandleForceStop", + "intent=" + intent + ";packages=" + packages + ";uid=" + uid + + ";doit=" + doit); } synchronized (mLock) { final int userId = getChangingUserId(); @@ -571,8 +580,9 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub mContext.registerReceiverAsUser(new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { - if (isA11yTracingEnabled()) { - logTrace(LOG_TAG + ".BR.onReceive", "context=" + context + ";intent=" + intent); + if (mTraceManager.isA11yTracingEnabled()) { + mTraceManager.logTrace(LOG_TAG + ".BR.onReceive", + "context=" + context + ";intent=" + intent); } String action = intent.getAction(); @@ -658,8 +668,9 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub @Override public long addClient(IAccessibilityManagerClient callback, int userId) { - if (isA11yTracingEnabled()) { - logTrace(LOG_TAG + ".addClient", "callback=" + callback + ";userId=" + userId); + if (mTraceManager.isA11yTracingEnabled()) { + mTraceManager.logTrace(LOG_TAG + ".addClient", + "callback=" + callback + ";userId=" + userId); } synchronized (mLock) { @@ -700,8 +711,9 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub @Override public void sendAccessibilityEvent(AccessibilityEvent event, int userId) { - if (isA11yTracingEnabled()) { - logTrace(LOG_TAG + ".sendAccessibilityEvent", "event=" + event + ";userId=" + userId); + if (mTraceManager.isA11yTracingEnabled()) { + mTraceManager.logTrace(LOG_TAG + ".sendAccessibilityEvent", + "event=" + event + ";userId=" + userId); } boolean dispatchEvent = false; @@ -795,9 +807,9 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub */ @Override public void registerSystemAction(RemoteAction action, int actionId) { - if (isA11yTracingEnabled()) { - logTrace(LOG_TAG + ".registerSystemAction", "action=" + action + ";actionId=" - + actionId); + if (mTraceManager.isA11yTracingEnabled()) { + mTraceManager.logTrace(LOG_TAG + ".registerSystemAction", + "action=" + action + ";actionId=" + actionId); } mSecurityPolicy.enforceCallingOrSelfPermission(Manifest.permission.MANAGE_ACCESSIBILITY); getSystemActionPerformer().registerSystemAction(actionId, action); @@ -810,8 +822,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub */ @Override public void unregisterSystemAction(int actionId) { - if (isA11yTracingEnabled()) { - logTrace(LOG_TAG + ".unregisterSystemAction", "actionId=" + actionId); + if (mTraceManager.isA11yTracingEnabled()) { + mTraceManager.logTrace(LOG_TAG + ".unregisterSystemAction", "actionId=" + actionId); } mSecurityPolicy.enforceCallingOrSelfPermission(Manifest.permission.MANAGE_ACCESSIBILITY); getSystemActionPerformer().unregisterSystemAction(actionId); @@ -827,8 +839,9 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub @Override public List<AccessibilityServiceInfo> getInstalledAccessibilityServiceList(int userId) { - if (isA11yTracingEnabled()) { - logTrace(LOG_TAG + ".getInstalledAccessibilityServiceList", "userId=" + userId); + if (mTraceManager.isA11yTracingEnabled()) { + mTraceManager.logTrace(LOG_TAG + ".getInstalledAccessibilityServiceList", + "userId=" + userId); } synchronized (mLock) { @@ -848,8 +861,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub @Override public List<AccessibilityServiceInfo> getEnabledAccessibilityServiceList(int feedbackType, int userId) { - if (isA11yTracingEnabled()) { - logTrace(LOG_TAG + ".getEnabledAccessibilityServiceList", + if (mTraceManager.isA11yTracingEnabled()) { + mTraceManager.logTrace(LOG_TAG + ".getEnabledAccessibilityServiceList", "feedbackType=" + feedbackType + ";userId=" + userId); } @@ -881,8 +894,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub @Override public void interrupt(int userId) { - if (isA11yTracingEnabled()) { - logTrace(LOG_TAG + ".interrupt", "userId=" + userId); + if (mTraceManager.isA11yTracingEnabled()) { + mTraceManager.logTrace(LOG_TAG + ".interrupt", "userId=" + userId); } List<IAccessibilityServiceClient> interfacesToInterrupt; @@ -911,8 +924,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub } for (int i = 0, count = interfacesToInterrupt.size(); i < count; i++) { try { - if (isA11yTracingEnabled()) { - logTrace(LOG_TAG + ".IAccessibilityServiceClient.onInterrupt"); + if (mTraceManager.isA11yTracingEnabled()) { + mTraceManager.logTrace(LOG_TAG + ".IAccessibilityServiceClient.onInterrupt"); } interfacesToInterrupt.get(i).onInterrupt(); } catch (RemoteException re) { @@ -926,8 +939,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub public int addAccessibilityInteractionConnection(IWindow windowToken, IBinder leashToken, IAccessibilityInteractionConnection connection, String packageName, int userId) throws RemoteException { - if (isA11yTracingEnabled()) { - logTrace(LOG_TAG + ".addAccessibilityInteractionConnection", + if (mTraceManager.isA11yTracingEnabled()) { + mTraceManager.logTrace(LOG_TAG + ".addAccessibilityInteractionConnection", "windowToken=" + windowToken + "leashToken=" + leashToken + ";connection=" + connection + "; packageName=" + packageName + ";userId=" + userId); } @@ -938,8 +951,9 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub @Override public void removeAccessibilityInteractionConnection(IWindow window) { - if (isA11yTracingEnabled()) { - logTrace(LOG_TAG + ".removeAccessibilityInteractionConnection", "window=" + window); + if (mTraceManager.isA11yTracingEnabled()) { + mTraceManager.logTrace(LOG_TAG + ".removeAccessibilityInteractionConnection", + "window=" + window); } mA11yWindowManager.removeAccessibilityInteractionConnection(window); } @@ -947,8 +961,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub @Override public void setPictureInPictureActionReplacingConnection( IAccessibilityInteractionConnection connection) throws RemoteException { - if (isA11yTracingEnabled()) { - logTrace(LOG_TAG + ".setPictureInPictureActionReplacingConnection", + if (mTraceManager.isA11yTracingEnabled()) { + mTraceManager.logTrace(LOG_TAG + ".setPictureInPictureActionReplacingConnection", "connection=" + connection); } mSecurityPolicy.enforceCallingPermission(Manifest.permission.MODIFY_ACCESSIBILITY_DATA, @@ -961,8 +975,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub IAccessibilityServiceClient serviceClient, AccessibilityServiceInfo accessibilityServiceInfo, int flags) { - if (isA11yTracingEnabled()) { - logTrace(LOG_TAG + ".registerUiTestAutomationService", "owner=" + owner + if (mTraceManager.isA11yTracingEnabled()) { + mTraceManager.logTrace(LOG_TAG + ".registerUiTestAutomationService", "owner=" + owner + ";serviceClient=" + serviceClient + ";accessibilityServiceInfo=" + accessibilityServiceInfo + ";flags=" + flags); } @@ -973,16 +987,16 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub synchronized (mLock) { mUiAutomationManager.registerUiTestAutomationServiceLocked(owner, serviceClient, mContext, accessibilityServiceInfo, sIdCounter++, mMainHandler, - mSecurityPolicy, this, this, mWindowManagerService, getSystemActionPerformer(), - mA11yWindowManager, flags); + mSecurityPolicy, this, getTraceManager(), mWindowManagerService, + getSystemActionPerformer(), mA11yWindowManager, flags); onUserStateChangedLocked(getCurrentUserStateLocked()); } } @Override public void unregisterUiTestAutomationService(IAccessibilityServiceClient serviceClient) { - if (isA11yTracingEnabled()) { - logTrace(LOG_TAG + ".unregisterUiTestAutomationService", + if (mTraceManager.isA11yTracingEnabled()) { + mTraceManager.logTrace(LOG_TAG + ".unregisterUiTestAutomationService", "serviceClient=" + serviceClient); } synchronized (mLock) { @@ -993,8 +1007,9 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub @Override public void temporaryEnableAccessibilityStateUntilKeyguardRemoved( ComponentName service, boolean touchExplorationEnabled) { - if (isA11yTracingEnabled()) { - logTrace(LOG_TAG + ".temporaryEnableAccessibilityStateUntilKeyguardRemoved", + if (mTraceManager.isA11yTracingEnabled()) { + mTraceManager.logTrace( + LOG_TAG + ".temporaryEnableAccessibilityStateUntilKeyguardRemoved", "service=" + service + ";touchExplorationEnabled=" + touchExplorationEnabled); } @@ -1026,8 +1041,9 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub @Override public IBinder getWindowToken(int windowId, int userId) { - if (isA11yTracingEnabled()) { - logTrace(LOG_TAG + ".getWindowToken", "windowId=" + windowId + ";userId=" + userId); + if (mTraceManager.isA11yTracingEnabled()) { + mTraceManager.logTrace(LOG_TAG + ".getWindowToken", + "windowId=" + windowId + ";userId=" + userId); } mSecurityPolicy.enforceCallingPermission( @@ -1069,8 +1085,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub */ @Override public void notifyAccessibilityButtonClicked(int displayId, String targetName) { - if (isA11yTracingEnabled()) { - logTrace(LOG_TAG + ".notifyAccessibilityButtonClicked", + if (mTraceManager.isA11yTracingEnabled()) { + mTraceManager.logTrace(LOG_TAG + ".notifyAccessibilityButtonClicked", "displayId=" + displayId + ";targetName=" + targetName); } @@ -1099,8 +1115,9 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub */ @Override public void notifyAccessibilityButtonVisibilityChanged(boolean shown) { - if (isA11yTracingEnabled()) { - logTrace(LOG_TAG + ".notifyAccessibilityButtonVisibilityChanged", "shown=" + shown); + if (mTraceManager.isA11yTracingEnabled()) { + mTraceManager.logTrace(LOG_TAG + ".notifyAccessibilityButtonVisibilityChanged", + "shown=" + shown); } mSecurityPolicy.enforceCallingOrSelfPermission( @@ -1131,8 +1148,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub */ @Override public void onSystemActionsChanged() { - if (isA11yTracingEnabled()) { - logTrace(LOG_TAG + ".onSystemActionsChanged"); + if (mTraceManager.isA11yTracingEnabled()) { + mTraceManager.logTrace(LOG_TAG + ".onSystemActionsChanged"); } synchronized (mLock) { @@ -1197,8 +1214,9 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub @Override public @Nullable MotionEventInjector getMotionEventInjectorForDisplayLocked(int displayId) { - if (isA11yTracingEnabled()) { - logTrace(LOG_TAG + ".getMotionEventInjectorForDisplayLocked", "displayId=" + displayId); + if (mTraceManager.isA11yTracingEnabled()) { + mTraceManager.logTrace(LOG_TAG + ".getMotionEventInjectorForDisplayLocked", + "displayId=" + displayId); } final long endMillis = SystemClock.uptimeMillis() + WAIT_MOTION_INJECTOR_TIMEOUT_MILLIS; @@ -1411,7 +1429,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub private int getClientStateLocked(AccessibilityUserState userState) { return userState.getClientStateLocked( mUiAutomationManager.isUiAutomationRunningLocked(), - mA11yController.isAccessibilityTracingEnabled()); + mTraceManager.isA11yTracingEnabled()); } private InteractionBridge getInteractionBridge() { @@ -1770,9 +1788,10 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub @Override public void persistComponentNamesToSettingLocked(String settingName, Set<ComponentName> componentNames, int userId) { - if (isA11yTracingEnabled()) { - logTrace(LOG_TAG + ".persistComponentNamesToSettingLocked", "settingName=" + settingName - + ";componentNames=" + componentNames + ";userId=" + userId); + if (mTraceManager.isA11yTracingEnabled()) { + mTraceManager.logTrace(LOG_TAG + ".persistComponentNamesToSettingLocked", + "settingName=" + settingName + ";componentNames=" + componentNames + ";userId=" + + userId); } persistColonDelimitedSetToSettingLocked(settingName, userId, componentNames, @@ -1859,8 +1878,9 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub if (service == null) { service = new AccessibilityServiceConnection(userState, mContext, componentName, installedService, sIdCounter++, mMainHandler, mLock, mSecurityPolicy, - this, this, mWindowManagerService, getSystemActionPerformer(), - mA11yWindowManager, mActivityTaskManagerService); + this, getTraceManager(), mWindowManagerService, + getSystemActionPerformer(), mA11yWindowManager, + mActivityTaskManagerService); } else if (userState.mBoundServices.contains(service)) { continue; } @@ -1892,6 +1912,12 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub updateAccessibilityEnabledSettingLocked(userState); } + void scheduleUpdateClientsIfNeeded(AccessibilityUserState userState) { + synchronized (mLock) { + scheduleUpdateClientsIfNeededLocked(userState); + } + } + private void scheduleUpdateClientsIfNeededLocked(AccessibilityUserState userState) { final int clientState = getClientStateLocked(userState); if (userState.getLastSentClientStateLocked() != clientState @@ -2737,8 +2763,9 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub @GuardedBy("mLock") @Override public MagnificationSpec getCompatibleMagnificationSpecLocked(int windowId) { - if (isA11yTracingEnabled()) { - logTrace(LOG_TAG + ".getCompatibleMagnificationSpecLocked", "windowId=" + windowId); + if (mTraceManager.isA11yTracingEnabled()) { + mTraceManager.logTrace(LOG_TAG + ".getCompatibleMagnificationSpecLocked", + "windowId=" + windowId); } IBinder windowToken = mA11yWindowManager.getWindowTokenForUserAndWindowIdLocked( @@ -2752,8 +2779,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub @Override public KeyEventDispatcher getKeyEventDispatcher() { - if (isA11yTracingEnabled()) { - logTrace(LOG_TAG + ".getKeyEventDispatcher"); + if (mTraceManager.isA11yTracingEnabled()) { + mTraceManager.logTrace(LOG_TAG + ".getKeyEventDispatcher"); } if (mKeyEventDispatcher == null) { @@ -2768,9 +2795,10 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub @SuppressWarnings("AndroidFrameworkPendingIntentMutability") public PendingIntent getPendingIntentActivity(Context context, int requestCode, Intent intent, int flags) { - if (isA11yTracingEnabled()) { - logTrace(LOG_TAG + ".getPendingIntentActivity", "context=" + context + ";requestCode=" - + requestCode + ";intent=" + intent + ";flags=" + flags); + if (mTraceManager.isA11yTracingEnabled()) { + mTraceManager.logTrace(LOG_TAG + ".getPendingIntentActivity", + "context=" + context + ";requestCode=" + requestCode + ";intent=" + intent + + ";flags=" + flags); } @@ -2788,8 +2816,9 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub */ @Override public void performAccessibilityShortcut(String targetName) { - if (isA11yTracingEnabled()) { - logTrace(LOG_TAG + ".performAccessibilityShortcut", "targetName=" + targetName); + if (mTraceManager.isA11yTracingEnabled()) { + mTraceManager.logTrace(LOG_TAG + ".performAccessibilityShortcut", + "targetName=" + targetName); } if ((UserHandle.getAppId(Binder.getCallingUid()) != Process.SYSTEM_UID) @@ -2976,8 +3005,9 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub @Override public List<String> getAccessibilityShortcutTargets(@ShortcutType int shortcutType) { - if (isA11yTracingEnabled()) { - logTrace(LOG_TAG + ".getAccessibilityShortcutTargets", "shortcutType=" + shortcutType); + if (mTraceManager.isA11yTracingEnabled()) { + mTraceManager.logTrace(LOG_TAG + ".getAccessibilityShortcutTargets", + "shortcutType=" + shortcutType); } if (mContext.checkCallingOrSelfPermission(Manifest.permission.MANAGE_ACCESSIBILITY) @@ -3049,8 +3079,9 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub @Override public void sendAccessibilityEventForCurrentUserLocked(AccessibilityEvent event) { - if (isA11yTracingEnabled()) { - logTrace(LOG_TAG + ".sendAccessibilityEventForCurrentUserLocked", "event=" + event); + if (mTraceManager.isA11yTracingEnabled()) { + mTraceManager.logTrace(LOG_TAG + ".sendAccessibilityEventForCurrentUserLocked", + "event=" + event); } sendAccessibilityEventLocked(event, mCurrentUserId); @@ -3074,8 +3105,9 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub */ @Override public boolean sendFingerprintGesture(int gestureKeyCode) { - if (isA11yTracingEnabled()) { - logTrace(LOG_TAG + ".sendFingerprintGesture", "gestureKeyCode=" + gestureKeyCode); + if (mTraceManager.isA11yTracingEnabled()) { + mTraceManager.logTrace(LOG_TAG + ".sendFingerprintGesture", + "gestureKeyCode=" + gestureKeyCode); } synchronized(mLock) { @@ -3099,8 +3131,9 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub */ @Override public int getAccessibilityWindowId(@Nullable IBinder windowToken) { - if (isA11yTracingEnabled()) { - logTrace(LOG_TAG + ".getAccessibilityWindowId", "windowToken=" + windowToken); + if (mTraceManager.isA11yTracingEnabled()) { + mTraceManager.logTrace(LOG_TAG + ".getAccessibilityWindowId", + "windowToken=" + windowToken); } synchronized (mLock) { @@ -3120,8 +3153,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub */ @Override public long getRecommendedTimeoutMillis() { - if (isA11yTracingEnabled()) { - logTrace(LOG_TAG + ".getRecommendedTimeoutMillis"); + if (mTraceManager.isA11yTracingEnabled()) { + mTraceManager.logTrace(LOG_TAG + ".getRecommendedTimeoutMillis"); } synchronized(mLock) { @@ -3138,8 +3171,9 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub @Override public void setWindowMagnificationConnection( IWindowMagnificationConnection connection) throws RemoteException { - if (isA11yTracingEnabled()) { - logTrace(LOG_TAG + ".setWindowMagnificationConnection", "connection=" + connection); + if (mTraceManager.isA11yTracingEnabled()) { + mTraceManager.logTrace(LOG_TAG + ".setWindowMagnificationConnection", + "connection=" + connection); } mSecurityPolicy.enforceCallingOrSelfPermission( @@ -3172,8 +3206,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub @Override public void associateEmbeddedHierarchy(@NonNull IBinder host, @NonNull IBinder embedded) { - if (isA11yTracingEnabled()) { - logTrace(LOG_TAG + ".associateEmbeddedHierarchy", + if (mTraceManager.isA11yTracingEnabled()) { + mTraceManager.logTrace(LOG_TAG + ".associateEmbeddedHierarchy", "host=" + host + ";embedded=" + embedded); } @@ -3184,8 +3218,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub @Override public void disassociateEmbeddedHierarchy(@NonNull IBinder token) { - if (isA11yTracingEnabled()) { - logTrace(LOG_TAG + ".disassociateEmbeddedHierarchy", "token=" + token); + if (mTraceManager.isA11yTracingEnabled()) { + mTraceManager.logTrace(LOG_TAG + ".disassociateEmbeddedHierarchy", "token=" + token); } synchronized (mLock) { @@ -3265,8 +3299,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub @Override public FullScreenMagnificationController getFullScreenMagnificationController() { - if (isA11yTracingEnabled()) { - logTrace(LOG_TAG + ".getFullScreenMagnificationController"); + if (mTraceManager.isA11yTracingEnabled()) { + mTraceManager.logTrace(LOG_TAG + ".getFullScreenMagnificationController"); } synchronized (mLock) { return mMagnificationController.getFullScreenMagnificationController(); @@ -3275,8 +3309,9 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub @Override public void onClientChangeLocked(boolean serviceInfoChanged) { - if (isA11yTracingEnabled()) { - logTrace(LOG_TAG + ".onClientChangeLocked", "serviceInfoChanged=" + serviceInfoChanged); + if (mTraceManager.isA11yTracingEnabled()) { + mTraceManager.logTrace(LOG_TAG + ".onClientChangeLocked", + "serviceInfoChanged=" + serviceInfoChanged); } AccessibilityUserState userState = getUserStateLocked(mCurrentUserId); @@ -3314,9 +3349,9 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub AccessibilityServiceConnection service = new AccessibilityServiceConnection( userState, mContext, COMPONENT_NAME, info, sIdCounter++, mMainHandler, mLock, mSecurityPolicy, - AccessibilityManagerService.this, AccessibilityManagerService.this, - mWindowManagerService, getSystemActionPerformer(), mA11yWindowManager, - mActivityTaskManagerService) { + AccessibilityManagerService.this, + AccessibilityManagerService.this.getTraceManager(), mWindowManagerService, + getSystemActionPerformer(), mA11yWindowManager, mActivityTaskManagerService) { @Override public boolean supportsFlagForNotImportantViews(AccessibilityServiceInfo info) { return true; @@ -3805,8 +3840,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub @Override public void setGestureDetectionPassthroughRegion(int displayId, Region region) { - if (isA11yTracingEnabled()) { - logTrace(LOG_TAG + ".setGestureDetectionPassthroughRegion", + if (mTraceManager.isA11yTracingEnabled()) { + mTraceManager.logTrace(LOG_TAG + ".setGestureDetectionPassthroughRegion", "displayId=" + displayId + ";region=" + region); } @@ -3820,8 +3855,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub @Override public void setTouchExplorationPassthroughRegion(int displayId, Region region) { - if (isA11yTracingEnabled()) { - logTrace(LOG_TAG + ".setTouchExplorationPassthroughRegion", + if (mTraceManager.isA11yTracingEnabled()) { + mTraceManager.logTrace(LOG_TAG + ".setTouchExplorationPassthroughRegion", "displayId=" + displayId + ";region=" + region); } @@ -3863,46 +3898,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub } - @Override - public boolean isA11yTracingEnabled() { - return mA11yController.isAccessibilityTracingEnabled(); - } - - @Override - public void startTrace() { - if (!mA11yController.isAccessibilityTracingEnabled()) { - mA11yController.startTrace(); - final AccessibilityUserState userState = getUserStateLocked(UserHandle.USER_SYSTEM); - scheduleUpdateClientsIfNeededLocked(userState); - } - } - - @Override - public void stopTrace() { - if (mA11yController.isAccessibilityTracingEnabled()) { - mA11yController.stopTrace(); - final AccessibilityUserState userState = getUserStateLocked(UserHandle.USER_SYSTEM); - scheduleUpdateClientsIfNeededLocked(userState); - } - } - - @Override - public void logTrace(String where) { - logTrace(where, ""); - } - - @Override - public void logTrace(String where, String callingParams) { - mA11yController.logTrace(where, callingParams, "".getBytes(), - Binder.getCallingUid(), Thread.currentThread().getStackTrace()); - } - - @Override - public void logTrace(long timestamp, String where, String callingParams, int processId, - long threadId, int callingUid, StackTraceElement[] callStack) { - if (mA11yController.isAccessibilityTracingEnabled()) { - mA11yController.logTrace(where, callingParams, "".getBytes(), callingUid, callStack, - timestamp, processId, threadId); - } + AccessibilityTraceManager getTraceManager() { + return mTraceManager; } } diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityShellCommand.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityShellCommand.java index 16ce177c56cf..6396960281b7 100644 --- a/services/accessibility/java/com/android/server/accessibility/AccessibilityShellCommand.java +++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityShellCommand.java @@ -59,9 +59,8 @@ final class AccessibilityShellCommand extends ShellCommand { return runCallSystemAction(); } case "start-trace": - return startTrace(); case "stop-trace": - return stopTrace(); + return mService.getTraceManager().onShellCommand(cmd); } return -1; } @@ -107,16 +106,6 @@ final class AccessibilityShellCommand extends ShellCommand { return -1; } - private int startTrace() { - mService.startTrace(); - return 0; - } - - private int stopTrace() { - mService.stopTrace(); - return 0; - } - private Integer parseUserId() { final String option = getNextOption(); if (option != null) { @@ -142,9 +131,6 @@ final class AccessibilityShellCommand extends ShellCommand { pw.println(" Get whether binding to services provided by instant apps is allowed."); pw.println(" call-system-action <ACTION_ID>"); pw.println(" Calls the system action with the given action id."); - pw.println(" start-trace"); - pw.println(" Start the debug tracing."); - pw.println(" stop-trace"); - pw.println(" Stop the debug tracing."); + mService.getTraceManager().onHelp(pw); } } diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityTraceManager.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityTraceManager.java new file mode 100644 index 000000000000..6105e8a6724b --- /dev/null +++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityTraceManager.java @@ -0,0 +1,100 @@ +/** + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.server.accessibility; + +import android.annotation.NonNull; +import android.os.Binder; + +import com.android.server.wm.WindowManagerInternal; + +import java.io.PrintWriter; + +/** + * Manager of accessibility trace. + */ +class AccessibilityTraceManager implements AccessibilityTrace { + private final WindowManagerInternal.AccessibilityControllerInternal mA11yController; + private final AccessibilityManagerService mService; + + AccessibilityTraceManager( + @NonNull WindowManagerInternal.AccessibilityControllerInternal a11yController, + @NonNull AccessibilityManagerService service) { + mA11yController = a11yController; + mService = service; + } + + @Override + public boolean isA11yTracingEnabled() { + return mA11yController.isAccessibilityTracingEnabled(); + } + + @Override + public void startTrace() { + if (!mA11yController.isAccessibilityTracingEnabled()) { + mA11yController.startTrace(); + mService.scheduleUpdateClientsIfNeeded(mService.getCurrentUserState()); + } + } + + @Override + public void stopTrace() { + if (mA11yController.isAccessibilityTracingEnabled()) { + mA11yController.stopTrace(); + mService.scheduleUpdateClientsIfNeeded(mService.getCurrentUserState()); + } + } + + @Override + public void logTrace(String where) { + logTrace(where, ""); + } + + @Override + public void logTrace(String where, String callingParams) { + mA11yController.logTrace(where, callingParams, "".getBytes(), + Binder.getCallingUid(), Thread.currentThread().getStackTrace()); + } + + @Override + public void logTrace(long timestamp, String where, String callingParams, int processId, + long threadId, int callingUid, StackTraceElement[] callStack) { + if (mA11yController.isAccessibilityTracingEnabled()) { + mA11yController.logTrace(where, callingParams, "".getBytes(), callingUid, callStack, + timestamp, processId, threadId); + } + } + + int onShellCommand(String cmd) { + switch (cmd) { + case "start-trace": { + startTrace(); + return 0; + } + case "stop-trace": { + stopTrace(); + return 0; + } + } + return -1; + } + + void onHelp(PrintWriter pw) { + pw.println(" start-trace"); + pw.println(" Start the debug tracing."); + pw.println(" stop-trace"); + pw.println(" Stop the debug tracing."); + } +} diff --git a/services/tests/servicestests/src/com/android/server/accessibility/AccessibilityManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/accessibility/AccessibilityManagerServiceTest.java index bcc756a0f8e8..2a5bb18ae428 100644 --- a/services/tests/servicestests/src/com/android/server/accessibility/AccessibilityManagerServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/accessibility/AccessibilityManagerServiceTest.java @@ -157,7 +157,7 @@ public class AccessibilityManagerServiceTest extends AndroidTestCase { new Object(), mMockSecurityPolicy, mMockSystemSupport, - mA11yms, + mA11yms.getTraceManager(), mMockWindowManagerService, mMockSystemActionPerformer, mMockA11yWindowManager, |