1bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi/* 2bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi * Copyright (C) 2014 The Android Open Source Project 3bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi * 4bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi * Licensed under the Apache License, Version 2.0 (the "License"); 5bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi * you may not use this file except in compliance with the License. 6bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi * You may obtain a copy of the License at 7bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi * 8bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi * http://www.apache.org/licenses/LICENSE-2.0 9bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi * 10bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi * Unless required by applicable law or agreed to in writing, software 11bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi * distributed under the License is distributed on an "AS IS" BASIS, 12bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi * See the License for the specific language governing permissions and 14bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi * limitations under the License. 15bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi */ 16bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi 17bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagipackage com.android.inputmethod.latin.utils; 18bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi 19bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagiimport java.util.List; 20bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagiimport java.util.Locale; 21bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi 22bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagiimport android.view.inputmethod.InputMethodSubtype; 23bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi 24bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagiimport com.android.inputmethod.latin.Dictionary; 25bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagiimport com.android.inputmethod.latin.PrevWordsInfo; 26bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi 27bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagipublic class DistracterFilterCheckingIsInDictionary implements DistracterFilter { 28bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi private final DistracterFilter mDistracterFilter; 29bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi private final Dictionary mDictionary; 30bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi 31bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi public DistracterFilterCheckingIsInDictionary(final DistracterFilter distracterFilter, 32bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi final Dictionary dictionary) { 33bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi mDistracterFilter = distracterFilter; 34bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi mDictionary = dictionary; 35bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi } 36bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi 37bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi @Override 38bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi public boolean isDistracterToWordsInDictionaries(PrevWordsInfo prevWordsInfo, 39bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi String testedWord, Locale locale) { 40bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi if (mDictionary.isInDictionary(testedWord)) { 41bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi // This filter treats entries that are already in the dictionary as non-distracters 42bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi // because they have passed the filtering in the past. 43bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi return false; 44bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi } else { 45bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi return mDistracterFilter.isDistracterToWordsInDictionaries( 46bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi prevWordsInfo, testedWord, locale); 47bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi } 48bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi } 49bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi 50bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi @Override 51bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi public void updateEnabledSubtypes(List<InputMethodSubtype> enabledSubtypes) { 52bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi // Do nothing. 53bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi } 54bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi 55bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi @Override 56bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi public void close() { 57bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi // Do nothing. 58bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi } 59bdf745da32ddd4b2d0e395c7ae9eb346fffcfe91Keisuke Kuroyanagi} 60