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

Commit d26f4bd6 authored by Joanne Chung's avatar Joanne Chung Committed by Android (Google) Code Review
Browse files

Merge "Avoid IndexOutOfBoundsException when accessing RemoteCallbackList" into main

parents a633a44b 9cd80779
Loading
Loading
Loading
Loading
+16 −8
Original line number Diff line number Diff line
@@ -69,16 +69,24 @@ class PackageMonitorCallbackHelper {
    }

    public void onUserRemoved(int userId) {
        RemoteCallbackList<IRemoteCallback> callbacks;
        ArrayList<IRemoteCallback> targetUnRegisteredCallbacks = null;
        synchronized (mLock) {
            callbacks = mCallbacks;
        }
        int registerCount = callbacks.getRegisteredCallbackCount();
            int registerCount = mCallbacks.getRegisteredCallbackCount();
            for (int i = 0; i < registerCount; i++) {
            int registerUserId = (int) callbacks.getRegisteredCallbackCookie(i);
                int registerUserId = (int) mCallbacks.getRegisteredCallbackCookie(i);
                if (registerUserId == userId) {
                IRemoteCallback callback = callbacks.getRegisteredCallbackItem(i);
                unregisterPackageMonitorCallback(callback);
                    IRemoteCallback callback = mCallbacks.getRegisteredCallbackItem(i);
                    if (targetUnRegisteredCallbacks == null) {
                        targetUnRegisteredCallbacks = new ArrayList<>();
                    }
                    targetUnRegisteredCallbacks.add(callback);
                }
            }
        }
        if (targetUnRegisteredCallbacks != null && targetUnRegisteredCallbacks.size() > 0) {
            int count = targetUnRegisteredCallbacks.size();
            for (int i = 0; i < count; i++) {
                unregisterPackageMonitorCallback(targetUnRegisteredCallbacks.get(i));
            }
        }
    }