Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 25788e89 authored by Rhed Jao's avatar Rhed Jao Committed by Android (Google) Code Review
Browse files

Merge "Update AccessibilityManagerService to use SystemService"

parents 740be2ef 8a39cef7
Loading
Loading
Loading
Loading
+31 −15
Original line number Diff line number Diff line
@@ -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
+3 −2
Original line number Diff line number Diff line
@@ -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);
            }