Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 24ba2fbd authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

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

parents 947cb367 bdd57aad
Loading
Loading
Loading
Loading
+10 −3
Original line number Diff line number Diff line
@@ -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);

+17 −2
Original line number Diff line number Diff line
@@ -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);