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

Commit 4847ed9e authored by Philip Quinn's avatar Philip Quinn
Browse files

Protect against DeviceProvisionedListeners mutating mListeners.

Fixes: 38410650
Test: removing a DeviceProvisionedListener from within its callback does
      not throw a ConcurrentModificationException

Change-Id: Ie018c2f08697230cea0f66bb40c6dd47bf3392bb
parent beb3b7e3
Loading
Loading
Loading
Loading
+9 −3
Original line number Original line Diff line number Diff line
@@ -102,15 +102,21 @@ public class DeviceProvisionedControllerImpl extends CurrentUserTracker implemen
    }
    }


    private void notifyUserChanged() {
    private void notifyUserChanged() {
        mListeners.forEach(c -> c.onUserSwitched());
        for (int i = mListeners.size() - 1; i >= 0; --i) {
            mListeners.get(i).onUserSwitched();
        }
    }
    }


    private void notifySetupChanged() {
    private void notifySetupChanged() {
        mListeners.forEach(c -> c.onUserSetupChanged());
        for (int i = mListeners.size() - 1; i >= 0; --i) {
            mListeners.get(i).onUserSetupChanged();
        }
    }
    }


    private void notifyProvisionedChanged() {
    private void notifyProvisionedChanged() {
        mListeners.forEach(c -> c.onDeviceProvisionedChanged());
        for (int i = mListeners.size() - 1; i >= 0; --i) {
            mListeners.get(i).onDeviceProvisionedChanged();
        }
    }
    }


    protected final ContentObserver mSettingsObserver = new ContentObserver(Dependency.get(
    protected final ContentObserver mSettingsObserver = new ContentObserver(Dependency.get(