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

Commit 09f7dd57 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Don't call remoteFillService.destroy() until session is removed." into oc-dev

parents 21999d28 9b36dfb2
Loading
Loading
Loading
Loading
+9 −1
Original line number Original line Diff line number Diff line
@@ -51,6 +51,7 @@ import android.service.autofill.FillEventHistory.Event;
import android.service.autofill.FillResponse;
import android.service.autofill.FillResponse;
import android.service.autofill.IAutoFillService;
import android.service.autofill.IAutoFillService;
import android.text.TextUtils;
import android.text.TextUtils;
import android.util.ArraySet;
import android.util.LocalLog;
import android.util.LocalLog;
import android.util.Slog;
import android.util.Slog;
import android.util.SparseArray;
import android.util.SparseArray;
@@ -465,10 +466,17 @@ final class AutofillManagerServiceImpl {
        if (sVerbose) Slog.v(TAG, "destroyLocked()");
        if (sVerbose) Slog.v(TAG, "destroyLocked()");


        final int numSessions = mSessions.size();
        final int numSessions = mSessions.size();
        final ArraySet<RemoteFillService> remoteFillServices = new ArraySet<>(numSessions);
        for (int i = 0; i < numSessions; i++) {
        for (int i = 0; i < numSessions; i++) {
            mSessions.valueAt(i).destroyLocked();
            final RemoteFillService remoteFillService = mSessions.valueAt(i).destroyLocked();
            if (remoteFillService != null) {
                remoteFillServices.add(remoteFillService);
            }
        }
        }
        mSessions.clear();
        mSessions.clear();
        for (int i = 0; i < remoteFillServices.size(); i++) {
            remoteFillServices.valueAt(i).destroy();
        }


        sendStateToClients(true);
        sendStateToClients(true);
    }
    }
+7 −4
Original line number Original line Diff line number Diff line
@@ -1496,15 +1496,15 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
        }
        }
    }
    }


    void destroyLocked() {
    RemoteFillService destroyLocked() {
        if (mDestroyed) {
        if (mDestroyed) {
            return;
            return null;
        }
        }
        mRemoteFillService.destroy();
        hideAllUiIfOwnedByMe();
        hideAllUiIfOwnedByMe();
        mUi.clearCallback(this);
        mUi.clearCallback(this);
        mDestroyed = true;
        mDestroyed = true;
        mMetricsLogger.action(MetricsEvent.AUTOFILL_SESSION_FINISHED, mPackageName);
        mMetricsLogger.action(MetricsEvent.AUTOFILL_SESSION_FINISHED, mPackageName);
        return mRemoteFillService;
    }
    }


    private void hideAllUiIfOwnedByMe() {
    private void hideAllUiIfOwnedByMe() {
@@ -1528,8 +1528,11 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
                    + id + " destroyed");
                    + id + " destroyed");
            return;
            return;
        }
        }
        destroyLocked();
        final RemoteFillService remoteFillService = destroyLocked();
        mService.removeSessionLocked(id);
        mService.removeSessionLocked(id);
        if (remoteFillService != null) {
            remoteFillService.destroy();
        }
    }
    }


    private int getLastResponseIndex() {
    private int getLastResponseIndex() {