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

Commit 701954d3 authored by Matt Pape's avatar Matt Pape
Browse files

Fix the BaseSettingsProviderTest to correctly verify broadcasts that don't arrive immediately.

Update the location settings permission related tests that had subtle problems masked by the missing verification step.

Test: Local test run (see http://sponge/7afe8338-24ce-4b98-b400-84373f506885).

Change-Id: I9e3c492f5ee990f248951489adbeb477f2527b42
parent 900fa920
Loading
Loading
Loading
Loading
+50 −39
Original line number Diff line number Diff line
@@ -613,7 +613,7 @@ public class SettingsProviderTest extends BaseSettingsProviderTest {
            final String name, final String value, final int userId) throws Exception {
        ContentResolver contentResolver = getContext().getContentResolver();

        final Uri settingUri = getBaseUriForType(type);
        final Uri settingUri = getBaseUriForType(type).buildUpon().appendPath(name).build();

        final AtomicBoolean success = new AtomicBoolean();

@@ -640,6 +640,7 @@ public class SettingsProviderTest extends BaseSettingsProviderTest {

            final long startTimeMillis = SystemClock.uptimeMillis();
            synchronized (mLock) {
                while (true) {
                    if (success.get()) {
                        return;
                    }
@@ -656,6 +657,7 @@ public class SettingsProviderTest extends BaseSettingsProviderTest {
                        /* ignore */
                    }
                }
            }
        } finally {
            contentResolver.unregisterContentObserver(contentObserver);
        }
@@ -689,39 +691,50 @@ public class SettingsProviderTest extends BaseSettingsProviderTest {
    }

    @Test
    public void testUpdateLocationProvidersAllowedLocked_enableProviders() throws Exception {
        setSettingViaFrontEndApiAndAssertSuccessfulChange(
    public void testLocationModeChanges_viaFrontEndApi() throws Exception {
        setStringViaFrontEndApiSetting(
                SETTING_TYPE_SECURE,
                Settings.Secure.LOCATION_MODE,
                String.valueOf(Settings.Secure.LOCATION_MODE_OFF),
                UserHandle.USER_SYSTEM);

        // Enable one provider
        updateStringViaProviderApiSetting(
                SETTING_TYPE_SECURE, Settings.Secure.LOCATION_PROVIDERS_ALLOWED, "+gps");

        assertEquals(
                "Wrong location providers",
                "gps",
                queryStringViaProviderApi(
                        SETTING_TYPE_SECURE, Settings.Secure.LOCATION_PROVIDERS_ALLOWED));
                "",
                getStringViaFrontEndApiSetting(
                        SETTING_TYPE_SECURE,
                        Settings.Secure.LOCATION_PROVIDERS_ALLOWED,
                        UserHandle.USER_SYSTEM));

        // Enable a list of providers, including the one that is already enabled
        updateStringViaProviderApiSetting(
        setStringViaFrontEndApiSetting(
                SETTING_TYPE_SECURE,
                Settings.Secure.LOCATION_MODE,
                String.valueOf(Settings.Secure.LOCATION_MODE_BATTERY_SAVING),
                UserHandle.USER_SYSTEM);
        assertEquals(
                "Wrong location providers",
                "network",
                getStringViaFrontEndApiSetting(
                        SETTING_TYPE_SECURE,
                        Settings.Secure.LOCATION_PROVIDERS_ALLOWED,
                "+gps,+network,+network");
                        UserHandle.USER_SYSTEM));

        setStringViaFrontEndApiSetting(
                SETTING_TYPE_SECURE,
                Settings.Secure.LOCATION_MODE,
                String.valueOf(Settings.Secure.LOCATION_MODE_HIGH_ACCURACY),
                UserHandle.USER_SYSTEM);
        assertEquals(
                "Wrong location providers",
                "gps,network",
                queryStringViaProviderApi(
                        SETTING_TYPE_SECURE, Settings.Secure.LOCATION_PROVIDERS_ALLOWED));
                getStringViaFrontEndApiSetting(
                        SETTING_TYPE_SECURE,
                        Settings.Secure.LOCATION_PROVIDERS_ALLOWED,
                        UserHandle.USER_SYSTEM));
    }

    @Test
    public void testUpdateLocationProvidersAllowedLocked_disableProviders() throws Exception {
        setSettingViaFrontEndApiAndAssertSuccessfulChange(
    public void testLocationProvidersAllowed_disableProviders() throws Exception {
        setStringViaFrontEndApiSetting(
                SETTING_TYPE_SECURE,
                Settings.Secure.LOCATION_MODE,
                String.valueOf(Settings.Secure.LOCATION_MODE_HIGH_ACCURACY),
@@ -732,7 +745,6 @@ public class SettingsProviderTest extends BaseSettingsProviderTest {
                SETTING_TYPE_SECURE,
                Settings.Secure.LOCATION_PROVIDERS_ALLOWED,
                "-gps,-network");

        assertEquals(
                "Wrong location providers",
                "",
@@ -744,7 +756,6 @@ public class SettingsProviderTest extends BaseSettingsProviderTest {
                SETTING_TYPE_SECURE,
                Settings.Secure.LOCATION_PROVIDERS_ALLOWED,
                "-test");

        assertEquals(
                "Wrong location providers",
                "",
@@ -753,8 +764,8 @@ public class SettingsProviderTest extends BaseSettingsProviderTest {
    }

    @Test
    public void testUpdateLocationProvidersAllowedLocked_enableAndDisable() throws Exception {
        setSettingViaFrontEndApiAndAssertSuccessfulChange(
    public void testLocationProvidersAllowed_enableAndDisable() throws Exception {
        setStringViaFrontEndApiSetting(
                SETTING_TYPE_SECURE,
                Settings.Secure.LOCATION_MODE,
                String.valueOf(Settings.Secure.LOCATION_MODE_OFF),
@@ -775,8 +786,8 @@ public class SettingsProviderTest extends BaseSettingsProviderTest {
    }

    @Test
    public void testUpdateLocationProvidersAllowedLocked_invalidInput() throws Exception {
        setSettingViaFrontEndApiAndAssertSuccessfulChange(
    public void testLocationProvidersAllowedLocked_invalidInput() throws Exception {
        setStringViaFrontEndApiSetting(
                SETTING_TYPE_SECURE,
                Settings.Secure.LOCATION_MODE,
                String.valueOf(Settings.Secure.LOCATION_MODE_OFF),