Merge "Check non-indexable keys for raw data" into oc-dr1-dev

am: 24ba2fbdb9

Change-Id: Iab0cb32e75fabda8e2c411391d0693107fa9d2ed
This commit is contained in:
Matthew Fritze
2017-07-06 17:37:46 +00:00
committed by android-build-merger
2 changed files with 27 additions and 5 deletions

View File

@@ -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)
@@ -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);

View File

@@ -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);