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

Commit 838d69da authored by Matthew Fritze's avatar Matthew Fritze
Browse files

Index database before getting Uri Descendants

onGetSliceDescendants would return empty results if
the call was made before the database was indexed.
This CL checks the index before building the list.

Change-Id: I2e0f88893138a048dbd529d465d68fa4b1a3dc12
Fixes: 78196823
Test: robotests
parent 77e716e4
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -89,6 +89,7 @@ public class SlicesDatabaseAccessor {
     * @return a list of keys in the Slices database matching on {@param isPlatformSlice}.
     */
    public List<String> getSliceKeys(boolean isPlatformSlice) {
        verifyIndexing();
        final String whereClause;

        if (isPlatformSlice) {
+1 −0
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import android.database.Cursor;
import android.text.TextUtils;

import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.FakeIndexProvider;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.wifi.WifiSettings;

+1 −3
Original line number Diff line number Diff line
@@ -31,7 +31,6 @@ import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.database.ContentObserver;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.provider.Settings;
@@ -40,14 +39,13 @@ import android.util.Pair;

import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.search.FakeIndexProvider;
import com.android.settings.testutils.FakeIndexProvider;
import com.android.settings.search.SearchFeatureProvider;
import com.android.settings.search.SearchFeatureProviderImpl;
import com.android.settings.testutils.DatabaseTestUtils;
import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.FakeSliderController;
import com.android.settings.testutils.FakeToggleController;
import com.android.settings.testutils.FakeUnavailablePreferenceController;
import com.android.settings.testutils.SettingsRobolectricTestRunner;

import org.junit.After;
+1 −1
Original line number Diff line number Diff line
@@ -33,7 +33,7 @@ import android.text.TextUtils;
import com.android.settings.R;
import com.android.settings.accessibility.AccessibilitySettings;
import com.android.settings.accessibility.AccessibilitySlicePreferenceController;
import com.android.settings.search.FakeIndexProvider;
import com.android.settings.testutils.FakeIndexProvider;
import com.android.settings.search.SearchFeatureProvider;
import com.android.settings.search.SearchFeatureProviderImpl;
import com.android.settings.testutils.FakeFeatureFactory;
+37 −1
Original line number Diff line number Diff line
@@ -25,9 +25,13 @@ import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.view.accessibility.AccessibilityManager;

import com.android.settings.search.FakeIndexProvider;
import com.android.settings.testutils.FakeIndexProvider;
import com.android.settings.search.SearchFeatureProvider;
import com.android.settings.search.SearchFeatureProviderImpl;
import com.android.settings.testutils.DatabaseTestUtils;
import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.SettingsRobolectricTestRunner;

import org.junit.After;
@@ -35,8 +39,15 @@ import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowAccessibilityManager;

import java.util.ArrayList;
import java.util.List;
import java.util.Locale;

import org.robolectric.shadow.api.Shadow;


@RunWith(SettingsRobolectricTestRunner.class)
public class SlicesDatabaseAccessorTest {
@@ -157,6 +168,31 @@ public class SlicesDatabaseAccessorTest {
        assertThat(keys).containsExactly(key);
    }

    @Test
    @Config(qualifiers = "mcc999")
    public void getSliceKeys_indexesDatabase() {
        // Force new indexing
        Locale.setDefault(new Locale("ca"));
        // Register the fake a11y Service
        ShadowAccessibilityManager shadowAccessibilityManager = Shadow.extract(
                RuntimeEnvironment.application.getSystemService(AccessibilityManager.class));
        shadowAccessibilityManager.setInstalledAccessibilityServiceList(new ArrayList<>());
        final SearchFeatureProvider provider = new SearchFeatureProviderImpl();
        final SlicesFeatureProvider sliceProvider = spy(new SlicesFeatureProviderImpl());
        final FakeFeatureFactory factory = FakeFeatureFactory.setupForTest();
        factory.searchFeatureProvider = provider;
        factory.slicesFeatureProvider = sliceProvider;
        // Fake the indexable list.
        provider.getSearchIndexableResources().getProviderValues().clear();
        provider.getSearchIndexableResources().getProviderValues().add(
                FakeIndexProvider.class);

        final SlicesDatabaseAccessor accessor = new SlicesDatabaseAccessor(mContext);
        final List<String> keys = accessor.getSliceKeys(true);

        assertThat(keys).isNotEmpty();
    }

    private void insertSpecialCase(String key) {
        insertSpecialCase(key, true);
    }
Loading