Loading src/com/android/settings/search/DatabaseIndexingManager.java +10 −3 Original line number Diff line number Diff line Loading @@ -617,17 +617,24 @@ public class DatabaseIndexingManager { if (data instanceof SearchIndexableResource) { indexOneResource(database, localeStr, (SearchIndexableResource) data, nonIndexableKeys); } else if (data instanceof SearchIndexableRaw) { indexOneRaw(database, localeStr, (SearchIndexableRaw) data); indexOneRaw(database, localeStr, (SearchIndexableRaw) data, nonIndexableKeys); } } private void indexOneRaw(SQLiteDatabase database, String localeStr, SearchIndexableRaw raw) { SearchIndexableRaw raw, Map<String, Set<String>> nonIndexableKeysFromResource) { // Should be the same locale as the one we are processing if (!raw.locale.toString().equalsIgnoreCase(localeStr)) { return; } Set<String> packageKeys = nonIndexableKeysFromResource.get(raw.intentTargetPackage); boolean enabled = raw.enabled; if (packageKeys != null && packageKeys.contains(raw.key)) { enabled = false; } DatabaseRow.Builder builder = new DatabaseRow.Builder(); builder.setLocale(localeStr) .setEntries(raw.entries) Loading @@ -638,7 +645,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 tests/robotests/src/com/android/settings/search/DatabaseIndexingManagerTest.java +17 −2 Original line number Diff line number Diff line Loading @@ -177,15 +177,30 @@ public class DatabaseIndexingManagerTest { @Test public void testInsertRawColumn_rowInserted() { SearchIndexableRaw raw = getFakeRaw(); mManager.indexOneSearchIndexableData(mDb, localeStr, raw, null /* Non-indexable keys */); mManager.indexOneSearchIndexableData(mDb, localeStr, raw, new HashMap<>()/* Non-indexable keys */); Cursor cursor = mDb.rawQuery("SELECT * FROM prefs_index", null); assertThat(cursor.getCount()).isEqualTo(1); } @Test public void testInsertRawColumn_nonIndexableKey_resultIsDisabled() { SearchIndexableRaw raw = getFakeRaw(); Map<String, Set<String>> niks = new HashMap<>(); Set<String> keys = new HashSet<>(); keys.add(raw.key); niks.put(raw.intentTargetPackage, keys); mManager.indexOneSearchIndexableData(mDb, localeStr, raw, niks); Cursor cursor = mDb.rawQuery("SELECT * FROM prefs_index WHERE enabled = 0", null); assertThat(cursor.getCount()).isEqualTo(1); } @Test public void testInsertRawColumn_rowMatches() { SearchIndexableRaw raw = getFakeRaw(); mManager.indexOneSearchIndexableData(mDb, localeStr, raw, null /* Non-indexable keys */); mManager.indexOneSearchIndexableData(mDb, localeStr, raw, new HashMap<>()/* Non-indexable keys */); Cursor cursor = mDb.rawQuery("SELECT * FROM prefs_index", null); cursor.moveToPosition(0); Loading Loading
src/com/android/settings/search/DatabaseIndexingManager.java +10 −3 Original line number Diff line number Diff line Loading @@ -617,17 +617,24 @@ public class DatabaseIndexingManager { if (data instanceof SearchIndexableResource) { indexOneResource(database, localeStr, (SearchIndexableResource) data, nonIndexableKeys); } else if (data instanceof SearchIndexableRaw) { indexOneRaw(database, localeStr, (SearchIndexableRaw) data); indexOneRaw(database, localeStr, (SearchIndexableRaw) data, nonIndexableKeys); } } private void indexOneRaw(SQLiteDatabase database, String localeStr, SearchIndexableRaw raw) { SearchIndexableRaw raw, Map<String, Set<String>> nonIndexableKeysFromResource) { // Should be the same locale as the one we are processing if (!raw.locale.toString().equalsIgnoreCase(localeStr)) { return; } Set<String> packageKeys = nonIndexableKeysFromResource.get(raw.intentTargetPackage); boolean enabled = raw.enabled; if (packageKeys != null && packageKeys.contains(raw.key)) { enabled = false; } DatabaseRow.Builder builder = new DatabaseRow.Builder(); builder.setLocale(localeStr) .setEntries(raw.entries) Loading @@ -638,7 +645,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
tests/robotests/src/com/android/settings/search/DatabaseIndexingManagerTest.java +17 −2 Original line number Diff line number Diff line Loading @@ -177,15 +177,30 @@ public class DatabaseIndexingManagerTest { @Test public void testInsertRawColumn_rowInserted() { SearchIndexableRaw raw = getFakeRaw(); mManager.indexOneSearchIndexableData(mDb, localeStr, raw, null /* Non-indexable keys */); mManager.indexOneSearchIndexableData(mDb, localeStr, raw, new HashMap<>()/* Non-indexable keys */); Cursor cursor = mDb.rawQuery("SELECT * FROM prefs_index", null); assertThat(cursor.getCount()).isEqualTo(1); } @Test public void testInsertRawColumn_nonIndexableKey_resultIsDisabled() { SearchIndexableRaw raw = getFakeRaw(); Map<String, Set<String>> niks = new HashMap<>(); Set<String> keys = new HashSet<>(); keys.add(raw.key); niks.put(raw.intentTargetPackage, keys); mManager.indexOneSearchIndexableData(mDb, localeStr, raw, niks); Cursor cursor = mDb.rawQuery("SELECT * FROM prefs_index WHERE enabled = 0", null); assertThat(cursor.getCount()).isEqualTo(1); } @Test public void testInsertRawColumn_rowMatches() { SearchIndexableRaw raw = getFakeRaw(); mManager.indexOneSearchIndexableData(mDb, localeStr, raw, null /* Non-indexable keys */); mManager.indexOneSearchIndexableData(mDb, localeStr, raw, new HashMap<>()/* Non-indexable keys */); Cursor cursor = mDb.rawQuery("SELECT * FROM prefs_index", null); cursor.moveToPosition(0); Loading