Loading src/com/android/settings/search2/DatabaseIndexingManager.java +53 −58 Original line number Diff line number Diff line Loading @@ -516,10 +516,7 @@ public class DatabaseIndexingManager { nonIndexableKeys.addAll(resNonIndxableKeys); } indexFromResource(sir.context, database, localeStr, sir.xmlResId, sir.className, sir.iconResId, sir.rank, sir.intentAction, sir.intentTargetPackage, sir.intentTargetClass, nonIndexableKeys); indexFromResource(database, localeStr, sir, nonIndexableKeys); } else { if (TextUtils.isEmpty(sir.className)) { Log.w(LOG_TAG, "Cannot index an empty Search Provider name!"); Loading @@ -543,20 +540,17 @@ public class DatabaseIndexingManager { nonIndexableKeys.addAll(providerNonIndexableKeys); } indexFromProvider(mContext, database, localeStr, provider, sir.className, sir.iconResId, sir.rank, sir.enabled, nonIndexableKeys); indexFromProvider(database, localeStr, provider, sir, nonIndexableKeys); } } } private void indexFromResource(Context context, SQLiteDatabase database, String localeStr, int xmlResId, String fragmentName, int iconResId, int rank, String intentAction, String intentTargetPackage, String intentTargetClass, List<String> nonIndexableKeys) { private void indexFromResource(SQLiteDatabase database, String localeStr, SearchIndexableResource sir, List<String> nonIndexableKeys) { final Context context = sir.context; XmlResourceParser parser = null; try { parser = context.getResources().getXml(xmlResId); parser = context.getResources().getXml(sir.xmlResId); int type; while ((type = parser.next()) != XmlPullParser.END_DOCUMENT Loading @@ -583,6 +577,13 @@ public class DatabaseIndexingManager { String keywords; String childFragment; ResultPayload payload; boolean enabled; final String fragmentName = sir.className; final int iconResId = sir.iconResId; final int rank = sir.rank; final String intentAction = sir.intentAction; final String intentTargetPackage = sir.intentTargetPackage; final String intentTargetClass = sir.intentTargetClass; Map<String, PreferenceController> controllerUriMap = null; Loading @@ -593,10 +594,11 @@ public class DatabaseIndexingManager { // Insert rows for the main PreferenceScreen node. Rewrite the data for removing // hyphens. if (!nonIndexableKeys.contains(key)) { title = XmlParserUtils.getDataTitle(context, attrs); summary = XmlParserUtils.getDataSummary(context, attrs); keywords = XmlParserUtils.getDataKeywords(context, attrs); enabled = !nonIndexableKeys.contains(key); DatabaseRow.Builder builder = new DatabaseRow.Builder(); builder.setLocale(localeStr) Loading @@ -608,13 +610,12 @@ public class DatabaseIndexingManager { .setIntentAction(intentAction) .setIntentTargetPackage(intentTargetPackage) .setIntentTargetClass(intentTargetClass) .setEnabled(true) .setEnabled(enabled) .setKey(key) .setUserId(-1 /* default user id */); updateOneRowWithFilteredData(database, builder, title, summary, null /* summary off */, keywords); } while ((type = parser.next()) != XmlPullParser.END_DOCUMENT && (type != XmlPullParser.END_TAG || parser.getDepth() > outerDepth)) { Loading @@ -625,14 +626,11 @@ public class DatabaseIndexingManager { nodeName = parser.getName(); key = XmlParserUtils.getDataKey(context, attrs); if (nonIndexableKeys.contains(key)) { continue; } enabled = ! nonIndexableKeys.contains(key); title = XmlParserUtils.getDataTitle(context, attrs); keywords = XmlParserUtils.getDataKeywords(context, attrs); DatabaseRow.Builder builder = new DatabaseRow.Builder(); builder = new DatabaseRow.Builder(); builder.setLocale(localeStr) .setClassName(fragmentName) .setScreenTitle(screenTitle) Loading @@ -641,7 +639,7 @@ public class DatabaseIndexingManager { .setIntentAction(intentAction) .setIntentTargetPackage(intentTargetPackage) .setIntentTargetClass(intentTargetClass) .setEnabled(true) .setEnabled(enabled) .setKey(key) .setUserId(-1 /* default user id */); Loading Loading @@ -685,16 +683,21 @@ public class DatabaseIndexingManager { } } private void indexFromProvider(Context context, SQLiteDatabase database, String localeStr, Indexable.SearchIndexProvider provider, String className, int iconResId, int rank, boolean enabled, List<String> nonIndexableKeys) { private void indexFromProvider(SQLiteDatabase database, String localeStr, Indexable.SearchIndexProvider provider, SearchIndexableResource sir, List<String> nonIndexableKeys) { final String className = sir.className; final int iconResId = sir.iconResId; final int rank = sir.rank; if (provider == null) { Log.w(LOG_TAG, "Cannot find provider: " + className); return; } final List<SearchIndexableRaw> rawList = provider.getRawDataToIndex(context, enabled); final List<SearchIndexableRaw> rawList = provider.getRawDataToIndex(mContext, true /* enabled */); if (rawList != null) { Loading @@ -706,10 +709,7 @@ public class DatabaseIndexingManager { if (!raw.locale.toString().equalsIgnoreCase(localeStr)) { continue; } if (nonIndexableKeys.contains(raw.key)) { continue; } boolean enabled = !nonIndexableKeys.contains(raw.key); DatabaseRow.Builder builder = new DatabaseRow.Builder(); builder.setLocale(localeStr) Loading @@ -721,7 +721,7 @@ public class DatabaseIndexingManager { .setIntentAction(raw.intentAction) .setIntentTargetPackage(raw.intentTargetPackage) .setIntentTargetClass(raw.intentTargetClass) .setEnabled(raw.enabled) .setEnabled(enabled) .setKey(raw.key) .setUserId(raw.userId); Loading @@ -731,7 +731,7 @@ public class DatabaseIndexingManager { } final List<SearchIndexableResource> resList = provider.getXmlResourcesToIndex(context, enabled); provider.getXmlResourcesToIndex(mContext, true); if (resList != null) { final int resSize = resList.size(); for (int i = 0; i < resSize; i++) { Loading @@ -742,15 +742,10 @@ public class DatabaseIndexingManager { continue; } final int itemIconResId = (item.iconResId == 0) ? iconResId : item.iconResId; final int itemRank = (item.rank == 0) ? rank : item.rank; String itemClassName = (TextUtils.isEmpty(item.className)) ? className : item.className; item.iconResId = (item.iconResId == 0) ? iconResId : item.iconResId; item.className = (TextUtils.isEmpty(item.className)) ? className : item.className; indexFromResource(context, database, localeStr, item.xmlResId, itemClassName, itemIconResId, itemRank, item.intentAction, item.intentTargetPackage, item.intentTargetClass, nonIndexableKeys); indexFromResource(database, localeStr, item, nonIndexableKeys); } } } Loading src/com/android/settings/search2/DatabaseResultLoader.java +2 −2 Original line number Diff line number Diff line Loading @@ -129,7 +129,6 @@ public class DatabaseResultLoader extends AsyncLoader<List<SearchResult>> { secondaryResults = query(MATCH_COLUMNS_SECONDARY, BASE_RANKS[1]); tertiaryResults = query(MATCH_COLUMNS_TERTIARY, BASE_RANKS[2]); final List<SearchResult> results = new ArrayList<>(primaryResults.size() + secondaryResults.size() + tertiaryResults.size()); Loading Loading @@ -167,7 +166,7 @@ public class DatabaseResultLoader extends AsyncLoader<List<SearchResult>> { } private static String buildWhereClause(String[] matchColumns) { StringBuilder sb = new StringBuilder(" "); StringBuilder sb = new StringBuilder(" ("); final int count = matchColumns.length; for (int n = 0; n < count; n++) { sb.append(matchColumns[n]); Loading @@ -176,6 +175,7 @@ public class DatabaseResultLoader extends AsyncLoader<List<SearchResult>> { sb.append(" OR "); } } sb.append(") AND enabled = 1"); return sb.toString(); } } tests/robotests/src/com/android/settings/search/DatabaseIndexingManagerTest.java +48 −13 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Locale; import java.util.Map; import static com.android.settings.dashboard.SiteMapManager.SITE_MAP_COLUMNS; import static com.google.common.truth.Truth.assertThat; Loading @@ -51,7 +52,7 @@ import static org.mockito.Mockito.spy; public class DatabaseIndexingManagerTest { private final String localeStr = "en_US"; private final int rank = 42; private final int rank = 8; private final String title = "title\u2011title"; private final String updatedTitle = "title-title"; private final String normalizedTitle = "titletitle"; Loading Loading @@ -212,6 +213,20 @@ public class DatabaseIndexingManagerTest { assertThat(cursor.getCount()).isEqualTo(6); } @Test public void testAddResourceWithNIKs_RowsInsertedDisabled() { SearchIndexableResource resource = getFakeResource(R.xml.gesture_settings); // Only add 2 of 6 items to be disabled. String[] keys = {"gesture_double_tap_power", "gesture_swipe_down_fingerprint"}; Map<String, List<String>> niks = getNonIndexableKeys(keys); mManager.indexOneSearchIndexableData(mDb, localeStr, resource, niks); Cursor cursor = mDb.rawQuery("SELECT * FROM prefs_index WHERE enabled = 0", null); assertThat(cursor.getCount()).isEqualTo(2); cursor = mDb.rawQuery("SELECT * FROM prefs_index WHERE enabled = 1", null); assertThat(cursor.getCount()).isEqualTo(4); } @Test public void testAddResourceHeader_RowsMatch() { SearchIndexableResource resource = getFakeResource(R.xml.application_settings); Loading Loading @@ -529,21 +544,19 @@ public class DatabaseIndexingManagerTest { @Test public void testResourceProvider_ResourceRowInserted() { SearchIndexableResource resource = getFakeResource(R.xml.gesture_settings); resource.xmlResId = 0; SearchIndexableResource resource = getFakeResource(0); resource.className = "com.android.settings.LegalSettings"; mManager.indexOneSearchIndexableData(mDb, localeStr, resource, new HashMap<>()); Cursor cursor = mDb.rawQuery("SELECT * FROM prefs_index", null); assertThat(cursor.getCount()).isEqualTo(2); assertThat(cursor.getCount()).isEqualTo(6); } @Test public void testResourceProvider_ResourceRowMatches() { SearchIndexableResource resource = getFakeResource(R.xml.gesture_settings); resource.xmlResId = 0; resource.className = "com.android.settings.LegalSettings"; SearchIndexableResource resource = getFakeResource(0); resource.className = "com.android.settings.display.ScreenZoomSettings"; mManager.indexOneSearchIndexableData(mDb, localeStr, resource, new HashMap<>()); Loading @@ -555,9 +568,9 @@ public class DatabaseIndexingManagerTest { // Data Rank assertThat(cursor.getInt(1)).isEqualTo(rank); // Data Title assertThat(cursor.getString(2)).isEqualTo("Legal information"); assertThat(cursor.getString(2)).isEqualTo("Display size"); // Normalized Title assertThat(cursor.getString(3)).isEqualTo("legal information"); assertThat(cursor.getString(3)).isEqualTo("display size"); // Summary On assertThat(cursor.getString(4)).isEmpty(); // Summary On Normalized Loading @@ -569,12 +582,13 @@ public class DatabaseIndexingManagerTest { // Entries - only on for list preferences assertThat(cursor.getString(8)).isNull(); // Keywords assertThat(cursor.getString(9)).isEmpty(); assertThat(cursor.getString(9)).isEqualTo( "display density screen zoom scale scaling"); // Screen Title assertThat(cursor.getString(10)).isEqualTo("Legal information"); assertThat(cursor.getString(10)).isEqualTo("Display size"); // Class Name assertThat(cursor.getString(11)) .isEqualTo("com.android.settings.LegalSettings"); .isEqualTo("com.android.settings.display.ScreenZoomSettings"); // Icon assertThat(cursor.getInt(12)).isEqualTo(iconResId); // Intent Action Loading @@ -595,6 +609,20 @@ public class DatabaseIndexingManagerTest { assertThat(cursor.getBlob(20)).isNull(); } @Test public void testResourceProvider_DisabledResourceRowsInserted() { SearchIndexableResource resource = getFakeResource(0); resource.className = "com.android.settings.LegalSettings"; mManager.indexOneSearchIndexableData(mDb, localeStr, resource, new HashMap<String, List<String>>()); Cursor cursor = mDb.rawQuery("SELECT * FROM prefs_index WHERE enabled = 1", null); assertThat(cursor.getCount()).isEqualTo(2); cursor = mDb.rawQuery("SELECT * FROM prefs_index WHERE enabled = 0", null); assertThat(cursor.getCount()).isEqualTo(4); } // Util functions private SearchIndexableRaw getFakeRaw() { Loading Loading @@ -636,4 +664,11 @@ public class DatabaseIndexingManagerTest { sir.enabled = enabled; return sir; } private Map<String, List<String>> getNonIndexableKeys(String[] keys) { Map<String, List<String>> niks = new HashMap<>(); List<String> keysList = new ArrayList<>(Arrays.asList(keys)); niks.put(packageName, keysList); return niks; } } No newline at end of file tests/robotests/src/com/android/settings/search/DatabaseResultLoaderTest.java +9 −9 Original line number Diff line number Diff line Loading @@ -80,26 +80,26 @@ public class DatabaseResultLoaderTest { @Test public void testMatchTitle() { loader = new DatabaseResultLoader(mContext, "title"); assertThat(loader.loadInBackground().size()).isEqualTo(3); verify(mSiteMapManager, times(3)).buildBreadCrumb(eq(mContext), anyString(), anyString()); assertThat(loader.loadInBackground().size()).isEqualTo(2); verify(mSiteMapManager, times(2)).buildBreadCrumb(eq(mContext), anyString(), anyString()); } @Test public void testMatchSummary() { loader = new DatabaseResultLoader(mContext, "summary"); assertThat(loader.loadInBackground().size()).isEqualTo(3); assertThat(loader.loadInBackground().size()).isEqualTo(2); } @Test public void testMatchKeywords() { loader = new DatabaseResultLoader(mContext, "keywords"); assertThat(loader.loadInBackground().size()).isEqualTo(3); assertThat(loader.loadInBackground().size()).isEqualTo(2); } @Test public void testMatchEntries() { loader = new DatabaseResultLoader(mContext, "entries"); assertThat(loader.loadInBackground().size()).isEqualTo(3); assertThat(loader.loadInBackground().size()).isEqualTo(2); } @Test Loading Loading @@ -167,7 +167,7 @@ public class DatabaseResultLoaderTest { values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_PACKAGE, ""); values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_CLASS, ""); values.put(IndexDatabaseHelper.IndexColumns.ICON, ""); values.put(IndexDatabaseHelper.IndexColumns.ENABLED, ""); values.put(IndexDatabaseHelper.IndexColumns.ENABLED, true); values.put(IndexDatabaseHelper.IndexColumns.DATA_KEY_REF, "gesture_double_tap_power"); values.put(IndexDatabaseHelper.IndexColumns.USER_ID, 0); values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD_TYPE, 0); Loading Loading @@ -196,7 +196,7 @@ public class DatabaseResultLoaderTest { values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_PACKAGE, ""); values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_CLASS, ""); values.put(IndexDatabaseHelper.IndexColumns.ICON, ""); values.put(IndexDatabaseHelper.IndexColumns.ENABLED, ""); values.put(IndexDatabaseHelper.IndexColumns.ENABLED, true); values.put(IndexDatabaseHelper.IndexColumns.DATA_KEY_REF, "gesture_double_tap_power"); values.put(IndexDatabaseHelper.IndexColumns.USER_ID, 0); values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD_TYPE, 0); Loading @@ -223,7 +223,7 @@ public class DatabaseResultLoaderTest { values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_PACKAGE, ""); values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_CLASS, ""); values.put(IndexDatabaseHelper.IndexColumns.ICON, ""); values.put(IndexDatabaseHelper.IndexColumns.ENABLED, ""); values.put(IndexDatabaseHelper.IndexColumns.ENABLED, true); values.put(IndexDatabaseHelper.IndexColumns.DATA_KEY_REF, "gesture_double_tap_power"); values.put(IndexDatabaseHelper.IndexColumns.USER_ID, 0); values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD_TYPE, 0); Loading @@ -249,7 +249,7 @@ public class DatabaseResultLoaderTest { values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_PACKAGE, ""); values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_CLASS, ""); values.put(IndexDatabaseHelper.IndexColumns.ICON, ""); values.put(IndexDatabaseHelper.IndexColumns.ENABLED, ""); values.put(IndexDatabaseHelper.IndexColumns.ENABLED, false); values.put(IndexDatabaseHelper.IndexColumns.DATA_KEY_REF, "gesture_double_tap_power"); values.put(IndexDatabaseHelper.IndexColumns.USER_ID, 0); values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD_TYPE, 0); Loading Loading
src/com/android/settings/search2/DatabaseIndexingManager.java +53 −58 Original line number Diff line number Diff line Loading @@ -516,10 +516,7 @@ public class DatabaseIndexingManager { nonIndexableKeys.addAll(resNonIndxableKeys); } indexFromResource(sir.context, database, localeStr, sir.xmlResId, sir.className, sir.iconResId, sir.rank, sir.intentAction, sir.intentTargetPackage, sir.intentTargetClass, nonIndexableKeys); indexFromResource(database, localeStr, sir, nonIndexableKeys); } else { if (TextUtils.isEmpty(sir.className)) { Log.w(LOG_TAG, "Cannot index an empty Search Provider name!"); Loading @@ -543,20 +540,17 @@ public class DatabaseIndexingManager { nonIndexableKeys.addAll(providerNonIndexableKeys); } indexFromProvider(mContext, database, localeStr, provider, sir.className, sir.iconResId, sir.rank, sir.enabled, nonIndexableKeys); indexFromProvider(database, localeStr, provider, sir, nonIndexableKeys); } } } private void indexFromResource(Context context, SQLiteDatabase database, String localeStr, int xmlResId, String fragmentName, int iconResId, int rank, String intentAction, String intentTargetPackage, String intentTargetClass, List<String> nonIndexableKeys) { private void indexFromResource(SQLiteDatabase database, String localeStr, SearchIndexableResource sir, List<String> nonIndexableKeys) { final Context context = sir.context; XmlResourceParser parser = null; try { parser = context.getResources().getXml(xmlResId); parser = context.getResources().getXml(sir.xmlResId); int type; while ((type = parser.next()) != XmlPullParser.END_DOCUMENT Loading @@ -583,6 +577,13 @@ public class DatabaseIndexingManager { String keywords; String childFragment; ResultPayload payload; boolean enabled; final String fragmentName = sir.className; final int iconResId = sir.iconResId; final int rank = sir.rank; final String intentAction = sir.intentAction; final String intentTargetPackage = sir.intentTargetPackage; final String intentTargetClass = sir.intentTargetClass; Map<String, PreferenceController> controllerUriMap = null; Loading @@ -593,10 +594,11 @@ public class DatabaseIndexingManager { // Insert rows for the main PreferenceScreen node. Rewrite the data for removing // hyphens. if (!nonIndexableKeys.contains(key)) { title = XmlParserUtils.getDataTitle(context, attrs); summary = XmlParserUtils.getDataSummary(context, attrs); keywords = XmlParserUtils.getDataKeywords(context, attrs); enabled = !nonIndexableKeys.contains(key); DatabaseRow.Builder builder = new DatabaseRow.Builder(); builder.setLocale(localeStr) Loading @@ -608,13 +610,12 @@ public class DatabaseIndexingManager { .setIntentAction(intentAction) .setIntentTargetPackage(intentTargetPackage) .setIntentTargetClass(intentTargetClass) .setEnabled(true) .setEnabled(enabled) .setKey(key) .setUserId(-1 /* default user id */); updateOneRowWithFilteredData(database, builder, title, summary, null /* summary off */, keywords); } while ((type = parser.next()) != XmlPullParser.END_DOCUMENT && (type != XmlPullParser.END_TAG || parser.getDepth() > outerDepth)) { Loading @@ -625,14 +626,11 @@ public class DatabaseIndexingManager { nodeName = parser.getName(); key = XmlParserUtils.getDataKey(context, attrs); if (nonIndexableKeys.contains(key)) { continue; } enabled = ! nonIndexableKeys.contains(key); title = XmlParserUtils.getDataTitle(context, attrs); keywords = XmlParserUtils.getDataKeywords(context, attrs); DatabaseRow.Builder builder = new DatabaseRow.Builder(); builder = new DatabaseRow.Builder(); builder.setLocale(localeStr) .setClassName(fragmentName) .setScreenTitle(screenTitle) Loading @@ -641,7 +639,7 @@ public class DatabaseIndexingManager { .setIntentAction(intentAction) .setIntentTargetPackage(intentTargetPackage) .setIntentTargetClass(intentTargetClass) .setEnabled(true) .setEnabled(enabled) .setKey(key) .setUserId(-1 /* default user id */); Loading Loading @@ -685,16 +683,21 @@ public class DatabaseIndexingManager { } } private void indexFromProvider(Context context, SQLiteDatabase database, String localeStr, Indexable.SearchIndexProvider provider, String className, int iconResId, int rank, boolean enabled, List<String> nonIndexableKeys) { private void indexFromProvider(SQLiteDatabase database, String localeStr, Indexable.SearchIndexProvider provider, SearchIndexableResource sir, List<String> nonIndexableKeys) { final String className = sir.className; final int iconResId = sir.iconResId; final int rank = sir.rank; if (provider == null) { Log.w(LOG_TAG, "Cannot find provider: " + className); return; } final List<SearchIndexableRaw> rawList = provider.getRawDataToIndex(context, enabled); final List<SearchIndexableRaw> rawList = provider.getRawDataToIndex(mContext, true /* enabled */); if (rawList != null) { Loading @@ -706,10 +709,7 @@ public class DatabaseIndexingManager { if (!raw.locale.toString().equalsIgnoreCase(localeStr)) { continue; } if (nonIndexableKeys.contains(raw.key)) { continue; } boolean enabled = !nonIndexableKeys.contains(raw.key); DatabaseRow.Builder builder = new DatabaseRow.Builder(); builder.setLocale(localeStr) Loading @@ -721,7 +721,7 @@ public class DatabaseIndexingManager { .setIntentAction(raw.intentAction) .setIntentTargetPackage(raw.intentTargetPackage) .setIntentTargetClass(raw.intentTargetClass) .setEnabled(raw.enabled) .setEnabled(enabled) .setKey(raw.key) .setUserId(raw.userId); Loading @@ -731,7 +731,7 @@ public class DatabaseIndexingManager { } final List<SearchIndexableResource> resList = provider.getXmlResourcesToIndex(context, enabled); provider.getXmlResourcesToIndex(mContext, true); if (resList != null) { final int resSize = resList.size(); for (int i = 0; i < resSize; i++) { Loading @@ -742,15 +742,10 @@ public class DatabaseIndexingManager { continue; } final int itemIconResId = (item.iconResId == 0) ? iconResId : item.iconResId; final int itemRank = (item.rank == 0) ? rank : item.rank; String itemClassName = (TextUtils.isEmpty(item.className)) ? className : item.className; item.iconResId = (item.iconResId == 0) ? iconResId : item.iconResId; item.className = (TextUtils.isEmpty(item.className)) ? className : item.className; indexFromResource(context, database, localeStr, item.xmlResId, itemClassName, itemIconResId, itemRank, item.intentAction, item.intentTargetPackage, item.intentTargetClass, nonIndexableKeys); indexFromResource(database, localeStr, item, nonIndexableKeys); } } } Loading
src/com/android/settings/search2/DatabaseResultLoader.java +2 −2 Original line number Diff line number Diff line Loading @@ -129,7 +129,6 @@ public class DatabaseResultLoader extends AsyncLoader<List<SearchResult>> { secondaryResults = query(MATCH_COLUMNS_SECONDARY, BASE_RANKS[1]); tertiaryResults = query(MATCH_COLUMNS_TERTIARY, BASE_RANKS[2]); final List<SearchResult> results = new ArrayList<>(primaryResults.size() + secondaryResults.size() + tertiaryResults.size()); Loading Loading @@ -167,7 +166,7 @@ public class DatabaseResultLoader extends AsyncLoader<List<SearchResult>> { } private static String buildWhereClause(String[] matchColumns) { StringBuilder sb = new StringBuilder(" "); StringBuilder sb = new StringBuilder(" ("); final int count = matchColumns.length; for (int n = 0; n < count; n++) { sb.append(matchColumns[n]); Loading @@ -176,6 +175,7 @@ public class DatabaseResultLoader extends AsyncLoader<List<SearchResult>> { sb.append(" OR "); } } sb.append(") AND enabled = 1"); return sb.toString(); } }
tests/robotests/src/com/android/settings/search/DatabaseIndexingManagerTest.java +48 −13 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Locale; import java.util.Map; import static com.android.settings.dashboard.SiteMapManager.SITE_MAP_COLUMNS; import static com.google.common.truth.Truth.assertThat; Loading @@ -51,7 +52,7 @@ import static org.mockito.Mockito.spy; public class DatabaseIndexingManagerTest { private final String localeStr = "en_US"; private final int rank = 42; private final int rank = 8; private final String title = "title\u2011title"; private final String updatedTitle = "title-title"; private final String normalizedTitle = "titletitle"; Loading Loading @@ -212,6 +213,20 @@ public class DatabaseIndexingManagerTest { assertThat(cursor.getCount()).isEqualTo(6); } @Test public void testAddResourceWithNIKs_RowsInsertedDisabled() { SearchIndexableResource resource = getFakeResource(R.xml.gesture_settings); // Only add 2 of 6 items to be disabled. String[] keys = {"gesture_double_tap_power", "gesture_swipe_down_fingerprint"}; Map<String, List<String>> niks = getNonIndexableKeys(keys); mManager.indexOneSearchIndexableData(mDb, localeStr, resource, niks); Cursor cursor = mDb.rawQuery("SELECT * FROM prefs_index WHERE enabled = 0", null); assertThat(cursor.getCount()).isEqualTo(2); cursor = mDb.rawQuery("SELECT * FROM prefs_index WHERE enabled = 1", null); assertThat(cursor.getCount()).isEqualTo(4); } @Test public void testAddResourceHeader_RowsMatch() { SearchIndexableResource resource = getFakeResource(R.xml.application_settings); Loading Loading @@ -529,21 +544,19 @@ public class DatabaseIndexingManagerTest { @Test public void testResourceProvider_ResourceRowInserted() { SearchIndexableResource resource = getFakeResource(R.xml.gesture_settings); resource.xmlResId = 0; SearchIndexableResource resource = getFakeResource(0); resource.className = "com.android.settings.LegalSettings"; mManager.indexOneSearchIndexableData(mDb, localeStr, resource, new HashMap<>()); Cursor cursor = mDb.rawQuery("SELECT * FROM prefs_index", null); assertThat(cursor.getCount()).isEqualTo(2); assertThat(cursor.getCount()).isEqualTo(6); } @Test public void testResourceProvider_ResourceRowMatches() { SearchIndexableResource resource = getFakeResource(R.xml.gesture_settings); resource.xmlResId = 0; resource.className = "com.android.settings.LegalSettings"; SearchIndexableResource resource = getFakeResource(0); resource.className = "com.android.settings.display.ScreenZoomSettings"; mManager.indexOneSearchIndexableData(mDb, localeStr, resource, new HashMap<>()); Loading @@ -555,9 +568,9 @@ public class DatabaseIndexingManagerTest { // Data Rank assertThat(cursor.getInt(1)).isEqualTo(rank); // Data Title assertThat(cursor.getString(2)).isEqualTo("Legal information"); assertThat(cursor.getString(2)).isEqualTo("Display size"); // Normalized Title assertThat(cursor.getString(3)).isEqualTo("legal information"); assertThat(cursor.getString(3)).isEqualTo("display size"); // Summary On assertThat(cursor.getString(4)).isEmpty(); // Summary On Normalized Loading @@ -569,12 +582,13 @@ public class DatabaseIndexingManagerTest { // Entries - only on for list preferences assertThat(cursor.getString(8)).isNull(); // Keywords assertThat(cursor.getString(9)).isEmpty(); assertThat(cursor.getString(9)).isEqualTo( "display density screen zoom scale scaling"); // Screen Title assertThat(cursor.getString(10)).isEqualTo("Legal information"); assertThat(cursor.getString(10)).isEqualTo("Display size"); // Class Name assertThat(cursor.getString(11)) .isEqualTo("com.android.settings.LegalSettings"); .isEqualTo("com.android.settings.display.ScreenZoomSettings"); // Icon assertThat(cursor.getInt(12)).isEqualTo(iconResId); // Intent Action Loading @@ -595,6 +609,20 @@ public class DatabaseIndexingManagerTest { assertThat(cursor.getBlob(20)).isNull(); } @Test public void testResourceProvider_DisabledResourceRowsInserted() { SearchIndexableResource resource = getFakeResource(0); resource.className = "com.android.settings.LegalSettings"; mManager.indexOneSearchIndexableData(mDb, localeStr, resource, new HashMap<String, List<String>>()); Cursor cursor = mDb.rawQuery("SELECT * FROM prefs_index WHERE enabled = 1", null); assertThat(cursor.getCount()).isEqualTo(2); cursor = mDb.rawQuery("SELECT * FROM prefs_index WHERE enabled = 0", null); assertThat(cursor.getCount()).isEqualTo(4); } // Util functions private SearchIndexableRaw getFakeRaw() { Loading Loading @@ -636,4 +664,11 @@ public class DatabaseIndexingManagerTest { sir.enabled = enabled; return sir; } private Map<String, List<String>> getNonIndexableKeys(String[] keys) { Map<String, List<String>> niks = new HashMap<>(); List<String> keysList = new ArrayList<>(Arrays.asList(keys)); niks.put(packageName, keysList); return niks; } } No newline at end of file
tests/robotests/src/com/android/settings/search/DatabaseResultLoaderTest.java +9 −9 Original line number Diff line number Diff line Loading @@ -80,26 +80,26 @@ public class DatabaseResultLoaderTest { @Test public void testMatchTitle() { loader = new DatabaseResultLoader(mContext, "title"); assertThat(loader.loadInBackground().size()).isEqualTo(3); verify(mSiteMapManager, times(3)).buildBreadCrumb(eq(mContext), anyString(), anyString()); assertThat(loader.loadInBackground().size()).isEqualTo(2); verify(mSiteMapManager, times(2)).buildBreadCrumb(eq(mContext), anyString(), anyString()); } @Test public void testMatchSummary() { loader = new DatabaseResultLoader(mContext, "summary"); assertThat(loader.loadInBackground().size()).isEqualTo(3); assertThat(loader.loadInBackground().size()).isEqualTo(2); } @Test public void testMatchKeywords() { loader = new DatabaseResultLoader(mContext, "keywords"); assertThat(loader.loadInBackground().size()).isEqualTo(3); assertThat(loader.loadInBackground().size()).isEqualTo(2); } @Test public void testMatchEntries() { loader = new DatabaseResultLoader(mContext, "entries"); assertThat(loader.loadInBackground().size()).isEqualTo(3); assertThat(loader.loadInBackground().size()).isEqualTo(2); } @Test Loading Loading @@ -167,7 +167,7 @@ public class DatabaseResultLoaderTest { values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_PACKAGE, ""); values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_CLASS, ""); values.put(IndexDatabaseHelper.IndexColumns.ICON, ""); values.put(IndexDatabaseHelper.IndexColumns.ENABLED, ""); values.put(IndexDatabaseHelper.IndexColumns.ENABLED, true); values.put(IndexDatabaseHelper.IndexColumns.DATA_KEY_REF, "gesture_double_tap_power"); values.put(IndexDatabaseHelper.IndexColumns.USER_ID, 0); values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD_TYPE, 0); Loading Loading @@ -196,7 +196,7 @@ public class DatabaseResultLoaderTest { values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_PACKAGE, ""); values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_CLASS, ""); values.put(IndexDatabaseHelper.IndexColumns.ICON, ""); values.put(IndexDatabaseHelper.IndexColumns.ENABLED, ""); values.put(IndexDatabaseHelper.IndexColumns.ENABLED, true); values.put(IndexDatabaseHelper.IndexColumns.DATA_KEY_REF, "gesture_double_tap_power"); values.put(IndexDatabaseHelper.IndexColumns.USER_ID, 0); values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD_TYPE, 0); Loading @@ -223,7 +223,7 @@ public class DatabaseResultLoaderTest { values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_PACKAGE, ""); values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_CLASS, ""); values.put(IndexDatabaseHelper.IndexColumns.ICON, ""); values.put(IndexDatabaseHelper.IndexColumns.ENABLED, ""); values.put(IndexDatabaseHelper.IndexColumns.ENABLED, true); values.put(IndexDatabaseHelper.IndexColumns.DATA_KEY_REF, "gesture_double_tap_power"); values.put(IndexDatabaseHelper.IndexColumns.USER_ID, 0); values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD_TYPE, 0); Loading @@ -249,7 +249,7 @@ public class DatabaseResultLoaderTest { values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_PACKAGE, ""); values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_CLASS, ""); values.put(IndexDatabaseHelper.IndexColumns.ICON, ""); values.put(IndexDatabaseHelper.IndexColumns.ENABLED, ""); values.put(IndexDatabaseHelper.IndexColumns.ENABLED, false); values.put(IndexDatabaseHelper.IndexColumns.DATA_KEY_REF, "gesture_double_tap_power"); values.put(IndexDatabaseHelper.IndexColumns.USER_ID, 0); values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD_TYPE, 0); Loading