Loading services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java +9 −1 Original line number Original line Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); } } Loading services/autofill/java/com/android/server/autofill/Session.java +7 −4 Original line number Original line Diff line number Diff line Loading @@ -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() { Loading @@ -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() { Loading Loading
services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java +9 −1 Original line number Original line Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); } } Loading
services/autofill/java/com/android/server/autofill/Session.java +7 −4 Original line number Original line Diff line number Diff line Loading @@ -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() { Loading @@ -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() { Loading