Check non-indexable keys for raw data
Change-Id: I182f6757cae0ccdd07c2c38ea0f02bd4998f79be Fixes: 63360455 Test: make RunSettingsRoboTests
This commit is contained in:
@@ -617,17 +617,24 @@ public class DatabaseIndexingManager {
|
|||||||
if (data instanceof SearchIndexableResource) {
|
if (data instanceof SearchIndexableResource) {
|
||||||
indexOneResource(database, localeStr, (SearchIndexableResource) data, nonIndexableKeys);
|
indexOneResource(database, localeStr, (SearchIndexableResource) data, nonIndexableKeys);
|
||||||
} else if (data instanceof SearchIndexableRaw) {
|
} else if (data instanceof SearchIndexableRaw) {
|
||||||
indexOneRaw(database, localeStr, (SearchIndexableRaw) data);
|
indexOneRaw(database, localeStr, (SearchIndexableRaw) data, nonIndexableKeys);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void indexOneRaw(SQLiteDatabase database, String localeStr,
|
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
|
// Should be the same locale as the one we are processing
|
||||||
if (!raw.locale.toString().equalsIgnoreCase(localeStr)) {
|
if (!raw.locale.toString().equalsIgnoreCase(localeStr)) {
|
||||||
return;
|
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();
|
DatabaseRow.Builder builder = new DatabaseRow.Builder();
|
||||||
builder.setLocale(localeStr)
|
builder.setLocale(localeStr)
|
||||||
.setEntries(raw.entries)
|
.setEntries(raw.entries)
|
||||||
@@ -638,7 +645,7 @@ public class DatabaseIndexingManager {
|
|||||||
.setIntentAction(raw.intentAction)
|
.setIntentAction(raw.intentAction)
|
||||||
.setIntentTargetPackage(raw.intentTargetPackage)
|
.setIntentTargetPackage(raw.intentTargetPackage)
|
||||||
.setIntentTargetClass(raw.intentTargetClass)
|
.setIntentTargetClass(raw.intentTargetClass)
|
||||||
.setEnabled(raw.enabled)
|
.setEnabled(enabled)
|
||||||
.setKey(raw.key)
|
.setKey(raw.key)
|
||||||
.setUserId(raw.userId);
|
.setUserId(raw.userId);
|
||||||
|
|
||||||
|
@@ -177,15 +177,30 @@ public class DatabaseIndexingManagerTest {
|
|||||||
@Test
|
@Test
|
||||||
public void testInsertRawColumn_rowInserted() {
|
public void testInsertRawColumn_rowInserted() {
|
||||||
SearchIndexableRaw raw = getFakeRaw();
|
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 cursor = mDb.rawQuery("SELECT * FROM prefs_index", null);
|
||||||
assertThat(cursor.getCount()).isEqualTo(1);
|
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
|
@Test
|
||||||
public void testInsertRawColumn_rowMatches() {
|
public void testInsertRawColumn_rowMatches() {
|
||||||
SearchIndexableRaw raw = getFakeRaw();
|
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 cursor = mDb.rawQuery("SELECT * FROM prefs_index", null);
|
||||||
cursor.moveToPosition(0);
|
cursor.moveToPosition(0);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user