Update AccessibilityManagerService to use SystemService
Bug: 70221242 Test: atest CtsAccessibilityServiceTestCases Change-Id: Icdf0772d0be93168a954fdd746cada4d5d507eb4
This commit is contained in:
@@ -109,6 +109,7 @@ import com.android.internal.util.DumpUtils;
|
||||
import com.android.internal.util.IntPair;
|
||||
import com.android.internal.util.function.pooled.PooledLambda;
|
||||
import com.android.server.LocalServices;
|
||||
import com.android.server.SystemService;
|
||||
import com.android.server.wm.ActivityTaskManagerInternal;
|
||||
import com.android.server.wm.WindowManagerInternal;
|
||||
|
||||
@@ -260,6 +261,25 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
|
||||
return getUserStateLocked(mCurrentUserId);
|
||||
}
|
||||
|
||||
public static final class Lifecycle extends SystemService {
|
||||
private final AccessibilityManagerService mService;
|
||||
|
||||
public Lifecycle(Context context) {
|
||||
super(context);
|
||||
mService = new AccessibilityManagerService(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
publishBinderService(Context.ACCESSIBILITY_SERVICE, mService);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBootPhase(int phase) {
|
||||
mService.onBootPhase(phase);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new instance.
|
||||
*
|
||||
@@ -296,6 +316,14 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
|
||||
return mFingerprintGestureDispatcher;
|
||||
}
|
||||
|
||||
private void onBootPhase(int phase) {
|
||||
if (phase == SystemService.PHASE_SYSTEM_SERVICES_READY) {
|
||||
if (mPackageManager.hasSystemFeature(PackageManager.FEATURE_APP_WIDGETS)) {
|
||||
mAppWidgetService = LocalServices.getService(AppWidgetManagerInternal.class);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private UserState getUserState(int userId) {
|
||||
synchronized (mLock) {
|
||||
return getUserStateLocked(userId);
|
||||
@@ -2684,16 +2712,6 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
|
||||
}
|
||||
}
|
||||
|
||||
private AppWidgetManagerInternal getAppWidgetManager() {
|
||||
synchronized (mLock) {
|
||||
if (mAppWidgetService == null
|
||||
&& mPackageManager.hasSystemFeature(PackageManager.FEATURE_APP_WIDGETS)) {
|
||||
mAppWidgetService = LocalServices.getService(AppWidgetManagerInternal.class);
|
||||
}
|
||||
return mAppWidgetService;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onShellCommand(FileDescriptor in, FileDescriptor out,
|
||||
FileDescriptor err, String[] args, ShellCallback callback,
|
||||
@@ -3022,8 +3040,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
|
||||
return packageName.toString();
|
||||
}
|
||||
// Appwidget hosts get to pass packages for widgets they host
|
||||
final AppWidgetManagerInternal appWidgetManager = getAppWidgetManager();
|
||||
if (appWidgetManager != null && ArrayUtils.contains(appWidgetManager
|
||||
if (mAppWidgetService != null && ArrayUtils.contains(mAppWidgetService
|
||||
.getHostedWidgetPackages(resolvedUid), packageNameStr)) {
|
||||
return packageName.toString();
|
||||
}
|
||||
@@ -3051,9 +3068,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
|
||||
// IMPORTANT: The target package is already vetted to be in the target UID
|
||||
String[] uidPackages = new String[]{targetPackage};
|
||||
// Appwidget hosts get to pass packages for widgets they host
|
||||
final AppWidgetManagerInternal appWidgetManager = getAppWidgetManager();
|
||||
if (appWidgetManager != null) {
|
||||
final ArraySet<String> widgetPackages = appWidgetManager
|
||||
if (mAppWidgetService != null) {
|
||||
final ArraySet<String> widgetPackages = mAppWidgetService
|
||||
.getHostedWidgetPackages(targetUid);
|
||||
if (widgetPackages != null && !widgetPackages.isEmpty()) {
|
||||
final String[] validPackages = new String[uidPackages.length
|
||||
|
||||
@@ -235,6 +235,8 @@ public final class SystemServer {
|
||||
"com.android.server.timedetector.TimeDetectorService$Lifecycle";
|
||||
private static final String TIME_ZONE_DETECTOR_SERVICE_CLASS =
|
||||
"com.android.server.timezonedetector.TimeZoneDetectorService$Lifecycle";
|
||||
private static final String ACCESSIBILITY_MANAGER_SERVICE_CLASS =
|
||||
"com.android.server.accessibility.AccessibilityManagerService$Lifecycle";
|
||||
|
||||
private static final String PERSISTENT_DATA_BLOCK_PROP = "ro.frp.pst";
|
||||
|
||||
@@ -957,8 +959,7 @@ public final class SystemServer {
|
||||
|
||||
traceBeginAndSlog("StartAccessibilityManagerService");
|
||||
try {
|
||||
ServiceManager.addService(Context.ACCESSIBILITY_SERVICE,
|
||||
new AccessibilityManagerService(context));
|
||||
mSystemServiceManager.startService(ACCESSIBILITY_MANAGER_SERVICE_CLASS);
|
||||
} catch (Throwable e) {
|
||||
reportWtf("starting Accessibility Manager", e);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user