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

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

Merge "Fix ConcurrentModificationException"

parents 9d28be43 5c5f6ad2
Loading
Loading
Loading
Loading
+21 −6
Original line number Original line Diff line number Diff line
@@ -26,11 +26,14 @@ import android.util.ArraySet;
import android.util.Log;
import android.util.Log;
import android.view.Display;
import android.view.Display;


import com.android.internal.annotations.GuardedBy;

import java.util.Set;
import java.util.Set;


public class SysuiTestableContext extends TestableContext {
public class SysuiTestableContext extends TestableContext {


    private Set<BroadcastReceiver> mRegisteredReceivers = new ArraySet<>();
    @GuardedBy("mRegisteredReceivers")
    private final Set<BroadcastReceiver> mRegisteredReceivers = new ArraySet<>();


    public SysuiTestableContext(Context base) {
    public SysuiTestableContext(Context base) {
        super(base);
        super(base);
@@ -54,7 +57,11 @@ public class SysuiTestableContext extends TestableContext {
    }
    }


    public void cleanUpReceivers(String testName) {
    public void cleanUpReceivers(String testName) {
        Set<BroadcastReceiver> copy = new ArraySet<>(mRegisteredReceivers);
        Set<BroadcastReceiver> copy;
        synchronized (mRegisteredReceivers) {
            copy = new ArraySet<>(mRegisteredReceivers);
            mRegisteredReceivers.clear();
        }
        for (BroadcastReceiver r : copy) {
        for (BroadcastReceiver r : copy) {
            try {
            try {
                unregisterReceiver(r);
                unregisterReceiver(r);
@@ -68,8 +75,10 @@ public class SysuiTestableContext extends TestableContext {
    @Override
    @Override
    public Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter) {
    public Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter) {
        if (receiver != null) {
        if (receiver != null) {
            synchronized (mRegisteredReceivers) {
                mRegisteredReceivers.add(receiver);
                mRegisteredReceivers.add(receiver);
            }
            }
        }
        return super.registerReceiver(receiver, filter);
        return super.registerReceiver(receiver, filter);
    }
    }


@@ -77,8 +86,10 @@ public class SysuiTestableContext extends TestableContext {
    public Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter,
    public Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter,
            String broadcastPermission, Handler scheduler) {
            String broadcastPermission, Handler scheduler) {
        if (receiver != null) {
        if (receiver != null) {
            synchronized (mRegisteredReceivers) {
                mRegisteredReceivers.add(receiver);
                mRegisteredReceivers.add(receiver);
            }
            }
        }
        return super.registerReceiver(receiver, filter, broadcastPermission, scheduler);
        return super.registerReceiver(receiver, filter, broadcastPermission, scheduler);
    }
    }


@@ -86,16 +97,20 @@ public class SysuiTestableContext extends TestableContext {
    public Intent registerReceiverAsUser(BroadcastReceiver receiver, UserHandle user,
    public Intent registerReceiverAsUser(BroadcastReceiver receiver, UserHandle user,
            IntentFilter filter, String broadcastPermission, Handler scheduler) {
            IntentFilter filter, String broadcastPermission, Handler scheduler) {
        if (receiver != null) {
        if (receiver != null) {
            synchronized (mRegisteredReceivers) {
                mRegisteredReceivers.add(receiver);
                mRegisteredReceivers.add(receiver);
            }
            }
        }
        return super.registerReceiverAsUser(receiver, user, filter, broadcastPermission, scheduler);
        return super.registerReceiverAsUser(receiver, user, filter, broadcastPermission, scheduler);
    }
    }


    @Override
    @Override
    public void unregisterReceiver(BroadcastReceiver receiver) {
    public void unregisterReceiver(BroadcastReceiver receiver) {
        if (receiver != null) {
        if (receiver != null) {
            synchronized (mRegisteredReceivers) {
                mRegisteredReceivers.remove(receiver);
                mRegisteredReceivers.remove(receiver);
            }
            }
        }
        super.unregisterReceiver(receiver);
        super.unregisterReceiver(receiver);
    }
    }
}
}