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

Commit 904e79df 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...

Merge "Fix false positive of activity leak in NexusLauncherTests" into rvc-dev am: b04ab6ce am: 629a579f am: 2412980d am: bc9b9430

Change-Id: I47e0cc31473a85c017889a17608fc4c13d8a77ce
parents e757c4a5 bc9b9430
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) {