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

Commit c9c0e6cb authored by Caitlin Shkuratov's avatar Caitlin Shkuratov
Browse files

[SB][Location] Synchronize on location callbacks when adding/removing.

Fixes: 286841705
Test: verify location tile still gets location updates
Test: verify location icon in status bar still appears when location is
being used
Test: atest LocationControllerImplTest

Change-Id: Ie62d017e594f319ff9127d67b492ad23b2e02fe2
parent 71d19fb9
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@ import android.os.UserManager;
import android.provider.DeviceConfig;
import android.provider.Settings;

import androidx.annotation.GuardedBy;
import androidx.annotation.NonNull;
import androidx.annotation.VisibleForTesting;

@@ -361,6 +362,7 @@ public class LocationControllerImpl extends BroadcastReceiver implements Locatio
        private static final int MSG_ADD_CALLBACK = 3;
        private static final int MSG_REMOVE_CALLBACK = 4;

        @GuardedBy("mSettingsChangeCallbacks")
        private final ArrayList<LocationChangeCallback> mSettingsChangeCallbacks =
                new ArrayList<>();

@@ -378,10 +380,14 @@ public class LocationControllerImpl extends BroadcastReceiver implements Locatio
                    locationActiveChanged();
                    break;
                case MSG_ADD_CALLBACK:
                    synchronized (mSettingsChangeCallbacks) {
                        mSettingsChangeCallbacks.add((LocationChangeCallback) msg.obj);
                    }
                    break;
                case MSG_REMOVE_CALLBACK:
                    synchronized (mSettingsChangeCallbacks) {
                        mSettingsChangeCallbacks.remove((LocationChangeCallback) msg.obj);
                    }
                    break;

            }