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
This commit is contained in:
@@ -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) {
|
||||
|
@@ -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;
|
||||
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -61,11 +61,12 @@ public class FakeFeatureFactory extends FeatureFactory {
|
||||
public final UserFeatureProvider userFeatureProvider;
|
||||
public final AssistGestureFeatureProvider assistGestureFeatureProvider;
|
||||
public final BluetoothFeatureProvider bluetoothFeatureProvider;
|
||||
public final SlicesFeatureProvider slicesFeatureProvider;
|
||||
public SearchFeatureProvider searchFeatureProvider;
|
||||
public final AccountFeatureProvider mAccountFeatureProvider;
|
||||
public final DeviceIndexFeatureProvider deviceIndexFeatureProvider;
|
||||
|
||||
public SlicesFeatureProvider slicesFeatureProvider;
|
||||
public SearchFeatureProvider searchFeatureProvider;
|
||||
|
||||
/**
|
||||
* Call this in {@code @Before} method of the test class to use fake factory.
|
||||
*/
|
||||
|
@@ -15,12 +15,14 @@
|
||||
*
|
||||
*/
|
||||
|
||||
package com.android.settings.search;
|
||||
package com.android.settings.testutils;
|
||||
|
||||
import android.content.Context;
|
||||
import android.provider.SearchIndexableResource;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.search.BaseSearchIndexProvider;
|
||||
import com.android.settings.search.Indexable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
Reference in New Issue
Block a user