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

Commit 6ba00520 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Fix false positive of activity leak in NexusLauncherTests" into rvc-dev am: b04ab6ce

Change-Id: I892e60164aa41a8fcc7044ac571d45b9efc70730
parents 1e2509fd b04ab6ce
Loading
Loading
Loading
Loading
+13 −14
Original line number Diff line number Diff line
@@ -4974,10 +4974,8 @@ public final class ActivityThread extends ClientTransactionHandler {
    ActivityClientRecord performDestroyActivity(IBinder token, boolean finishing,
            int configChanges, boolean getNonConfigInstance, String reason) {
        ActivityClientRecord r = mActivities.get(token);
        Class<? extends Activity> activityClass = null;
        if (localLOGV) Slog.v(TAG, "Performing finish of " + r);
        if (r != null) {
            activityClass = r.activity.getClass();
            r.activity.mConfigChangeFlags |= configChanges;
            if (finishing) {
                r.activity.mFinished = true;
@@ -5030,7 +5028,6 @@ public final class ActivityThread extends ClientTransactionHandler {
        synchronized (mResourcesManager) {
            mActivities.remove(token);
        }
        StrictMode.decrementExpectedActivityCount(activityClass);
        return r;
    }

@@ -5050,6 +5047,7 @@ public final class ActivityThread extends ClientTransactionHandler {
        ActivityClientRecord r = performDestroyActivity(token, finishing,
                configChanges, getNonConfigInstance, reason);
        if (r != null) {
            Class<? extends Activity> activityClass = r.activity.getClass();
            cleanUpPendingRemoveWindows(r, finishing);
            WindowManager wm = r.activity.getWindowManager();
            View v = r.activity.mDecor;
@@ -5074,14 +5072,14 @@ public final class ActivityThread extends ClientTransactionHandler {
                }
                if (wtoken != null && r.mPendingRemoveWindow == null) {
                    WindowManagerGlobal.getInstance().closeAll(wtoken,
                            r.activity.getClass().getName(), "Activity");
                            activityClass.getName(), "Activity");
                } else if (r.mPendingRemoveWindow != null) {
                    // We're preserving only one window, others should be closed so app views
                    // will be detached before the final tear down. It should be done now because
                    // some components (e.g. WebView) rely on detach callbacks to perform receiver
                    // unregister and other cleanup.
                    WindowManagerGlobal.getInstance().closeAllExceptView(token, v,
                            r.activity.getClass().getName(), "Activity");
                            activityClass.getName(), "Activity");
                }
                r.activity.mDecor = null;
            }
@@ -5093,18 +5091,23 @@ public final class ActivityThread extends ClientTransactionHandler {
                // about leaking windows, because that is a bug, so if they are
                // using this recreate facility then they get to live with leaks.
                WindowManagerGlobal.getInstance().closeAll(token,
                        r.activity.getClass().getName(), "Activity");
                        activityClass.getName(), "Activity");
            }

            // Mocked out contexts won't be participating in the normal
            // process lifecycle, but if we're running with a proper
            // ApplicationContext we need to have it tear down things
            // cleanly.
            Context c = r.activity.getBaseContext();
            if (c instanceof ContextImpl) {
                ((ContextImpl) c).scheduleFinalCleanup(
                        r.activity.getClass().getName(), "Activity");
            final ContextImpl impl = ContextImpl.getImpl(r.activity);
            if (impl != null) {
                impl.scheduleFinalCleanup(activityClass.getName(), "Activity");
            }

            r.activity = null;
            r.window = null;
            r.hideForNow = false;
            r.nextIdle = null;
            StrictMode.decrementExpectedActivityCount(activityClass);
        }
        if (finishing) {
            try {
@@ -5334,10 +5337,6 @@ public final class ActivityThread extends ClientTransactionHandler {

        handleDestroyActivity(r.token, false, configChanges, true, reason);

        r.activity = null;
        r.window = null;
        r.hideForNow = false;
        r.nextIdle = null;
        // Merge any pending results and pending intents; don't just replace them
        if (pendingResults != null) {
            if (r.pendingResults == null) {