SuggestionsInfo.java revision 0dc1f648a09b46c45190ba1ce7daecf7fada4347
1988323c57bd25a58f05dfa492d9b9c8ab62c5153satok/*
2988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * Copyright (C) 2011 The Android Open Source Project
3988323c57bd25a58f05dfa492d9b9c8ab62c5153satok *
4988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * Licensed under the Apache License, Version 2.0 (the "License"); you may not
5988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * use this file except in compliance with the License. You may obtain a copy of
6988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * the License at
7988323c57bd25a58f05dfa492d9b9c8ab62c5153satok *
8988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * http://www.apache.org/licenses/LICENSE-2.0
9988323c57bd25a58f05dfa492d9b9c8ab62c5153satok *
10988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * Unless required by applicable law or agreed to in writing, software
11988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * License for the specific language governing permissions and limitations under
14988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * the License.
15988323c57bd25a58f05dfa492d9b9c8ab62c5153satok */
16988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
17988323c57bd25a58f05dfa492d9b9c8ab62c5153satokpackage android.view.textservice;
18988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
196435a56a8c02de98befcc8cd743b2b638cffb327Gilles Debunneimport com.android.internal.util.ArrayUtils;
206435a56a8c02de98befcc8cd743b2b638cffb327Gilles Debunne
21988323c57bd25a58f05dfa492d9b9c8ab62c5153satokimport android.os.Parcel;
22988323c57bd25a58f05dfa492d9b9c8ab62c5153satokimport android.os.Parcelable;
23988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
240dc1f648a09b46c45190ba1ce7daecf7fada4347satokimport java.util.Arrays;
250dc1f648a09b46c45190ba1ce7daecf7fada4347satok
26988323c57bd25a58f05dfa492d9b9c8ab62c5153satok/**
27988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * This class contains a metadata of suggestions from the text service
28988323c57bd25a58f05dfa492d9b9c8ab62c5153satok */
29988323c57bd25a58f05dfa492d9b9c8ab62c5153satokpublic final class SuggestionsInfo implements Parcelable {
306435a56a8c02de98befcc8cd743b2b638cffb327Gilles Debunne    private static final String[] EMPTY = ArrayUtils.emptyArray(String.class);
310dc1f648a09b46c45190ba1ce7daecf7fada4347satok    private static final int NOT_A_LENGTH = -1;
321bedd99761e3d2acdac947d641e7fee5db556141satok
33988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    /**
34988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * Flag of the attributes of the suggestions that can be obtained by
353de3d6ad584d6f08f50aac1b04bc0fe6cb02fb09satok     * {@link #getSuggestionsAttributes}: this tells that the requested word was found
36988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * in the dictionary in the text service.
37988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     */
38988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    public static final int RESULT_ATTR_IN_THE_DICTIONARY = 0x0001;
39988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    /**
40988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * Flag of the attributes of the suggestions that can be obtained by
413de3d6ad584d6f08f50aac1b04bc0fe6cb02fb09satok     * {@link #getSuggestionsAttributes}: this tells that the text service thinks the requested
42c66009169622ecdb65d887987feaf91fff091af8satok     * word looks like a typo.
43988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     */
44c66009169622ecdb65d887987feaf91fff091af8satok    public static final int RESULT_ATTR_LOOKS_LIKE_TYPO = 0x0002;
45a17b3506234638ef257a6b751a97931dc347a21bsatok    /**
46a17b3506234638ef257a6b751a97931dc347a21bsatok     * Flag of the attributes of the suggestions that can be obtained by
47a17b3506234638ef257a6b751a97931dc347a21bsatok     * {@link #getSuggestionsAttributes}: this tells that the text service thinks
48a17b3506234638ef257a6b751a97931dc347a21bsatok     * the result suggestions include highly recommended ones.
49a17b3506234638ef257a6b751a97931dc347a21bsatok     */
50a17b3506234638ef257a6b751a97931dc347a21bsatok    public static final int RESULT_ATTR_HAS_RECOMMENDED_SUGGESTIONS = 0x0004;
51988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    private final int mSuggestionsAttributes;
52988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    private final String[] mSuggestions;
530dc1f648a09b46c45190ba1ce7daecf7fada4347satok    private final int[] mStartPosArray;
540dc1f648a09b46c45190ba1ce7daecf7fada4347satok    private final int[] mLengthArray;
551bedd99761e3d2acdac947d641e7fee5db556141satok    private final boolean mSuggestionsAvailable;
56988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    private int mCookie;
57988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    private int mSequence;
58988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
59988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    /**
60988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * Constructor.
61988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * @param suggestionsAttributes from the text service
62988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * @param suggestions from the text service
63988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     */
64988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    public SuggestionsInfo(int suggestionsAttributes, String[] suggestions) {
650dc1f648a09b46c45190ba1ce7daecf7fada4347satok        this(suggestionsAttributes, suggestions, 0, 0);
66988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    }
67988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
68988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    /**
69988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * Constructor.
70988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * @param suggestionsAttributes from the text service
71988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * @param suggestions from the text service
72988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * @param cookie the cookie of the input TextInfo
73988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * @param sequence the cookie of the input TextInfo
74988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     */
75988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    public SuggestionsInfo(
76988323c57bd25a58f05dfa492d9b9c8ab62c5153satok            int suggestionsAttributes, String[] suggestions, int cookie, int sequence) {
770dc1f648a09b46c45190ba1ce7daecf7fada4347satok        this(suggestionsAttributes, suggestions, cookie, sequence, null, null);
780dc1f648a09b46c45190ba1ce7daecf7fada4347satok    }
790dc1f648a09b46c45190ba1ce7daecf7fada4347satok
800dc1f648a09b46c45190ba1ce7daecf7fada4347satok    /**
810dc1f648a09b46c45190ba1ce7daecf7fada4347satok     * @hide
820dc1f648a09b46c45190ba1ce7daecf7fada4347satok     * Constructor.
830dc1f648a09b46c45190ba1ce7daecf7fada4347satok     * @param suggestionsAttributes from the text service
840dc1f648a09b46c45190ba1ce7daecf7fada4347satok     * @param suggestions from the text service
850dc1f648a09b46c45190ba1ce7daecf7fada4347satok     * @param cookie the cookie of the input TextInfo
860dc1f648a09b46c45190ba1ce7daecf7fada4347satok     * @param sequence the cookie of the input TextInfo
870dc1f648a09b46c45190ba1ce7daecf7fada4347satok     * @param startPosArray the array of start positions of suggestions
880dc1f648a09b46c45190ba1ce7daecf7fada4347satok     * @param lengthArray the array of length of suggestions
890dc1f648a09b46c45190ba1ce7daecf7fada4347satok     */
900dc1f648a09b46c45190ba1ce7daecf7fada4347satok    public SuggestionsInfo(
910dc1f648a09b46c45190ba1ce7daecf7fada4347satok            int suggestionsAttributes, String[] suggestions, int cookie, int sequence,
920dc1f648a09b46c45190ba1ce7daecf7fada4347satok            int[] startPosArray, int[] lengthArray) {
930dc1f648a09b46c45190ba1ce7daecf7fada4347satok        final int suggestsLen;
94988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        if (suggestions == null) {
951bedd99761e3d2acdac947d641e7fee5db556141satok            mSuggestions = EMPTY;
961bedd99761e3d2acdac947d641e7fee5db556141satok            mSuggestionsAvailable = false;
970dc1f648a09b46c45190ba1ce7daecf7fada4347satok            suggestsLen = 0;
980dc1f648a09b46c45190ba1ce7daecf7fada4347satok            mStartPosArray = new int[0];
990dc1f648a09b46c45190ba1ce7daecf7fada4347satok            mLengthArray = new int[0];
1001bedd99761e3d2acdac947d641e7fee5db556141satok        } else {
1011bedd99761e3d2acdac947d641e7fee5db556141satok            mSuggestions = suggestions;
1021bedd99761e3d2acdac947d641e7fee5db556141satok            mSuggestionsAvailable = true;
1030dc1f648a09b46c45190ba1ce7daecf7fada4347satok            suggestsLen = suggestions.length;
1040dc1f648a09b46c45190ba1ce7daecf7fada4347satok            if (startPosArray == null || lengthArray == null) {
1050dc1f648a09b46c45190ba1ce7daecf7fada4347satok                mStartPosArray = new int[suggestsLen];
1060dc1f648a09b46c45190ba1ce7daecf7fada4347satok                mLengthArray = new int[suggestsLen];
1070dc1f648a09b46c45190ba1ce7daecf7fada4347satok                for (int i = 0; i < suggestsLen; ++i) {
1080dc1f648a09b46c45190ba1ce7daecf7fada4347satok                    mStartPosArray[i] = 0;
1090dc1f648a09b46c45190ba1ce7daecf7fada4347satok                    mLengthArray[i] = NOT_A_LENGTH;
1100dc1f648a09b46c45190ba1ce7daecf7fada4347satok                }
1110dc1f648a09b46c45190ba1ce7daecf7fada4347satok            } else if (suggestsLen != startPosArray.length || suggestsLen != lengthArray.length) {
1120dc1f648a09b46c45190ba1ce7daecf7fada4347satok                throw new IllegalArgumentException();
1130dc1f648a09b46c45190ba1ce7daecf7fada4347satok            } else {
1140dc1f648a09b46c45190ba1ce7daecf7fada4347satok                mStartPosArray = Arrays.copyOf(startPosArray, suggestsLen);
1150dc1f648a09b46c45190ba1ce7daecf7fada4347satok                mLengthArray = Arrays.copyOf(lengthArray, suggestsLen);
1160dc1f648a09b46c45190ba1ce7daecf7fada4347satok            }
117988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        }
118988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        mSuggestionsAttributes = suggestionsAttributes;
119988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        mCookie = cookie;
120988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        mSequence = sequence;
121988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    }
122988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
123988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    public SuggestionsInfo(Parcel source) {
124988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        mSuggestionsAttributes = source.readInt();
125988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        mSuggestions = source.readStringArray();
126988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        mCookie = source.readInt();
127988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        mSequence = source.readInt();
1281bedd99761e3d2acdac947d641e7fee5db556141satok        mSuggestionsAvailable = source.readInt() == 1;
1290dc1f648a09b46c45190ba1ce7daecf7fada4347satok        mStartPosArray = new int[mSuggestions.length];
1300dc1f648a09b46c45190ba1ce7daecf7fada4347satok        mLengthArray = new int[mSuggestions.length];
1310dc1f648a09b46c45190ba1ce7daecf7fada4347satok        source.readIntArray(mStartPosArray);
1320dc1f648a09b46c45190ba1ce7daecf7fada4347satok        source.readIntArray(mLengthArray);
133988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    }
134988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
135988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    /**
136988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * Used to package this object into a {@link Parcel}.
137988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     *
138988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * @param dest The {@link Parcel} to be written.
139988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * @param flags The flags used for parceling.
140988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     */
141988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    @Override
142988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    public void writeToParcel(Parcel dest, int flags) {
143988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        dest.writeInt(mSuggestionsAttributes);
144988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        dest.writeStringArray(mSuggestions);
145988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        dest.writeInt(mCookie);
146988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        dest.writeInt(mSequence);
1471bedd99761e3d2acdac947d641e7fee5db556141satok        dest.writeInt(mSuggestionsAvailable ? 1 : 0);
1480dc1f648a09b46c45190ba1ce7daecf7fada4347satok        dest.writeIntArray(mStartPosArray);
1490dc1f648a09b46c45190ba1ce7daecf7fada4347satok        dest.writeIntArray(mLengthArray);
150988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    }
151988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
152988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    /**
153988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * Set the cookie and the sequence of SuggestionsInfo which are set to TextInfo from a client
154988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * application
155988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * @param cookie the cookie of an input TextInfo
156988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * @param sequence the cookie of an input TextInfo
157988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     */
158988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    public void setCookieAndSequence(int cookie, int sequence) {
159988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        mCookie = cookie;
160988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        mSequence = sequence;
161988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    }
162988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
163988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    /**
164988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * @return the cookie which may be set by a client application
165988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     */
166988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    public int getCookie() {
167988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        return mCookie;
168988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    }
169988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
170988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    /**
171988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * @return the sequence which may be set by a client application
172988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     */
173988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    public int getSequence() {
174988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        return mSequence;
175988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    }
176988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
177988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    /**
178988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * @return the attributes of suggestions. This includes whether the spell checker has the word
179988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * in its dictionary or not and whether the spell checker has confident suggestions for the
180988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * word or not.
181988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     */
182988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    public int getSuggestionsAttributes() {
183988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        return mSuggestionsAttributes;
184988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    }
185988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
186988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    /**
1871bedd99761e3d2acdac947d641e7fee5db556141satok     * @return the count of the suggestions. If there's no suggestions at all, this method returns
1881bedd99761e3d2acdac947d641e7fee5db556141satok     * -1. Even if this method returns 0, it doesn't necessarily mean that there are no suggestions
1891bedd99761e3d2acdac947d641e7fee5db556141satok     * for the requested word. For instance, the caller could have been asked to limit the maximum
1901bedd99761e3d2acdac947d641e7fee5db556141satok     * number of suggestions returned.
191988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     */
192988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    public int getSuggestionsCount() {
1931bedd99761e3d2acdac947d641e7fee5db556141satok        if (!mSuggestionsAvailable) {
1941bedd99761e3d2acdac947d641e7fee5db556141satok            return -1;
1951bedd99761e3d2acdac947d641e7fee5db556141satok        }
196988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        return mSuggestions.length;
197988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    }
198988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
199988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    /**
200988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * @param i the id of suggestions
201988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * @return the suggestion at the specified id
202988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     */
203988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    public String getSuggestionAt(int i) {
204988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        return mSuggestions[i];
205988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    }
206988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
207988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    /**
208988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * Used to make this class parcelable.
209988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     */
210988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    public static final Parcelable.Creator<SuggestionsInfo> CREATOR
211988323c57bd25a58f05dfa492d9b9c8ab62c5153satok            = new Parcelable.Creator<SuggestionsInfo>() {
212988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        @Override
213988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        public SuggestionsInfo createFromParcel(Parcel source) {
214988323c57bd25a58f05dfa492d9b9c8ab62c5153satok            return new SuggestionsInfo(source);
215988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        }
216988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
217988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        @Override
218988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        public SuggestionsInfo[] newArray(int size) {
219988323c57bd25a58f05dfa492d9b9c8ab62c5153satok            return new SuggestionsInfo[size];
220988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        }
221988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    };
222988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
223988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    /**
224988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * Used to make this class parcelable.
225988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     */
226988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    @Override
227988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    public int describeContents() {
228988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        return 0;
229988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    }
2300dc1f648a09b46c45190ba1ce7daecf7fada4347satok
2310dc1f648a09b46c45190ba1ce7daecf7fada4347satok    /**
2320dc1f648a09b46c45190ba1ce7daecf7fada4347satok     * @hide
2330dc1f648a09b46c45190ba1ce7daecf7fada4347satok     */
2340dc1f648a09b46c45190ba1ce7daecf7fada4347satok    public int getSuggestionStartPosAt(int i) {
2350dc1f648a09b46c45190ba1ce7daecf7fada4347satok        if (i >= 0 && i < mStartPosArray.length) {
2360dc1f648a09b46c45190ba1ce7daecf7fada4347satok            return mStartPosArray[i];
2370dc1f648a09b46c45190ba1ce7daecf7fada4347satok        }
2380dc1f648a09b46c45190ba1ce7daecf7fada4347satok        return -1;
2390dc1f648a09b46c45190ba1ce7daecf7fada4347satok    }
2400dc1f648a09b46c45190ba1ce7daecf7fada4347satok
2410dc1f648a09b46c45190ba1ce7daecf7fada4347satok    /**
2420dc1f648a09b46c45190ba1ce7daecf7fada4347satok     * @hide
2430dc1f648a09b46c45190ba1ce7daecf7fada4347satok     */
2440dc1f648a09b46c45190ba1ce7daecf7fada4347satok    public int getSuggestionLengthAt(int i) {
2450dc1f648a09b46c45190ba1ce7daecf7fada4347satok        if (i >= 0 && i < mLengthArray.length) {
2460dc1f648a09b46c45190ba1ce7daecf7fada4347satok            return mLengthArray[i];
2470dc1f648a09b46c45190ba1ce7daecf7fada4347satok        }
2480dc1f648a09b46c45190ba1ce7daecf7fada4347satok        return -1;
2490dc1f648a09b46c45190ba1ce7daecf7fada4347satok    }
250988323c57bd25a58f05dfa492d9b9c8ab62c5153satok}
251