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

Commit d4a8164f authored by Fabian Kozynski's avatar Fabian Kozynski Committed by Automerger Merge Worker
Browse files

Merge "Fix support for USER_ALL in FakeSettings" into sc-v2-dev am: 510e959a am: 1c4e0619

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15420576

Change-Id: Ic36873f60cc3f7bf1037ba001b779fcbd388e2cc
parents ae001bed 1c4e0619
Loading
Loading
Loading
Loading
+18 −3
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ public class FakeSettings implements SecureSettings, GlobalSettings, SystemSetti
    private final Map<SettingsKey, String> mValues = new HashMap<>();
    private final Map<SettingsKey, List<ContentObserver>> mContentObservers =
            new HashMap<>();
    private final Map<String, List<ContentObserver>> mContentObserversAllUsers = new HashMap<>();

    public static final Uri CONTENT_URI = Uri.parse("content://settings/fake");

@@ -55,9 +56,15 @@ public class FakeSettings implements SecureSettings, GlobalSettings, SystemSetti
    @Override
    public void registerContentObserverForUser(Uri uri, boolean notifyDescendents,
            ContentObserver settingsObserver, int userHandle) {
        List<ContentObserver> observers;
        if (userHandle == UserHandle.USER_ALL) {
            mContentObserversAllUsers.putIfAbsent(uri.toString(), new ArrayList<>());
            observers = mContentObserversAllUsers.get(uri.toString());
        } else {
            SettingsKey key = new SettingsKey(userHandle, uri.toString());
            mContentObservers.putIfAbsent(key, new ArrayList<>());
        List<ContentObserver> observers = mContentObservers.get(key);
            observers = mContentObservers.get(key);
        }
        observers.add(settingsObserver);
    }

@@ -67,6 +74,10 @@ public class FakeSettings implements SecureSettings, GlobalSettings, SystemSetti
            List<ContentObserver> observers = mContentObservers.get(key);
            observers.remove(settingsObserver);
        }
        for (String key : mContentObserversAllUsers.keySet()) {
            List<ContentObserver> observers = mContentObserversAllUsers.get(key);
            observers.remove(settingsObserver);
        }
    }

    @Override
@@ -114,6 +125,10 @@ public class FakeSettings implements SecureSettings, GlobalSettings, SystemSetti
        for (ContentObserver observer : mContentObservers.getOrDefault(key, new ArrayList<>())) {
            observer.dispatchChange(false, List.of(uri), userHandle);
        }
        for (ContentObserver observer :
                mContentObserversAllUsers.getOrDefault(uri.toString(), new ArrayList<>())) {
            observer.dispatchChange(false, List.of(uri), userHandle);
        }
        return true;
    }

+23 −0
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;

import android.database.ContentObserver;
import android.os.UserHandle;
import android.provider.Settings;
import android.testing.AndroidTestingRunner;

@@ -88,6 +89,16 @@ public class FakeSettingsTest extends SysuiTestCase {
        verify(mContentObserver).dispatchChange(anyBoolean(), any(Collection.class), anyInt());
    }

    @Test
    public void testRegisterContentObserverAllUsers() {
        mFakeSettings.registerContentObserverForUser(
                mFakeSettings.getUriFor("cat"), false, mContentObserver, UserHandle.USER_ALL);

        mFakeSettings.putString("cat", "hat");

        verify(mContentObserver).dispatchChange(anyBoolean(), any(Collection.class), anyInt());
    }

    @Test
    public void testUnregisterContentObserver() {
        mFakeSettings.registerContentObserver("cat", mContentObserver);
@@ -98,4 +109,16 @@ public class FakeSettingsTest extends SysuiTestCase {
        verify(mContentObserver, never()).dispatchChange(
                anyBoolean(), any(Collection.class), anyInt());
    }

    @Test
    public void testUnregisterContentObserverAllUsers() {
        mFakeSettings.registerContentObserverForUser(
                mFakeSettings.getUriFor("cat"), false, mContentObserver, UserHandle.USER_ALL);
        mFakeSettings.unregisterContentObserver(mContentObserver);

        mFakeSettings.putString("cat", "hat");

        verify(mContentObserver, never()).dispatchChange(
                anyBoolean(), any(Collection.class), anyInt());
    }
}