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

Commit 2412980d 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

Change-Id: Ida0e9b71562570678e109b63f757f0a600b44425
parents 9842c0ec 629a579f
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) {