Restructure tracing code to prepare for the adding of filtering and
searching features. Bug: 157601519 Test: adb shell cmd accessibility start-trace adb shell cmd accessibility stop-trace Change-Id: I4da67416139d018b8024f693b7dc88666867cff1
This commit is contained in:
parent
e7cfb0bb28
commit
cc9c2a00a3
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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.");
|
||||
}
|
||||
}
|
@ -157,7 +157,7 @@ public class AccessibilityManagerServiceTest extends AndroidTestCase {
|
||||
new Object(),
|
||||
mMockSecurityPolicy,
|
||||
mMockSystemSupport,
|
||||
mA11yms,
|
||||
mA11yms.getTraceManager(),
|
||||
mMockWindowManagerService,
|
||||
mMockSystemActionPerformer,
|
||||
mMockA11yWindowManager,
|
||||
|
Loading…
x
Reference in New Issue
Block a user