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

Commit 59507096 authored by Wale Ogunwale's avatar Wale Ogunwale
Browse files

Moved Activity management out of ActivityManager to WindowManager (37/n)

What could go wrong ;)

Note that ATMS and all other activity management files are still under
the AMS lock. We will be changing them soon to use the WMS lock, but
till then it is important to take care not to use the WMS lock for
activities stuff and AMS lock for window stuff.

Test: Existing tests pass
Bug: 80414790
Change-Id: I69f5a6e40ad892557a425e1f34be987507102136
parent 8be8936a
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -95,6 +95,7 @@ import android.util.TimeUtils;
import android.util.proto.ProtoOutputStream;
import android.webkit.WebViewZygote;
import com.android.server.uri.NeededUriGrants;
import com.android.server.wm.ActivityServiceConnectionsHolder;

public final class ActiveServices {
    private static final String TAG = TAG_WITH_CLASS_NAME ? "ActiveServices" : TAG_AM;
+46 −34
Original line number Diff line number Diff line
@@ -127,23 +127,23 @@ import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_SERVICE;
import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_UID_OBSERVERS;
import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM;
import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NAME;
import static com.android.server.am.ActivityTaskManagerDebugConfig.DEBUG_CLEANUP;
import static com.android.server.am.ActivityTaskManagerDebugConfig.DEBUG_CONFIGURATION;
import static com.android.server.am.ActivityTaskManagerDebugConfig.DEBUG_SWITCH;
import static com.android.server.am.ActivityTaskManagerDebugConfig.POSTFIX_CONFIGURATION;
import static com.android.server.am.ActivityTaskManagerDebugConfig.POSTFIX_LOCKTASK;
import static com.android.server.am.ActivityTaskManagerDebugConfig.POSTFIX_SWITCH;
import static com.android.server.am.ActivityTaskManagerService.DUMP_ACTIVITIES_CMD;
import static com.android.server.am.ActivityTaskManagerService.DUMP_ACTIVITIES_SHORT_CMD;
import static com.android.server.am.ActivityTaskManagerService.DUMP_CONTAINERS_CMD;
import static com.android.server.am.ActivityTaskManagerService.DUMP_LASTANR_CMD;
import static com.android.server.am.ActivityTaskManagerService.DUMP_LASTANR_TRACES_CMD;
import static com.android.server.am.ActivityTaskManagerService.DUMP_RECENTS_CMD;
import static com.android.server.am.ActivityTaskManagerService.DUMP_RECENTS_SHORT_CMD;
import static com.android.server.am.ActivityTaskManagerService.DUMP_STARTER_CMD;
import static com.android.server.am.ActivityTaskManagerService.KEY_DISPATCHING_TIMEOUT_MS;
import static com.android.server.am.ActivityTaskManagerService.RELAUNCH_REASON_NONE;
import static com.android.server.am.ActivityTaskManagerService.relaunchReasonToString;
import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_CLEANUP;
import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_CONFIGURATION;
import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_SWITCH;
import static com.android.server.wm.ActivityTaskManagerDebugConfig.POSTFIX_CONFIGURATION;
import static com.android.server.wm.ActivityTaskManagerDebugConfig.POSTFIX_LOCKTASK;
import static com.android.server.wm.ActivityTaskManagerDebugConfig.POSTFIX_SWITCH;
import static com.android.server.wm.ActivityTaskManagerService.DUMP_ACTIVITIES_CMD;
import static com.android.server.wm.ActivityTaskManagerService.DUMP_ACTIVITIES_SHORT_CMD;
import static com.android.server.wm.ActivityTaskManagerService.DUMP_CONTAINERS_CMD;
import static com.android.server.wm.ActivityTaskManagerService.DUMP_LASTANR_CMD;
import static com.android.server.wm.ActivityTaskManagerService.DUMP_LASTANR_TRACES_CMD;
import static com.android.server.wm.ActivityTaskManagerService.DUMP_RECENTS_CMD;
import static com.android.server.wm.ActivityTaskManagerService.DUMP_RECENTS_SHORT_CMD;
import static com.android.server.wm.ActivityTaskManagerService.DUMP_STARTER_CMD;
import static com.android.server.wm.ActivityTaskManagerService.KEY_DISPATCHING_TIMEOUT_MS;
import static com.android.server.wm.ActivityTaskManagerService.RELAUNCH_REASON_NONE;
import static com.android.server.wm.ActivityTaskManagerService.relaunchReasonToString;
import static com.android.server.am.MemoryStatUtil.MEMORY_STAT_INTERESTING_NATIVE_PROCESSES;
import static com.android.server.am.MemoryStatUtil.hasMemcg;
import static com.android.server.am.MemoryStatUtil.readCmdlineFromProcfs;
@@ -352,8 +352,11 @@ import com.android.server.uri.GrantUri;
import com.android.server.uri.UriGrantsManagerInternal;
import com.android.server.utils.PriorityDump;
import com.android.server.vr.VrManagerInternal;
import com.android.server.wm.ActivityServiceConnectionsHolder;
import com.android.server.wm.ActivityTaskManagerInternal;
import com.android.server.wm.ActivityTaskManagerService;
import com.android.server.wm.WindowManagerService;
import com.android.server.wm.WindowProcessController;
import dalvik.system.VMRuntime;
@@ -567,7 +570,8 @@ public class ActivityManagerService extends IActivityManager.Stub
    String mDeviceOwnerName;
    final UserController mUserController;
    final PendingIntentController mPendingIntentController;
    @VisibleForTesting
    public final PendingIntentController mPendingIntentController;
    final AppErrors mAppErrors;
@@ -1276,10 +1280,14 @@ public class ActivityManagerService extends IActivityManager.Stub
     */
    int mBootPhase;
    WindowManagerService mWindowManager;
    ActivityTaskManagerService mActivityTaskManager;
    ActivityTaskManagerInternal mAtmInternal;
    UriGrantsManagerInternal mUgmInternal;
    @VisibleForTesting
    public WindowManagerService mWindowManager;
    @VisibleForTesting
    public ActivityTaskManagerService mActivityTaskManager;
    @VisibleForTesting
    public ActivityTaskManagerInternal mAtmInternal;
    @VisibleForTesting
    public UriGrantsManagerInternal mUgmInternal;
    final ActivityThread mSystemThread;
    private final class AppDeathRecipient implements IBinder.DeathRecipient {
@@ -1349,7 +1357,8 @@ public class ActivityManagerService extends IActivityManager.Stub
     */
    private boolean mUserIsMonkey;
    final ServiceThread mHandlerThread;
    @VisibleForTesting
    public final ServiceThread mHandlerThread;
    final MainHandler mHandler;
    final Handler mUiHandler;
    final ServiceThread mProcStartHandlerThread;
@@ -2111,7 +2120,7 @@ public class ActivityManagerService extends IActivityManager.Stub
     * given to initialize the dependency members.
     */
    @VisibleForTesting
    ActivityManagerService(Injector injector, ServiceThread handlerThread) {
    public ActivityManagerService(Injector injector, ServiceThread handlerThread) {
        final boolean hasHandlerThread = handlerThread != null;
        mInjector = injector;
        mContext = mInjector.getContext();
@@ -5556,7 +5565,8 @@ public class ActivityManagerService extends IActivityManager.Stub
        return pi;
    }
    void grantEphemeralAccessLocked(int userId, Intent intent,
    @VisibleForTesting
    public void grantEphemeralAccessLocked(int userId, Intent intent,
            int targetAppId, int ephemeralAppId) {
        getPackageManagerInternalLocked().
                grantEphemeralAccess(userId, intent, targetAppId, ephemeralAppId);
@@ -6622,11 +6632,13 @@ public class ActivityManagerService extends IActivityManager.Stub
     * PackageManager could be unavailable at construction time and therefore needs to be accessed
     * on demand.
     */
    IPackageManager getPackageManager() {
    @VisibleForTesting
    public IPackageManager getPackageManager() {
        return AppGlobals.getPackageManager();
    }
    PackageManagerInternal getPackageManagerInternalLocked() {
    @VisibleForTesting
    public PackageManagerInternal getPackageManagerInternalLocked() {
        if (mPackageManagerInt == null) {
            mPackageManagerInt = LocalServices.getService(PackageManagerInternal.class);
        }
@@ -7698,7 +7710,7 @@ public class ActivityManagerService extends IActivityManager.Stub
     *
     * @return {@code true} if this succeeded.
     */
    static boolean scheduleAsRegularPriority(int tid, boolean suppressLogs) {
    public static boolean scheduleAsRegularPriority(int tid, boolean suppressLogs) {
        try {
            Process.setThreadScheduler(tid, Process.SCHED_OTHER, 0);
            return true;
@@ -7722,7 +7734,7 @@ public class ActivityManagerService extends IActivityManager.Stub
     *
     * @return {@code true} if this succeeded.
     */
    static boolean scheduleAsFifoPriority(int tid, boolean suppressLogs) {
    public static boolean scheduleAsFifoPriority(int tid, boolean suppressLogs) {
        try {
            Process.setThreadScheduler(tid, Process.SCHED_FIFO | Process.SCHED_RESET_ON_FORK, 1);
            return true;
@@ -10474,11 +10486,11 @@ public class ActivityManagerService extends IActivityManager.Stub
        ArrayList<Integer> objects;
        boolean all;
        ItemMatcher() {
        public ItemMatcher() {
            all = true;
        }
        void build(String name) {
        public void build(String name) {
            ComponentName componentName = ComponentName.unflattenFromString(name);
            if (componentName != null) {
                if (components == null) {
@@ -10507,7 +10519,7 @@ public class ActivityManagerService extends IActivityManager.Stub
            }
        }
        int build(String[] args, int opti) {
        public int build(String[] args, int opti) {
            for (; opti<args.length; opti++) {
                String name = args[opti];
                if ("--".equals(name)) {
@@ -10518,7 +10530,7 @@ public class ActivityManagerService extends IActivityManager.Stub
            return opti;
        }
        boolean match(Object object, ComponentName comp) {
        public boolean match(Object object, ComponentName comp) {
            if (all) {
                return true;
            }
@@ -18480,7 +18492,7 @@ public class ActivityManagerService extends IActivityManager.Stub
    }
    @VisibleForTesting
    final class LocalService extends ActivityManagerInternal {
    public final class LocalService extends ActivityManagerInternal {
        @Override
        public String checkContentProviderAccess(String authority, int userId) {
            return ActivityManagerService.this.checkContentProviderAccess(authority, userId);
+6 −7
Original line number Diff line number Diff line
@@ -17,12 +17,13 @@
package com.android.server.am;

import static android.app.ActivityTaskManager.INVALID_TASK_ID;
import static android.content.pm.ApplicationInfo.FLAG_SYSTEM;
import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM;
import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NAME;
import static com.android.server.am.ActivityManagerService.MY_PID;
import static com.android.server.am.ActivityManagerService.SYSTEM_DEBUGGABLE;
import static com.android.server.am.ActivityTaskManagerService.RELAUNCH_REASON_FREE_RESIZE;
import static com.android.server.am.ActivityTaskManagerService.RELAUNCH_REASON_NONE;
import static com.android.server.wm.ActivityTaskManagerService.RELAUNCH_REASON_FREE_RESIZE;
import static com.android.server.wm.ActivityTaskManagerService.RELAUNCH_REASON_NONE;

import android.app.ActivityManager;
import android.app.ActivityOptions;
@@ -37,7 +38,6 @@ import android.net.Uri;
import android.os.Binder;
import android.os.Message;
import android.os.Process;
import android.os.RemoteException;
import android.os.SystemClock;
import android.os.SystemProperties;
import android.os.UserHandle;
@@ -54,12 +54,11 @@ import com.android.internal.app.ProcessMap;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.nano.MetricsProto;
import com.android.server.RescueParty;
import com.android.server.Watchdog;
import com.android.server.wm.WindowProcessController;

import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.Collections;
import java.util.Set;

/**
 * Controls error conditions in applications.
@@ -619,7 +618,7 @@ class AppErrors {
        report.installerPackageName = r.errorReportReceiver.getPackageName();
        report.processName = r.processName;
        report.time = timeMillis;
        report.systemApp = (r.info.flags & ApplicationInfo.FLAG_SYSTEM) != 0;
        report.systemApp = (r.info.flags & FLAG_SYSTEM) != 0;

        if (r.isCrashing() || r.forceCrashReport) {
            report.type = ApplicationErrorReport.TYPE_CRASH;
@@ -732,7 +731,7 @@ class AppErrors {
        final WindowProcessController proc = app.getWindowProcessController();
        final WindowProcessController homeProc = mService.mAtmInternal.getHomeProcess();
        if (proc == homeProc && proc.hasActivities()
                && (homeProc.mInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
                && (((ProcessRecord) homeProc.mOwner).info.flags & FLAG_SYSTEM) == 0) {
            proc.clearPackagePreferredForHomeActivities();
        }

+1 −1
Original line number Diff line number Diff line
@@ -122,7 +122,7 @@ public class AppTimeTracker {
        }
    }

    void writeToProto(ProtoOutputStream proto, long fieldId, boolean details) {
    public void writeToProto(ProtoOutputStream proto, long fieldId, boolean details) {
        final long token = proto.start(fieldId);
        proto.write(AppTimeTrackerProto.RECEIVER, mReceiver.toString());
        proto.write(AppTimeTrackerProto.TOTAL_DURATION_MS, mTotalTime);
+1 −1
Original line number Diff line number Diff line
@@ -26,7 +26,7 @@ import android.view.KeyEvent;
import android.view.WindowManager;
import android.widget.Button;

class BaseErrorDialog extends AlertDialog {
public class BaseErrorDialog extends AlertDialog {
    private static final int ENABLE_BUTTONS = 0;
    private static final int DISABLE_BUTTONS = 1;

Loading