aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIME.java43
-rw-r--r--native/jni/src/suggest/core/dicnode/dic_node.h11
-rw-r--r--native/jni/src/suggest/core/dicnode/dic_node_release_listener.h2
-rw-r--r--native/jni/src/suggest/core/dicnode/dic_node_utils.cpp67
-rw-r--r--native/jni/src/suggest/core/dicnode/dic_node_utils.h6
-rw-r--r--native/jni/src/suggest/core/dicnode/dic_node_vector.h2
-rw-r--r--native/jni/src/suggest/core/dicnode/internal/dic_node_properties.h (renamed from native/jni/src/suggest/core/dicnode/dic_node_properties.h)0
-rw-r--r--native/jni/src/suggest/core/dicnode/internal/dic_node_state.h (renamed from native/jni/src/suggest/core/dicnode/dic_node_state.h)8
-rw-r--r--native/jni/src/suggest/core/dicnode/internal/dic_node_state_input.h (renamed from native/jni/src/suggest/core/dicnode/dic_node_state_input.h)0
-rw-r--r--native/jni/src/suggest/core/dicnode/internal/dic_node_state_output.h (renamed from native/jni/src/suggest/core/dicnode/dic_node_state_output.h)0
-rw-r--r--native/jni/src/suggest/core/dicnode/internal/dic_node_state_prevword.h (renamed from native/jni/src/suggest/core/dicnode/dic_node_state_prevword.h)0
-rw-r--r--native/jni/src/suggest/core/dicnode/internal/dic_node_state_scoring.h (renamed from native/jni/src/suggest/core/dicnode/dic_node_state_scoring.h)0
-rw-r--r--native/jni/src/suggest/policyimpl/dictionary/patricia_trie_policy.cpp57
-rw-r--r--native/jni/src/suggest/policyimpl/dictionary/patricia_trie_policy.h4
-rw-r--r--tests/src/com/android/inputmethod/latin/InputTestsBase.java4
15 files changed, 105 insertions, 99 deletions
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index b28406bad..9366abd73 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -155,7 +155,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
private SuggestionStripView mSuggestionStripView;
// Never null
private SuggestedWords mSuggestedWords = SuggestedWords.EMPTY;
- @UsedForTesting Suggest mSuggest;
+ private Suggest mSuggest;
private CompletionInfo[] mApplicationSpecifiedCompletions;
private AppWorkaroundsUtils mAppWorkAroundsUtils = new AppWorkaroundsUtils();
@@ -714,7 +714,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
super.onStartInputView(editorInfo, restarting);
final KeyboardSwitcher switcher = mKeyboardSwitcher;
final MainKeyboardView mainKeyboardView = switcher.getMainKeyboardView();
- final SettingsValues currentSettings = mSettings.getCurrent();
+ final SettingsValues currentSettingsValues = mSettings.getCurrent();
if (editorInfo == null) {
Log.e(TAG, "Null EditorInfo in onStartInputView()");
@@ -769,7 +769,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
accessUtils.onStartInputViewInternal(mainKeyboardView, editorInfo, restarting);
}
- final boolean inputTypeChanged = !currentSettings.isSameInputType(editorInfo);
+ final boolean inputTypeChanged = !currentSettingsValues.isSameInputType(editorInfo);
final boolean isDifferentTextField = !restarting || inputTypeChanged;
if (isDifferentTextField) {
mSubtypeSwitcher.updateParametersOnStartInputView();
@@ -808,12 +808,12 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
if (isDifferentTextField) {
mainKeyboardView.closing();
loadSettings();
-
- if (mSuggest != null && currentSettings.mCorrectionEnabled) {
- mSuggest.setAutoCorrectionThreshold(currentSettings.mAutoCorrectionThreshold);
+ // TODO: Need to update currentSettingsValues after loadSettings()
+ if (mSuggest != null && currentSettingsValues.mCorrectionEnabled) {
+ mSuggest.setAutoCorrectionThreshold(currentSettingsValues.mAutoCorrectionThreshold);
}
- switcher.loadKeyboard(editorInfo, currentSettings);
+ switcher.loadKeyboard(editorInfo, currentSettingsValues);
} else if (restarting) {
// TODO: Come up with a more comprehensive way to reset the keyboard layout when
// a keyboard layout set doesn't get reloaded in this method.
@@ -834,14 +834,14 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
mHandler.cancelDoubleSpacePeriodTimer();
mainKeyboardView.setMainDictionaryAvailability(mIsMainDictionaryAvailable);
- mainKeyboardView.setKeyPreviewPopupEnabled(currentSettings.mKeyPreviewPopupOn,
- currentSettings.mKeyPreviewPopupDismissDelay);
+ mainKeyboardView.setKeyPreviewPopupEnabled(currentSettingsValues.mKeyPreviewPopupOn,
+ currentSettingsValues.mKeyPreviewPopupDismissDelay);
mainKeyboardView.setSlidingKeyInputPreviewEnabled(
- currentSettings.mSlidingKeyInputPreviewEnabled);
+ currentSettingsValues.mSlidingKeyInputPreviewEnabled);
mainKeyboardView.setGestureHandlingEnabledByUser(
- currentSettings.mGestureInputEnabled);
- mainKeyboardView.setGesturePreviewMode(currentSettings.mGesturePreviewTrailEnabled,
- currentSettings.mGestureFloatingPreviewTextEnabled);
+ currentSettingsValues.mGestureInputEnabled);
+ mainKeyboardView.setGesturePreviewMode(currentSettingsValues.mGesturePreviewTrailEnabled,
+ currentSettingsValues.mGestureFloatingPreviewTextEnabled);
// If we have a user dictionary addition in progress, we should check now if we should
// replace the previously committed string with the word that has actually been added
@@ -2243,7 +2243,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
private SuggestedWords getSuggestedWords(final int sessionId) {
final Keyboard keyboard = mKeyboardSwitcher.getKeyboard();
- if (keyboard == null || mSuggest == null) {
+ final Suggest suggest = mSuggest;
+ if (keyboard == null || suggest == null) {
return SuggestedWords.EMPTY;
}
// Get the word on which we should search the bigrams. If we are composing a word, it's
@@ -2253,7 +2254,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
final String prevWord =
mConnection.getNthPreviousWord(mSettings.getCurrent().mWordSeparators,
mWordComposer.isComposingWord() ? 2 : 1);
- return mSuggest.getSuggestedWords(mWordComposer, prevWord, keyboard.getProximityInfo(),
+ return suggest.getSuggestedWords(mWordComposer, prevWord, keyboard.getProximityInfo(),
mSettings.getBlockPotentiallyOffensive(),
mSettings.getCurrent().mCorrectionEnabled, sessionId);
}
@@ -2857,6 +2858,18 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
return mSuggestedWords.size() > 0 ? mSuggestedWords.getWord(0) : null;
}
+ // DO NOT USE THIS for any other purpose than testing. This is information private to LatinIME.
+ @UsedForTesting
+ /* package for test */ boolean isCurrentlyWaitingForMainDictionary() {
+ return mSuggest.isCurrentlyWaitingForMainDictionary();
+ }
+
+ // DO NOT USE THIS for any other purpose than testing. This is information private to LatinIME.
+ @UsedForTesting
+ /* package for test */ boolean hasMainDictionary() {
+ return mSuggest.hasMainDictionary();
+ }
+
public void debugDumpStateAndCrashWithException(final String context) {
final StringBuilder s = new StringBuilder(mAppWorkAroundsUtils.toString());
s.append("\nAttributes : ").append(mSettings.getCurrent().mInputAttributes)
diff --git a/native/jni/src/suggest/core/dicnode/dic_node.h b/native/jni/src/suggest/core/dicnode/dic_node.h
index cbed2043c..cdd9f59aa 100644
--- a/native/jni/src/suggest/core/dicnode/dic_node.h
+++ b/native/jni/src/suggest/core/dicnode/dic_node.h
@@ -18,10 +18,10 @@
#define LATINIME_DIC_NODE_H
#include "defines.h"
-#include "suggest/core/dicnode/dic_node_state.h"
#include "suggest/core/dicnode/dic_node_profiler.h"
-#include "suggest/core/dicnode/dic_node_properties.h"
#include "suggest/core/dicnode/dic_node_release_listener.h"
+#include "suggest/core/dicnode/internal/dic_node_state.h"
+#include "suggest/core/dicnode/internal/dic_node_properties.h"
#include "suggest/core/dictionary/digraph_utils.h"
#include "utils/char_utils.h"
@@ -157,9 +157,10 @@ class DicNode {
PROF_NODE_COPY(&parentNode->mProfiler, mProfiler);
}
- void initAsChild(DicNode *dicNode, const int pos, const int childrenPos, const int probability,
- const bool isTerminal, const bool hasChildren, const bool isBlacklistedOrNotAWord,
- const uint16_t mergedNodeCodePointCount, const int *const mergedNodeCodePoints) {
+ void initAsChild(const DicNode *const dicNode, const int pos, const int childrenPos,
+ const int probability, const bool isTerminal, const bool hasChildren,
+ const bool isBlacklistedOrNotAWord, const uint16_t mergedNodeCodePointCount,
+ const int *const mergedNodeCodePoints) {
mIsUsed = true;
uint16_t newDepth = static_cast<uint16_t>(dicNode->getNodeCodePointCount() + 1);
mIsCachedForNextSuggestion = dicNode->mIsCachedForNextSuggestion;
diff --git a/native/jni/src/suggest/core/dicnode/dic_node_release_listener.h b/native/jni/src/suggest/core/dicnode/dic_node_release_listener.h
index 2a81c3cae..2ca4f21bd 100644
--- a/native/jni/src/suggest/core/dicnode/dic_node_release_listener.h
+++ b/native/jni/src/suggest/core/dicnode/dic_node_release_listener.h
@@ -21,6 +21,8 @@
namespace latinime {
+class DicNode;
+
class DicNodeReleaseListener {
public:
DicNodeReleaseListener() {}
diff --git a/native/jni/src/suggest/core/dicnode/dic_node_utils.cpp b/native/jni/src/suggest/core/dicnode/dic_node_utils.cpp
index 071344296..f3b110bbb 100644
--- a/native/jni/src/suggest/core/dicnode/dic_node_utils.cpp
+++ b/native/jni/src/suggest/core/dicnode/dic_node_utils.cpp
@@ -22,7 +22,6 @@
#include "suggest/core/dicnode/dic_node_proximity_filter.h"
#include "suggest/core/dicnode/dic_node_vector.h"
#include "suggest/core/dictionary/binary_dictionary_info.h"
-#include "suggest/core/dictionary/binary_format.h"
#include "suggest/core/dictionary/multi_bigram_map.h"
#include "suggest/core/dictionary/probability_utils.h"
#include "suggest/core/policy/dictionary_structure_policy.h"
@@ -67,68 +66,6 @@ namespace latinime {
}
}
-/* static */ int DicNodeUtils::createAndGetLeavingChildNode(DicNode *dicNode, int pos,
- const BinaryDictionaryInfo *const binaryDictionaryInfo,
- const DicNodeProximityFilter *const childrenFilter,
- DicNodeVector *childDicNodes) {
- int nextPos = pos;
- const uint8_t flags = BinaryFormat::getFlagsAndForwardPointer(
- binaryDictionaryInfo->getDictRoot(), &pos);
- const bool hasMultipleChars = (0 != (BinaryFormat::FLAG_HAS_MULTIPLE_CHARS & flags));
- const bool isTerminal = (0 != (BinaryFormat::FLAG_IS_TERMINAL & flags));
- const bool hasChildren = BinaryFormat::hasChildrenInFlags(flags);
- const bool isBlacklistedOrNotAWord = BinaryFormat::hasBlacklistedOrNotAWordFlag(flags);
-
- int codePoint = BinaryFormat::getCodePointAndForwardPointer(
- binaryDictionaryInfo->getDictRoot(), &pos);
- ASSERT(NOT_A_CODE_POINT != codePoint);
- // TODO: optimize this
- int mergedNodeCodePoints[MAX_WORD_LENGTH];
- uint16_t mergedNodeCodePointCount = 0;
- mergedNodeCodePoints[mergedNodeCodePointCount++] = codePoint;
-
- do {
- const int nextCodePoint = hasMultipleChars
- ? BinaryFormat::getCodePointAndForwardPointer(
- binaryDictionaryInfo->getDictRoot(), &pos) : NOT_A_CODE_POINT;
- const bool isLastChar = (NOT_A_CODE_POINT == nextCodePoint);
- if (!isLastChar) {
- mergedNodeCodePoints[mergedNodeCodePointCount++] = nextCodePoint;
- }
- codePoint = nextCodePoint;
- } while (NOT_A_CODE_POINT != codePoint);
-
- const int probability = isTerminal ? BinaryFormat::readProbabilityWithoutMovingPointer(
- binaryDictionaryInfo->getDictRoot(), pos) : NOT_A_PROBABILITY;
- pos = BinaryFormat::skipProbability(flags, pos);
- int childrenPos = hasChildren ? BinaryFormat::readChildrenPosition(
- binaryDictionaryInfo->getDictRoot(), flags, pos) : NOT_A_DICT_POS;
- const int siblingPos = BinaryFormat::skipChildrenPosAndAttributes(
- binaryDictionaryInfo->getDictRoot(), flags, pos);
-
- if (childrenFilter->isFilteredOut(mergedNodeCodePoints[0])) {
- return siblingPos;
- }
- childDicNodes->pushLeavingChild(dicNode, nextPos, childrenPos, probability, isTerminal,
- hasChildren, isBlacklistedOrNotAWord, mergedNodeCodePointCount, mergedNodeCodePoints);
- return siblingPos;
-}
-
-/* static */ void DicNodeUtils::createAndGetAllLeavingChildNodes(DicNode *dicNode,
- const BinaryDictionaryInfo *const binaryDictionaryInfo,
- const DicNodeProximityFilter *const childrenFilter, DicNodeVector *childDicNodes) {
- if (!dicNode->hasChildren()) {
- return;
- }
- int nextPos = dicNode->getChildrenPos();
- const int childCount = BinaryFormat::getGroupCountAndForwardPointer(
- binaryDictionaryInfo->getDictRoot(), &nextPos);
- for (int i = 0; i < childCount; i++) {
- nextPos = createAndGetLeavingChildNode(dicNode, nextPos, binaryDictionaryInfo,
- childrenFilter, childDicNodes);
- }
-}
-
/* static */ void DicNodeUtils::getAllChildDicNodes(DicNode *dicNode,
const BinaryDictionaryInfo *const binaryDictionaryInfo, DicNodeVector *childDicNodes) {
getProximityChildDicNodes(dicNode, binaryDictionaryInfo, 0, 0, false, childDicNodes);
@@ -145,8 +82,8 @@ namespace latinime {
if (!dicNode->isLeavingNode()) {
DicNodeUtils::createAndGetPassingChildNode(dicNode, &childrenFilter, childDicNodes);
} else {
- DicNodeUtils::createAndGetAllLeavingChildNodes(
- dicNode, binaryDictionaryInfo, &childrenFilter, childDicNodes);
+ binaryDictionaryInfo->getStructurePolicy()->createAndGetAllChildNodes(dicNode,
+ binaryDictionaryInfo, &childrenFilter, childDicNodes);
}
}
diff --git a/native/jni/src/suggest/core/dicnode/dic_node_utils.h b/native/jni/src/suggest/core/dicnode/dic_node_utils.h
index 7b567b582..4f12b29f4 100644
--- a/native/jni/src/suggest/core/dicnode/dic_node_utils.h
+++ b/native/jni/src/suggest/core/dicnode/dic_node_utils.h
@@ -58,12 +58,6 @@ class DicNodeUtils {
const DicNode *const node, MultiBigramMap *multiBigramMap);
static void createAndGetPassingChildNode(DicNode *dicNode,
const DicNodeProximityFilter *const childrenFilter, DicNodeVector *childDicNodes);
- static void createAndGetAllLeavingChildNodes(DicNode *dicNode,
- const BinaryDictionaryInfo *const binaryDictionaryInfo,
- const DicNodeProximityFilter *const childrenFilter, DicNodeVector *childDicNodes);
- static int createAndGetLeavingChildNode(DicNode *dicNode, int pos,
- const BinaryDictionaryInfo *const binaryDictionaryInfo,
- const DicNodeProximityFilter *const childrenFilter, DicNodeVector *childDicNodes);
};
} // namespace latinime
#endif // LATINIME_DIC_NODE_UTILS_H
diff --git a/native/jni/src/suggest/core/dicnode/dic_node_vector.h b/native/jni/src/suggest/core/dicnode/dic_node_vector.h
index 2ba4e5e95..42addae8d 100644
--- a/native/jni/src/suggest/core/dicnode/dic_node_vector.h
+++ b/native/jni/src/suggest/core/dicnode/dic_node_vector.h
@@ -62,7 +62,7 @@ class DicNodeVector {
mDicNodes.back().initAsPassingChild(dicNode);
}
- void pushLeavingChild(DicNode *dicNode, const int pos, const int childrenPos,
+ void pushLeavingChild(const DicNode *const dicNode, const int pos, const int childrenPos,
const int probability, const bool isTerminal, const bool hasChildren,
const bool isBlacklistedOrNotAWord, const uint16_t mergedNodeCodePointCount,
const int *const mergedNodeCodePoints) {
diff --git a/native/jni/src/suggest/core/dicnode/dic_node_properties.h b/native/jni/src/suggest/core/dicnode/internal/dic_node_properties.h
index 9e0f62ceb..9e0f62ceb 100644
--- a/native/jni/src/suggest/core/dicnode/dic_node_properties.h
+++ b/native/jni/src/suggest/core/dicnode/internal/dic_node_properties.h
diff --git a/native/jni/src/suggest/core/dicnode/dic_node_state.h b/native/jni/src/suggest/core/dicnode/internal/dic_node_state.h
index b1b6266f2..b0fddb724 100644
--- a/native/jni/src/suggest/core/dicnode/dic_node_state.h
+++ b/native/jni/src/suggest/core/dicnode/internal/dic_node_state.h
@@ -18,10 +18,10 @@
#define LATINIME_DIC_NODE_STATE_H
#include "defines.h"
-#include "suggest/core/dicnode/dic_node_state_input.h"
-#include "suggest/core/dicnode/dic_node_state_output.h"
-#include "suggest/core/dicnode/dic_node_state_prevword.h"
-#include "suggest/core/dicnode/dic_node_state_scoring.h"
+#include "suggest/core/dicnode/internal/dic_node_state_input.h"
+#include "suggest/core/dicnode/internal/dic_node_state_output.h"
+#include "suggest/core/dicnode/internal/dic_node_state_prevword.h"
+#include "suggest/core/dicnode/internal/dic_node_state_scoring.h"
namespace latinime {
diff --git a/native/jni/src/suggest/core/dicnode/dic_node_state_input.h b/native/jni/src/suggest/core/dicnode/internal/dic_node_state_input.h
index bbd9435b5..bbd9435b5 100644
--- a/native/jni/src/suggest/core/dicnode/dic_node_state_input.h
+++ b/native/jni/src/suggest/core/dicnode/internal/dic_node_state_input.h
diff --git a/native/jni/src/suggest/core/dicnode/dic_node_state_output.h b/native/jni/src/suggest/core/dicnode/internal/dic_node_state_output.h
index 45c7f5cf9..45c7f5cf9 100644
--- a/native/jni/src/suggest/core/dicnode/dic_node_state_output.h
+++ b/native/jni/src/suggest/core/dicnode/internal/dic_node_state_output.h
diff --git a/native/jni/src/suggest/core/dicnode/dic_node_state_prevword.h b/native/jni/src/suggest/core/dicnode/internal/dic_node_state_prevword.h
index 5854f4f6e..5854f4f6e 100644
--- a/native/jni/src/suggest/core/dicnode/dic_node_state_prevword.h
+++ b/native/jni/src/suggest/core/dicnode/internal/dic_node_state_prevword.h
diff --git a/native/jni/src/suggest/core/dicnode/dic_node_state_scoring.h b/native/jni/src/suggest/core/dicnode/internal/dic_node_state_scoring.h
index 4c884225a..4c884225a 100644
--- a/native/jni/src/suggest/core/dicnode/dic_node_state_scoring.h
+++ b/native/jni/src/suggest/core/dicnode/internal/dic_node_state_scoring.h
diff --git a/native/jni/src/suggest/policyimpl/dictionary/patricia_trie_policy.cpp b/native/jni/src/suggest/policyimpl/dictionary/patricia_trie_policy.cpp
index 24de9dcd9..450f6d2ec 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/patricia_trie_policy.cpp
+++ b/native/jni/src/suggest/policyimpl/dictionary/patricia_trie_policy.cpp
@@ -30,7 +30,16 @@ const PatriciaTriePolicy PatriciaTriePolicy::sInstance;
void PatriciaTriePolicy::createAndGetAllChildNodes(const DicNode *const dicNode,
const BinaryDictionaryInfo *const binaryDictionaryInfo,
const NodeFilter *const nodeFilter, DicNodeVector *const childDicNodes) const {
- // TODO: Move children creating methods form DicNodeUtils.
+ if (!dicNode->hasChildren()) {
+ return;
+ }
+ int nextPos = dicNode->getChildrenPos();
+ const int childCount = BinaryFormat::getGroupCountAndForwardPointer(
+ binaryDictionaryInfo->getDictRoot(), &nextPos);
+ for (int i = 0; i < childCount; i++) {
+ nextPos = createAndGetLeavingChildNode(dicNode, nextPos, binaryDictionaryInfo,
+ nodeFilter, childDicNodes);
+ }
}
int PatriciaTriePolicy::getCodePointsAndProbabilityAndReturnCodePointCount(
@@ -83,4 +92,50 @@ int PatriciaTriePolicy::getBigramsPositionOfNode(
binaryDictionaryInfo->getDictRoot(), nodePos);
}
+int PatriciaTriePolicy::createAndGetLeavingChildNode(const DicNode *const dicNode, int pos,
+ const BinaryDictionaryInfo *const binaryDictionaryInfo,
+ const NodeFilter *const childrenFilter, DicNodeVector *childDicNodes) const {
+ const int nextPos = pos;
+ const uint8_t flags = BinaryFormat::getFlagsAndForwardPointer(
+ binaryDictionaryInfo->getDictRoot(), &pos);
+ const bool hasMultipleChars = (0 != (BinaryFormat::FLAG_HAS_MULTIPLE_CHARS & flags));
+ const bool isTerminal = (0 != (BinaryFormat::FLAG_IS_TERMINAL & flags));
+ const bool hasChildren = BinaryFormat::hasChildrenInFlags(flags);
+ const bool isBlacklistedOrNotAWord = BinaryFormat::hasBlacklistedOrNotAWordFlag(flags);
+
+ int codePoint = BinaryFormat::getCodePointAndForwardPointer(
+ binaryDictionaryInfo->getDictRoot(), &pos);
+ ASSERT(NOT_A_CODE_POINT != codePoint);
+ // TODO: optimize this
+ int mergedNodeCodePoints[MAX_WORD_LENGTH];
+ uint16_t mergedNodeCodePointCount = 0;
+ mergedNodeCodePoints[mergedNodeCodePointCount++] = codePoint;
+
+ do {
+ const int nextCodePoint = hasMultipleChars
+ ? BinaryFormat::getCodePointAndForwardPointer(
+ binaryDictionaryInfo->getDictRoot(), &pos) : NOT_A_CODE_POINT;
+ const bool isLastChar = (NOT_A_CODE_POINT == nextCodePoint);
+ if (!isLastChar) {
+ mergedNodeCodePoints[mergedNodeCodePointCount++] = nextCodePoint;
+ }
+ codePoint = nextCodePoint;
+ } while (NOT_A_CODE_POINT != codePoint);
+
+ const int probability = isTerminal ? BinaryFormat::readProbabilityWithoutMovingPointer(
+ binaryDictionaryInfo->getDictRoot(), pos) : NOT_A_PROBABILITY;
+ pos = BinaryFormat::skipProbability(flags, pos);
+ int childrenPos = hasChildren ? BinaryFormat::readChildrenPosition(
+ binaryDictionaryInfo->getDictRoot(), flags, pos) : NOT_A_DICT_POS;
+ const int siblingPos = BinaryFormat::skipChildrenPosAndAttributes(
+ binaryDictionaryInfo->getDictRoot(), flags, pos);
+
+ if (childrenFilter->isFilteredOut(mergedNodeCodePoints[0])) {
+ return siblingPos;
+ }
+ childDicNodes->pushLeavingChild(dicNode, nextPos, childrenPos, probability, isTerminal,
+ hasChildren, isBlacklistedOrNotAWord, mergedNodeCodePointCount, mergedNodeCodePoints);
+ return siblingPos;
+}
+
} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/patricia_trie_policy.h b/native/jni/src/suggest/policyimpl/dictionary/patricia_trie_policy.h
index 8f36fe00e..42827d93a 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/patricia_trie_policy.h
+++ b/native/jni/src/suggest/policyimpl/dictionary/patricia_trie_policy.h
@@ -60,6 +60,10 @@ class PatriciaTriePolicy : public DictionaryStructurePolicy {
PatriciaTriePolicy() {}
~PatriciaTriePolicy() {}
+
+ int createAndGetLeavingChildNode(const DicNode *const dicNode, int pos,
+ const BinaryDictionaryInfo *const binaryDictionaryInfo,
+ const NodeFilter *const nodeFilter, DicNodeVector *const childDicNodes) const;
};
} // namespace latinime
#endif // LATINIME_PATRICIA_TRIE_POLICY_H
diff --git a/tests/src/com/android/inputmethod/latin/InputTestsBase.java b/tests/src/com/android/inputmethod/latin/InputTestsBase.java
index d1ce104b4..eb4f706cc 100644
--- a/tests/src/com/android/inputmethod/latin/InputTestsBase.java
+++ b/tests/src/com/android/inputmethod/latin/InputTestsBase.java
@@ -225,7 +225,7 @@ public class InputTestsBase extends ServiceTestCase<LatinIMEForTests> {
protected void waitForDictionaryToBeLoaded() {
int remainingAttempts = 300;
- while (remainingAttempts > 0 && mLatinIME.mSuggest.isCurrentlyWaitingForMainDictionary()) {
+ while (remainingAttempts > 0 && mLatinIME.isCurrentlyWaitingForMainDictionary()) {
try {
Thread.sleep(200);
} catch (InterruptedException e) {
@@ -234,7 +234,7 @@ public class InputTestsBase extends ServiceTestCase<LatinIMEForTests> {
--remainingAttempts;
}
}
- if (!mLatinIME.mSuggest.hasMainDictionary()) {
+ if (!mLatinIME.hasMainDictionary()) {
throw new RuntimeException("Can't initialize the main dictionary");
}
}