Merge "Add capability for OEMs to supply their own SearchIndexableResources."
This commit is contained in:
committed by
Android (Google) Code Review
commit
7e62030e78
@@ -2,6 +2,8 @@ package com.android.settings.core;
|
||||
|
||||
import static com.google.common.truth.Truth.assertWithMessage;
|
||||
|
||||
import static org.mockito.Mockito.mock;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.XmlResourceParser;
|
||||
import android.provider.SearchIndexableResource;
|
||||
@@ -13,10 +15,12 @@ import com.android.settings.R;
|
||||
import com.android.settings.TestConfig;
|
||||
import com.android.settings.search.DatabaseIndexingUtils;
|
||||
import com.android.settings.search.Indexable;
|
||||
import com.android.settings.search.SearchIndexableResources;
|
||||
import com.android.settings.search.SearchFeatureProvider;
|
||||
import com.android.settings.search.SearchFeatureProviderImpl;
|
||||
import com.android.settings.search.XmlParserUtils;
|
||||
import com.android.settings.security.SecuritySettings;
|
||||
import com.android.settings.security.SecuritySettingsV2;
|
||||
import com.android.settings.testutils.FakeFeatureFactory;
|
||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||
|
||||
import org.junit.After;
|
||||
@@ -82,19 +86,21 @@ public class XmlControllerAttributeTest {
|
||||
+ "IllegalAccessException. Please fix the following classes:\n";
|
||||
|
||||
Context mContext;
|
||||
|
||||
private Set<Class> mProviderClassesCopy;
|
||||
SearchFeatureProvider mSearchProvider;
|
||||
private FakeFeatureFactory mFakeFeatureFactory;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
mContext = RuntimeEnvironment.application;
|
||||
mProviderClassesCopy = new HashSet<>(SearchIndexableResources.providerValues());
|
||||
mSearchProvider = new SearchFeatureProviderImpl();
|
||||
mFakeFeatureFactory = FakeFeatureFactory.setupForTest();
|
||||
mFakeFeatureFactory.searchFeatureProvider = mSearchProvider;
|
||||
}
|
||||
|
||||
@After
|
||||
public void cleanUp() {
|
||||
SearchIndexableResources.providerValues().clear();
|
||||
SearchIndexableResources.providerValues().addAll(mProviderClassesCopy);
|
||||
mFakeFeatureFactory.searchFeatureProvider = mock(
|
||||
SearchFeatureProvider.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -156,7 +162,8 @@ public class XmlControllerAttributeTest {
|
||||
private Set<Integer> getIndexableXml() {
|
||||
Set<Integer> xmlResSet = new HashSet();
|
||||
|
||||
Collection<Class> indexableClasses = SearchIndexableResources.providerValues();
|
||||
Collection<Class> indexableClasses =
|
||||
mSearchProvider.getSearchIndexableResources().getProviderValues();
|
||||
indexableClasses.removeAll(illegalClasses);
|
||||
|
||||
for (Class clazz : indexableClasses) {
|
||||
|
||||
@@ -121,7 +121,8 @@ public class SearchIndexProviderCodeInspector extends CodeInspector {
|
||||
continue;
|
||||
}
|
||||
// Must be in SearchProviderRegistry
|
||||
if (!SearchIndexableResources.providerValues().contains(clazz)) {
|
||||
SearchFeatureProvider provider = new SearchFeatureProviderImpl();
|
||||
if (!provider.getSearchIndexableResources().getProviderValues().contains(clazz)) {
|
||||
if (!notInSearchIndexableRegistryGrandfatherList.remove(className)) {
|
||||
notInSearchProviderRegistry.add(className);
|
||||
}
|
||||
|
||||
@@ -21,12 +21,14 @@ import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static junit.framework.Assert.fail;
|
||||
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.spy;
|
||||
|
||||
import android.database.Cursor;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import com.android.settings.TestConfig;
|
||||
import com.android.settings.testutils.FakeFeatureFactory;
|
||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||
import com.android.settings.wifi.WifiSettings;
|
||||
|
||||
@@ -36,49 +38,56 @@ import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.robolectric.annotation.Config;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
@RunWith(SettingsRobolectricTestRunner.class)
|
||||
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
|
||||
public class SearchIndexableResourcesTest {
|
||||
|
||||
Set<Class> sProviderClassCopy;
|
||||
SearchFeatureProviderImpl mSearchProvider;
|
||||
private FakeFeatureFactory mFakeFeatureFactory;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
sProviderClassCopy = new HashSet<>(SearchIndexableResources.sProviders);
|
||||
mSearchProvider = new SearchFeatureProviderImpl();
|
||||
mFakeFeatureFactory = FakeFeatureFactory.setupForTest();
|
||||
mFakeFeatureFactory.searchFeatureProvider = mSearchProvider;
|
||||
}
|
||||
|
||||
@After
|
||||
public void cleanUp() {
|
||||
SearchIndexableResources.sProviders.clear();
|
||||
SearchIndexableResources.sProviders.addAll(sProviderClassCopy);
|
||||
mFakeFeatureFactory.searchFeatureProvider = mock(
|
||||
SearchFeatureProvider.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAddIndex() {
|
||||
final Class stringClass = java.lang.String.class;
|
||||
// Confirms that String.class isn't contained in SearchIndexableResources.
|
||||
assertThat(SearchIndexableResources.sProviders).doesNotContain(stringClass);
|
||||
final int beforeCount = SearchIndexableResources.providerValues().size();
|
||||
assertThat(mSearchProvider.getSearchIndexableResources().getProviderValues())
|
||||
.doesNotContain(stringClass);
|
||||
final int beforeCount =
|
||||
mSearchProvider.getSearchIndexableResources().getProviderValues().size();
|
||||
|
||||
SearchIndexableResources.addIndex(java.lang.String.class);
|
||||
( (SearchIndexableResourcesImpl) mSearchProvider.getSearchIndexableResources())
|
||||
.addIndex(java.lang.String.class);
|
||||
|
||||
assertThat(SearchIndexableResources.sProviders).contains(stringClass);
|
||||
final int afterCount = SearchIndexableResources.providerValues().size();
|
||||
assertThat(mSearchProvider.getSearchIndexableResources().getProviderValues())
|
||||
.contains(stringClass);
|
||||
final int afterCount =
|
||||
mSearchProvider.getSearchIndexableResources().getProviderValues().size();
|
||||
assertThat(afterCount).isEqualTo(beforeCount + 1);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testIndexHasWifiSettings() {
|
||||
assertThat(sProviderClassCopy).contains(WifiSettings.class);
|
||||
assertThat(mSearchProvider.getSearchIndexableResources().getProviderValues())
|
||||
.contains(WifiSettings.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNonIndexableKeys_GetsKeyFromProvider() {
|
||||
SearchIndexableResources.sProviders.clear();
|
||||
SearchIndexableResources.addIndex(FakeIndexProvider.class);
|
||||
mSearchProvider.getSearchIndexableResources().getProviderValues().clear();
|
||||
( (SearchIndexableResourcesImpl) mSearchProvider.getSearchIndexableResources())
|
||||
.addIndex(FakeIndexProvider.class);
|
||||
|
||||
SettingsSearchIndexablesProvider provider = spy(new SettingsSearchIndexablesProvider());
|
||||
|
||||
@@ -97,7 +106,7 @@ public class SearchIndexableResourcesTest {
|
||||
|
||||
@Test
|
||||
public void testAllClassNamesHaveProviders() {
|
||||
for (Class clazz: sProviderClassCopy) {
|
||||
for (Class clazz: mSearchProvider.getSearchIndexableResources().getProviderValues()) {
|
||||
if(DatabaseIndexingUtils.getSearchIndexProvider(clazz) == null) {
|
||||
fail(clazz.getName() + "is not an index provider");
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.android.settings.search;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.spy;
|
||||
|
||||
import android.Manifest;
|
||||
@@ -14,6 +15,7 @@ import android.provider.SearchIndexablesContract;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.TestConfig;
|
||||
import com.android.settings.search.indexing.FakeSettingsFragment;
|
||||
import com.android.settings.testutils.FakeFeatureFactory;
|
||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||
|
||||
import org.junit.After;
|
||||
@@ -23,9 +25,6 @@ import org.junit.runner.RunWith;
|
||||
import org.robolectric.RuntimeEnvironment;
|
||||
import org.robolectric.annotation.Config;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
@RunWith(SettingsRobolectricTestRunner.class)
|
||||
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
|
||||
public class SettingsSearchIndexablesProviderTest {
|
||||
@@ -33,8 +32,8 @@ public class SettingsSearchIndexablesProviderTest {
|
||||
private final String BASE_AUTHORITY = "com.android.settings";
|
||||
|
||||
private SettingsSearchIndexablesProvider mProvider;
|
||||
|
||||
Set<Class> sProviderClasses;
|
||||
private SearchFeatureProvider mFeatureProvider;
|
||||
private FakeFeatureFactory mFakeFeatureFactory;
|
||||
Context mContext;
|
||||
|
||||
@Before
|
||||
@@ -49,15 +48,18 @@ public class SettingsSearchIndexablesProviderTest {
|
||||
info.readPermission = Manifest.permission.READ_SEARCH_INDEXABLES;
|
||||
mProvider.attachInfo(mContext, info);
|
||||
|
||||
sProviderClasses = new HashSet<>(SearchIndexableResources.sProviders);
|
||||
SearchIndexableResources.sProviders.clear();
|
||||
SearchIndexableResources.sProviders.add(FakeSettingsFragment.class);
|
||||
mFeatureProvider = new SearchFeatureProviderImpl();
|
||||
mFeatureProvider.getSearchIndexableResources().getProviderValues().clear();
|
||||
mFeatureProvider.getSearchIndexableResources().getProviderValues()
|
||||
.add(FakeSettingsFragment.class);
|
||||
mFakeFeatureFactory = FakeFeatureFactory.setupForTest();
|
||||
mFakeFeatureFactory.searchFeatureProvider = mFeatureProvider;
|
||||
}
|
||||
|
||||
@After
|
||||
public void cleanUp() {
|
||||
SearchIndexableResources.sProviders.clear();
|
||||
SearchIndexableResources.sProviders.addAll(sProviderClasses);
|
||||
mFakeFeatureFactory.searchFeatureProvider = mock(
|
||||
SearchFeatureProvider.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -19,6 +19,8 @@ package com.android.settings.slices;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.Mockito.mock;
|
||||
|
||||
import android.content.ContentValues;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
@@ -26,8 +28,9 @@ import android.database.sqlite.SQLiteDatabase;
|
||||
|
||||
import com.android.settings.TestConfig;
|
||||
import com.android.settings.search.FakeIndexProvider;
|
||||
import com.android.settings.search.SearchIndexableResources;
|
||||
import com.android.settings.testutils.DatabaseTestUtils;
|
||||
import com.android.settings.search.SearchFeatureProvider;
|
||||
import com.android.settings.search.SearchFeatureProviderImpl;
|
||||
import com.android.settings.testutils.FakeFeatureFactory;
|
||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||
|
||||
import org.junit.After;
|
||||
@@ -37,9 +40,6 @@ import org.junit.runner.RunWith;
|
||||
import org.robolectric.RuntimeEnvironment;
|
||||
import org.robolectric.annotation.Config;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
@RunWith(SettingsRobolectricTestRunner.class)
|
||||
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
|
||||
public class SliceBroadcastReceiverTest {
|
||||
@@ -54,30 +54,30 @@ public class SliceBroadcastReceiverTest {
|
||||
private Context mContext;
|
||||
private SQLiteDatabase mDb;
|
||||
private SliceBroadcastReceiver mReceiver;
|
||||
|
||||
private Set<Class> mProviderClassesCopy;
|
||||
private SearchFeatureProvider mSearchFeatureProvider;
|
||||
private FakeFeatureFactory mFakeFeatureFactory;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
mContext = RuntimeEnvironment.application;
|
||||
mDb = SlicesDatabaseHelper.getInstance(mContext).getWritableDatabase();
|
||||
mReceiver = new SliceBroadcastReceiver();
|
||||
mProviderClassesCopy = new HashSet<>(SearchIndexableResources.providerValues());
|
||||
SlicesDatabaseHelper helper = SlicesDatabaseHelper.getInstance(mContext);
|
||||
helper.setIndexedState();
|
||||
mSearchFeatureProvider = new SearchFeatureProviderImpl();
|
||||
mFakeFeatureFactory = FakeFeatureFactory.setupForTest();
|
||||
mFakeFeatureFactory.searchFeatureProvider = mSearchFeatureProvider;
|
||||
}
|
||||
|
||||
@After
|
||||
public void cleanUp() {
|
||||
DatabaseTestUtils.clearDb(mContext);
|
||||
SearchIndexableResources.providerValues().clear();
|
||||
SearchIndexableResources.providerValues().addAll(mProviderClassesCopy);
|
||||
mFakeFeatureFactory.searchFeatureProvider = mock(SearchFeatureProvider.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOnReceive_toggleChanged() {
|
||||
String key = "key";
|
||||
SearchIndexableResources.providerValues().clear();
|
||||
mSearchFeatureProvider.getSearchIndexableResources().getProviderValues().clear();
|
||||
insertSpecialCase(key);
|
||||
// Turn on toggle setting
|
||||
FakeToggleController fakeToggleController = new FakeToggleController(mContext, key);
|
||||
|
||||
@@ -18,11 +18,15 @@ package com.android.settings.slices;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.Mockito.mock;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import com.android.settings.TestConfig;
|
||||
import com.android.settings.search.FakeIndexProvider;
|
||||
import com.android.settings.search.SearchIndexableResources;
|
||||
import com.android.settings.search.SearchFeatureProvider;
|
||||
import com.android.settings.search.SearchFeatureProviderImpl;
|
||||
import com.android.settings.testutils.FakeFeatureFactory;
|
||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||
|
||||
import org.junit.After;
|
||||
@@ -32,9 +36,7 @@ import org.junit.runner.RunWith;
|
||||
import org.robolectric.RuntimeEnvironment;
|
||||
import org.robolectric.annotation.Config;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
@RunWith(SettingsRobolectricTestRunner.class)
|
||||
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
|
||||
@@ -49,28 +51,31 @@ public class SliceDataConverterTest {
|
||||
|
||||
Context mContext;
|
||||
|
||||
private Set<Class> mProviderClassesCopy;
|
||||
|
||||
SliceDataConverter mSliceDataConverter;
|
||||
SearchFeatureProvider mSearchFeatureProvider;
|
||||
private FakeFeatureFactory mFakeFeatureFactory;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
mContext = RuntimeEnvironment.application;
|
||||
mProviderClassesCopy = new HashSet<>(SearchIndexableResources.providerValues());
|
||||
mSliceDataConverter = new SliceDataConverter(mContext);
|
||||
mSearchFeatureProvider = new SearchFeatureProviderImpl();
|
||||
mFakeFeatureFactory = FakeFeatureFactory.setupForTest();
|
||||
mFakeFeatureFactory.searchFeatureProvider = mSearchFeatureProvider;
|
||||
}
|
||||
|
||||
@After
|
||||
public void cleanUp() {
|
||||
SearchIndexableResources.providerValues().clear();
|
||||
SearchIndexableResources.providerValues().addAll(mProviderClassesCopy);
|
||||
mFakeFeatureFactory.searchFeatureProvider = mock(
|
||||
SearchFeatureProvider.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
@Config(qualifiers = "mcc999")
|
||||
public void testFakeProvider_convertsFakeData() {
|
||||
SearchIndexableResources.providerValues().clear();
|
||||
SearchIndexableResources.providerValues().add(FakeIndexProvider.class);
|
||||
mSearchFeatureProvider.getSearchIndexableResources().getProviderValues().clear();
|
||||
mSearchFeatureProvider.getSearchIndexableResources().getProviderValues()
|
||||
.add(FakeIndexProvider.class);
|
||||
|
||||
List<SliceData> sliceDataList = mSliceDataConverter.getSliceData();
|
||||
|
||||
|
||||
@@ -55,7 +55,6 @@ public class FakeFeatureFactory extends FeatureFactory {
|
||||
public final LocaleFeatureProvider localeFeatureProvider;
|
||||
public final ApplicationFeatureProvider applicationFeatureProvider;
|
||||
public final EnterprisePrivacyFeatureProvider enterprisePrivacyFeatureProvider;
|
||||
public final SearchFeatureProvider searchFeatureProvider;
|
||||
public final SurveyFeatureProvider surveyFeatureProvider;
|
||||
public final SecurityFeatureProvider securityFeatureProvider;
|
||||
public final SuggestionFeatureProvider suggestionsFeatureProvider;
|
||||
@@ -65,6 +64,7 @@ public class FakeFeatureFactory extends FeatureFactory {
|
||||
public final DataPlanFeatureProvider dataPlanFeatureProvider;
|
||||
public final SmsMirroringFeatureProvider smsMirroringFeatureProvider;
|
||||
public final SlicesFeatureProvider slicesFeatureProvider;
|
||||
public SearchFeatureProvider searchFeatureProvider;
|
||||
|
||||
/**
|
||||
* Call this in {@code @Before} method of the test class to use fake factory.
|
||||
|
||||
Reference in New Issue
Block a user