summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Hongming Jin <hongmingjin@google.com> 2021-04-16 17:57:27 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2021-04-16 17:57:27 +0000
commit0f4986c28f5913a936f53f7852215bdf603b8e51 (patch)
tree37f1ec42010db0349105e66e4db2a679c6adf961
parente2b7cb3df2f93e568b84158cfb0407d1d1996296 (diff)
parentcc9c2a00a37356ca490532a3d885e69e7ae63fa1 (diff)
Merge "Restructure tracing code to prepare for the adding of filtering and searching features." into sc-dev
-rw-r--r--services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java286
-rw-r--r--services/accessibility/java/com/android/server/accessibility/AccessibilityShellCommand.java18
-rw-r--r--services/accessibility/java/com/android/server/accessibility/AccessibilityTraceManager.java100
-rw-r--r--services/tests/servicestests/src/com/android/server/accessibility/AccessibilityManagerServiceTest.java2
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,