Merge "Index database before getting Uri Descendants" into pi-dev am: a7fd137e2d

am: 03f1fafaaf

Change-Id: I700fd063084ad0e41289feb552b3a1bfafd3cd57
This commit is contained in:
Matthew Fritze
2018-04-26 13:36:00 -07:00
committed by android-build-merger
7 changed files with 47 additions and 8 deletions

View File

@@ -89,6 +89,7 @@ public class SlicesDatabaseAccessor {
* @return a list of keys in the Slices database matching on {@param isPlatformSlice}. * @return a list of keys in the Slices database matching on {@param isPlatformSlice}.
*/ */
public List<String> getSliceKeys(boolean isPlatformSlice) { public List<String> getSliceKeys(boolean isPlatformSlice) {
verifyIndexing();
final String whereClause; final String whereClause;
if (isPlatformSlice) { if (isPlatformSlice) {

View File

@@ -30,6 +30,7 @@ import android.database.Cursor;
import android.text.TextUtils; import android.text.TextUtils;
import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.FakeIndexProvider;
import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.wifi.WifiSettings; import com.android.settings.wifi.WifiSettings;

View File

@@ -31,7 +31,6 @@ import android.content.ContentResolver;
import android.content.ContentValues; import android.content.ContentValues;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.database.ContentObserver;
import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase;
import android.net.Uri; import android.net.Uri;
import android.provider.Settings; import android.provider.Settings;
@@ -40,14 +39,13 @@ import android.util.Pair;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.core.BasePreferenceController; 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.SearchFeatureProvider;
import com.android.settings.search.SearchFeatureProviderImpl; import com.android.settings.search.SearchFeatureProviderImpl;
import com.android.settings.testutils.DatabaseTestUtils; import com.android.settings.testutils.DatabaseTestUtils;
import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.FakeSliderController; import com.android.settings.testutils.FakeSliderController;
import com.android.settings.testutils.FakeToggleController; import com.android.settings.testutils.FakeToggleController;
import com.android.settings.testutils.FakeUnavailablePreferenceController;
import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.SettingsRobolectricTestRunner;
import org.junit.After; import org.junit.After;

View File

@@ -33,7 +33,7 @@ import android.text.TextUtils;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.accessibility.AccessibilitySettings; import com.android.settings.accessibility.AccessibilitySettings;
import com.android.settings.accessibility.AccessibilitySlicePreferenceController; 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.SearchFeatureProvider;
import com.android.settings.search.SearchFeatureProviderImpl; import com.android.settings.search.SearchFeatureProviderImpl;
import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.FakeFeatureFactory;

View File

@@ -25,9 +25,13 @@ import android.content.ContentValues;
import android.content.Context; import android.content.Context;
import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase;
import android.net.Uri; 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.DatabaseTestUtils;
import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.SettingsRobolectricTestRunner;
import org.junit.After; import org.junit.After;
@@ -35,8 +39,15 @@ import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.robolectric.RuntimeEnvironment; 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.List;
import java.util.Locale;
import org.robolectric.shadow.api.Shadow;
@RunWith(SettingsRobolectricTestRunner.class) @RunWith(SettingsRobolectricTestRunner.class)
public class SlicesDatabaseAccessorTest { public class SlicesDatabaseAccessorTest {
@@ -157,6 +168,31 @@ public class SlicesDatabaseAccessorTest {
assertThat(keys).containsExactly(key); 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) { private void insertSpecialCase(String key) {
insertSpecialCase(key, true); insertSpecialCase(key, true);
} }

View File

@@ -63,11 +63,12 @@ public class FakeFeatureFactory extends FeatureFactory {
public final UserFeatureProvider userFeatureProvider; public final UserFeatureProvider userFeatureProvider;
public final AssistGestureFeatureProvider assistGestureFeatureProvider; public final AssistGestureFeatureProvider assistGestureFeatureProvider;
public final BluetoothFeatureProvider bluetoothFeatureProvider; public final BluetoothFeatureProvider bluetoothFeatureProvider;
public final SlicesFeatureProvider slicesFeatureProvider;
public SearchFeatureProvider searchFeatureProvider;
public final AccountFeatureProvider mAccountFeatureProvider; public final AccountFeatureProvider mAccountFeatureProvider;
public final DeviceIndexFeatureProvider deviceIndexFeatureProvider; public final DeviceIndexFeatureProvider deviceIndexFeatureProvider;
public SlicesFeatureProvider slicesFeatureProvider;
public SearchFeatureProvider searchFeatureProvider;
/** /**
* Call this in {@code @Before} method of the test class to use fake factory. * Call this in {@code @Before} method of the test class to use fake factory.
*/ */

View File

@@ -15,12 +15,14 @@
* *
*/ */
package com.android.settings.search; package com.android.settings.testutils;
import android.content.Context; import android.content.Context;
import android.provider.SearchIndexableResource; import android.provider.SearchIndexableResource;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.search.Indexable;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;