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

Commit 5a346afa authored by Satoshi Kataoka's avatar Satoshi Kataoka
Browse files

Fix exact match profanity

Bug: 8661070

This is a revival version of I421bed14cc71af771510142365

No diff in the test

Change-Id: I96bc9cec531682cce78bcf83223dcd2395b2be77
parent 4ddf1e47
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -163,9 +163,14 @@ int Suggest::outputSuggestions(DicTraverseSession *traverseSession, int *frequen
                terminalDicNode->getFlags(), terminalDicNode->getAttributesPos());
        const bool isPossiblyOffensiveWord = terminalDicNode->getProbability() <= 0;
        const bool isExactMatch = terminalDicNode->isExactMatch();
        const bool isFirstCharUppercase = terminalDicNode->isFirstCharUppercase();
        // Heuristic: We exclude freq=0 first-char-uppercase words from exact match.
        // (e.g. "AMD" and "and")
        const bool isSafeExactMatch = isExactMatch
                && !(isPossiblyOffensiveWord && isFirstCharUppercase);
        const int outputTypeFlags =
                isPossiblyOffensiveWord ? Dictionary::KIND_FLAG_POSSIBLY_OFFENSIVE : 0
                | isExactMatch ? Dictionary::KIND_FLAG_EXACT_MATCH : 0;
                (isPossiblyOffensiveWord ? Dictionary::KIND_FLAG_POSSIBLY_OFFENSIVE : 0)
                | (isSafeExactMatch ? Dictionary::KIND_FLAG_EXACT_MATCH : 0);

        // Entries that are blacklisted or do not represent a word should not be output.
        const bool isValidWord = !terminalAttributes.isBlacklistedOrNotAWord();