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

Commit 1bc8ac38 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix IndexOutOfBoundsException when accessing RemoteCallbackList" into main

parents da90eeb0 74a359c9
Loading
Loading
Loading
Loading
+5 −11
Original line number Diff line number Diff line
@@ -73,22 +73,16 @@ public class PackageMonitorCallbackHelper {
    }

    public void onUserRemoved(int userId) {
        ArrayList<IRemoteCallback> targetUnRegisteredCallbacks = null;
        final ArrayList<IRemoteCallback> targetUnRegisteredCallbacks = new ArrayList<>();
        synchronized (mLock) {
            int registerCount = mCallbacks.getRegisteredCallbackCount();
            for (int i = 0; i < registerCount; i++) {
                RegisterUser registerUser =
                        (RegisterUser) mCallbacks.getRegisteredCallbackCookie(i);
            mCallbacks.broadcast((callback, user) -> {
                RegisterUser registerUser = (RegisterUser) user;
                if (registerUser.getUserId() == userId) {
                    IRemoteCallback callback = mCallbacks.getRegisteredCallbackItem(i);
                    if (targetUnRegisteredCallbacks == null) {
                        targetUnRegisteredCallbacks = new ArrayList<>();
                    }
                    targetUnRegisteredCallbacks.add(callback);
                }
            });
        }
        }
        if (targetUnRegisteredCallbacks != null && targetUnRegisteredCallbacks.size() > 0) {
        if (!targetUnRegisteredCallbacks.isEmpty()) {
            int count = targetUnRegisteredCallbacks.size();
            for (int i = 0; i < count; i++) {
                unregisterPackageMonitorCallback(targetUnRegisteredCallbacks.get(i));