Commit graph

264 commits

Author SHA1 Message Date
Jean Chalard
7830476022 Neutralize Suggest#addWords (A12)
Bug: 6252660
Bug: 6166228
Bug: 2704000
Bug: 6225530
Change-Id: Id923367342a62a650a5f1d38e2fa0e913030dca8
2012-06-26 17:36:47 +09:00
Jean Chalard
fd998bd37a Refactoring (A11)
Change-Id: I86bd7587dd80773a51ba6db312ba55dc41e7c8c7
2012-06-26 17:36:47 +09:00
Jean Chalard
64dad2d5a9 Remove an unused method and inline another (A10)
Change-Id: Ifd71ce79711b0c15c7764e97351dbb1b8e4c0c2d
2012-06-26 17:36:47 +09:00
Jean Chalard
28eeb35d14 Merge the interface of two methods that do the same thing (A9)
Change-Id: Ia5701d713d0fd5bb646b54a03a1a5602dad0a9e6
2012-06-26 16:55:09 +09:00
Jean Chalard
17111afcd6 Remove useless code and storage (A6)
This is only used as temporary storage to be then added to
the other variable, relying on the fact that it is hopefully
sorted. It's better to just add it right away to the final
storage.

Change-Id: I5da702ac9dc579593ab21feb2021a01e5dfdf4dc
2012-06-26 16:39:32 +09:00
Jean Chalard
5e0545d69d Remove a duplicate processing (A5)
This filtering is already done in native code. It's useless (and
costly) to do it again here.

Change-Id: Ide6794d7a8682a881f097f33e222f10d30f297bd
2012-06-26 16:37:05 +09:00
Satoshi Kataoka
7368009799 Change JNI for Gesture
Change-Id: I774a0052038d16677f60f7efa11fd266cb5f3088
2012-06-25 18:54:37 +09:00
Jean Chalard
0e8b1db948 Merge "Cleanup, part 6 (C6)" 2012-06-19 09:25:33 -07:00
Jean Chalard
c03bd090ea Merge "Cleanup, part 4 (C4)" 2012-06-19 09:24:25 -07:00
Jean Chalard
bd765d3355 Merge "Cleanup, part 3 (C3)" 2012-06-19 09:24:00 -07:00
Jean Chalard
8b538807a3 Merge "Make a variable final (A2)" 2012-06-18 10:30:19 -07:00
Jean Chalard
0176faf6c0 Merge "Add a kind to the suggestion for bookkeeping (A1)" 2012-06-18 10:30:10 -07:00
Kurt Partridge
6080f6878b Remove non-dictionary words and digit touch data.
Output to the ResearchLogger is now queued and only flushed if the word
the user was working on is a dictionary word.

multi-project commit with Ic713ec00777fbdcf4a937b3c77b995257e100fc7

Bug: 6188932
Change-Id: I9de15227ff51be23083d9096f1c1b3d83802fff7
2012-06-17 15:02:15 -07:00
Jean Chalard
c5f1d998c2 Cleanup, part 6 (C6)
Change-Id: I184f3a336278559df255c5d600a98fbba468a243
2012-06-16 10:52:49 +09:00
Jean Chalard
9b233ecef2 Cleanup, part 4 (C4)
Change-Id: I2821ae71ec49e4b6b512157d17b80198f74321e4
2012-06-16 10:51:04 +09:00
Jean Chalard
5475e92b3f Cleanup, part 3 (C3)
Change-Id: Ib0be8dc26b6fa366a3dabeea940d466602073244
2012-06-16 10:46:18 +09:00
Jean Chalard
0998c48ac3 Make a variable final (A2)
This is never changed, and probably doesn't need to be.
It's public because it's going to be used elsewhere in a future
change

Change-Id: Iec8d65859c470de5e1fb0b05533356fbc3b8e91b
2012-06-16 03:10:54 +09:00
Jean Chalard
e7d2ee3ec3 Add a kind to the suggestion for bookkeeping (A1)
This will help for debug as well as serve as groundwork for
Bug: 6252660
Bug: 6166228
Bug: 2704000
Bug: 6225530

Change-Id: I74d0a7b943fb22c514ad79dc064d69ddf336d3ef
2012-06-16 03:10:36 +09:00
Jean Chalard
67fd0c240d Remove deprecated classes.
Should we maybe rename back *BinaryDict* to *Dict* in another
change for simplicity?

Change-Id: I8f7dcb78b9bdf1a13ce403a997fbb8619f2b453b
2012-06-08 17:12:15 +09:00
Jean Chalard
1b06b59e28 Fix a bug with a concurrent modification of a map.
Bug: 6538848
Change-Id: I1a8422356d9909213e53cfdc8c5bcc12eb48f19d
2012-05-24 19:38:04 +09:00
Tadashi G. Takaoka
b5db270962 Remove unused private method Suggest.searchBigramSuggestion
Change-Id: I077c4c019676fefb8eac6042bd7db1b7ab33ca03
2012-05-23 15:32:48 +09:00
satok
0028ed3627 Use "float" instead of "double"
Change-Id: I93ed4d88ede4058f081dd8d634b00dfff4e96d07
2012-05-16 20:45:05 +09:00
satok
f837b57bf5 Merge "Reorder suggestions result according to auto correction threshold" into jb-dev 2012-05-16 04:13:08 -07:00
satok
db1939dbaa Reorder suggestions result according to auto correction threshold
Bug: 5413904
Change-Id: I3aa3a8109ba45d2129b58d8242866fd3dd3473cb
2012-05-16 19:58:48 +09:00
Jean Chalard
ed49e4d82e Merge "Stop meaningless bigram computations" into jb-dev 2012-05-16 01:43:39 -07:00
Jean Chalard
f0e12a9699 Don't auto-correct when there is no main dictionary.
Bug: 6502485
Change-Id: I5803b0db8552867110587a1140fc03fc2e0eccef
2012-05-16 16:09:14 +09:00
Jean Chalard
a86c0f1ea4 Stop meaningless bigram computations
Bug: 6313806
Change-Id: Idf765b40812a43de13aa166ed0b44c7b5f7cc218
2012-05-15 16:34:17 +09:00
satok
0142b997bf Do not set "SuggestionSpan"s for suggestions from the next word predicition
Bug: 6294817
Change-Id: I5010eafa5ba7e947743706adf7e722f4f0cfb415
2012-05-15 12:08:31 +09:00
Jean Chalard
4b5b46bb66 Don't autocorrect after suggestion resuming
Bug: 6105732
Change-Id: I92e7a9c6d6eb648f747c3b396d7993479fd8478a
2012-05-01 17:06:29 +09:00
Tom Ouyang
0806bb01d9 Binary bigram lookup checks both uppercase and lowercase when previous word is uppercase.
Bug: 6363029
Change-Id: I71a1ed5b88f54fcc15bfaf89d3645b8f17ebb821
2012-04-22 17:48:00 -07:00
Jean Chalard
ac27e4544b Pass the previous word to getSuggestions
This is a preparative change to bug#6313806

Change-Id: I1be9ec49b21005c1f45ce459fa93712bc74ef3f0
2012-04-17 12:43:53 +09:00
Tom Ouyang
18222f8c86 Add a new binary contacts dictionary based on ExpandableBinaryDictionary and use locale for bigrams.
Bug: 6188977
Change-Id: I753422eed1effaeb5fd01124cf1ddd1e31ee9d60
2012-04-13 17:54:39 -07:00
Jean Chalard
e6269759d6 Read the dictionary resource in a more sensical place.
We don't need to pass this down all the way from LatinIME any more.
It fetched be done exactly where it needs to be.

Change-Id: I9f277f9c4f9de70ae755a1334d86c67bbb24c988
2012-04-11 21:03:21 +09:00
Jean Chalard
338d3ec725 Replace the flags in getSuggestions with a boolean.
Change-Id: I0ec44df1979cb1dc21017ea290d2151a2af0e7cd

Conflicts:

	java/src/com/android/inputmethod/latin/Suggest.java
2012-04-06 19:34:48 +09:00
Jean Chalard
24aee9100e Change the flags to a boolean in constructors.
Change-Id: I9939204f3b16346aaebd4d726315ba9c4faf910a
2012-04-06 19:33:01 +09:00
satok
7540fd009d Merge "Fix the locale of the flags in BinaryDicitonary for tests" 2012-04-05 22:33:17 -07:00
Ken Wakasa
aa300bb73a Don't draw red underline for manually picked words that came from bigram prediction
Change-Id: I544680c8b4b1baff71bd08168630a34e803c40b9
2012-04-05 20:50:27 +09:00
satok
ae234abd21 Fix the locale of the flags in BinaryDicitonary for tests
Bug: 6129372
Change-Id: I5611f88b10c44261b6145c9dc8615b80e4341e77
2012-04-05 12:48:30 +09:00
satok
7e518d8b83 Combine candidate words and scores
Bug: 5240798
Change-Id: Ie56c1c2cfd7f365e771fee88c1ed15012448feed
2012-04-02 18:39:24 +09:00
Jean Chalard
9ffb94fa13 Rename the user history dictionary.
UserBigramDictionary -> UserHistoryDictionary.

Also update all methods, strings and comments, except those needed
for backward compatibility (which only include the name of the
database file).

Change-Id: I0bccea29880dc566b90100575b83baaa947b03ae
2012-03-19 12:03:51 +09:00
Ken Wakasa
660776e09b Small performance improvement by removing interface accesses.
Change-Id: I6d91f3b086470b79306dbe2874db9748b9e0eb5f
2012-03-17 01:53:51 +09:00
Jean Chalard
3187ba5dfe Remove a now-useless flag.
This has been moved to the SuggestedWords object and is now
represented by a single flag instead of a flag in each suggestion.

Change-Id: I6e9a7cff5a7701de7e61b4de13baac25c9a87b1b
2012-03-15 14:21:02 +09:00
Jean Chalard
03a3517075 Add info for obsolete suggestions in SuggestedWords
Change-Id: I9684c7b08244b34853ce8a99b6e9d885389f6687
2012-03-15 13:12:08 +09:00
Jean Chalard
ca3e7cbdf4 Move a computation closer to where it's used.
Change-Id: I5aee4c36ceaacbb1dbfc47c011f1e4aec4b9dca6
2012-03-15 12:23:16 +09:00
Jean Chalard
271e5b6cb7 Some readability improvement
In-place replacements of visibly identical things.

Change-Id: I02b51bd7f63597e3428f0650b239e9a39ef5a7c7
2012-03-14 18:50:08 +09:00
Jean Chalard
0d0f182959 Cut out a private method to make things more readable
Change-Id: I791700890338e023bd86b8794dbc90379b91dc7d
2012-03-14 18:43:32 +09:00
Jean Chalard
ac5e463402 Minor optimization
We know the size in advance, this may save a few allocations

Change-Id: I2fb9a725f34ba2da4f34ed335652f10447d5d166
2012-03-14 18:35:07 +09:00
Jean Chalard
def4551c2a Some code simplification
Just write the same thing in a more succint manner

Change-Id: I08a2c5edd52a3502914541061fd5b6ee7a92ebc4
2012-03-14 18:33:57 +09:00
Jean Chalard
4a08b2f0e4 Cleanup & optimization
Renaming some variables, and obvious optimizations.

Change-Id: Ib716748e9f3d602cf276dcd4e73f3bcfb819585e
2012-03-14 18:29:06 +09:00
Jean Chalard
f985efe39c Remove a useless parameter
Change-Id: I03005240238fb004c20b2df0d836796e2e8b307f
2012-03-14 18:12:12 +09:00
Jean Chalard
bdf6d1b18b Remove a useless method
Change-Id: I208dd2e725e37c2fb3cd51fe48194679e5912f6b
2012-03-14 15:59:04 +09:00
Jean Chalard
7d55c891af Make the Builder private
Change-Id: I2184084f4b7729c4324f8291d548bd4c4c2872a1
2012-03-14 15:42:14 +09:00
Jean Chalard
5b0643f50d Re-sequence the last calls to build()
Change-Id: If77ee5aa9483d3ca03c52812f31665dee6468e99
2012-03-14 14:19:24 +09:00
Jean Chalard
88bf1ba526 Move up the static methods of the Builder
Change-Id: Ic3e07b745b7b24cae0f772ea49e0de615b44caf9
2012-03-14 13:10:22 +09:00
Jean Chalard
e3afb7d192 Make the Builder fully immutable at last
Change-Id: Ie399ca7a9e76ccab44a92bc378d11f92392fed2c
2012-03-13 20:33:13 +09:00
Jean Chalard
6ffb5018c1 Straighten out the last bastion of the Builder
...and go for the kill

Change-Id: I5ad57211b250d2578ca22a5dae93344d52f9da80
2012-03-13 20:26:47 +09:00
Jean Chalard
2e2519ee91 Make still more members of the Builder final.
Change-Id: Ic455f97247da5e40d4939555ab639ecffef36e2d
2012-03-13 20:05:00 +09:00
Jean Chalard
bd4ba23d2b Some code reorganization.
Use the same local variable inside both branches of an if.

Change-Id: I61f7d506d984f3723ec90604416d1875dd97cd8c
2012-03-13 19:54:56 +09:00
Jean Chalard
b5eeb724fc Make some more Builder attributes final.
Change-Id: I3132b7fe4ee97c566736bfc21c3783cfc79fc7ff
2012-03-13 19:53:38 +09:00
Jean Chalard
c60fea852d Make the suggested word list final in Builder.
Change-Id: I2ddfab00dc8c141fc989a051f16eb2b3571b7e86
2012-03-13 19:37:17 +09:00
Jean Chalard
08adb09e14 Remove unused stuff.
Remove 2 methods that were left only for tests to compile in
another project, but are not used any more now that the tests
have been updated.
Also remove an attribute that is never read.

Change-Id: Ic9ba1f52a465199c82c923d77ed7450460e8a4b9
2012-03-13 19:37:16 +09:00
Jean Chalard
674ffcdf93 Make an add into a set.
This method now only sets words, so it should be named set.
The functionality is identical since there are no more places
where the list is reused.
This will also allow to make the list final in an upcoming change.

Change-Id: I25b0c7d7f13c3fa5d89806f01f48f1026769603f
2012-03-13 19:07:42 +09:00
Jean Chalard
d6662ecd30 Cleanup
Remove an unused method, make others static, fix a formatting
issue

Change-Id: I40cb0b5e01a6f8e2f7b953bd9aad3168dfee71d1
2012-03-13 18:34:19 +09:00
Jean Chalard
adf218eed5 Kill the StringBuilderPool.
The intention may have been nice originally but these end up
being copied anyway :/
Let's remove them now, and in a later change, just keep
references to the created objects.

Change-Id: Ifba8357c20384f9eb40cd916665ed1fc6dc8cab1
2012-03-13 17:59:49 +09:00
Jean Chalard
d0d4074392 Remove a useless parameter.
Change-Id: I7625bf17158c207ad7e8cd496bef825704173c4c
2012-03-13 15:34:06 +09:00
Jean Chalard
c3c4ed91cf Consolidate words into SuggestedWordInfo
We can't get rid of SuggestedWordInfo because it conveys
the information about whether a suggestion is outdated or
not. It is always created anyway. So it makes sense not
to have separate lists and to just keep everything in the
SuggestedWordInfo object.

Change-Id: Idd79dc267d97633901d3d2869da457736963e178
2012-03-12 18:58:20 +09:00
Jean Chalard
682c2d53cc Make access to the safety net calculation easier
Change-Id: If33897b38af94ae81b05e5ef140a542724b9f34a
2012-03-09 21:44:40 +09:00
Jean Chalard
151d5cb532 Extract a condition from a method
Change-Id: I6b0262fe7cb3f7a31cc19d724c301467be932640
2012-03-09 21:37:44 +09:00
Jean Chalard
36c1b37914 Remove a useless argument
Change-Id: I713433a3225193489fad5bdafcf302b529903116
2012-03-09 21:24:47 +09:00
Jean Chalard
28e59b98c6 Remove a useless escape
Change-Id: I1ef0685cc9888c9cef9f60015d32b66dde75ef9b
2012-03-09 21:10:55 +09:00
Jean Chalard
ed9986824e Move some auto-correction logic to where it belongs
Change-Id: I897c5ec3a630a4a6bfc593906df4d3fc7b244482
2012-03-09 20:45:37 +09:00
Jean Chalard
0cf422fbb7 Reduction, step 8
Change-Id: I54334039597e235e24f169e34c1d44109180ee88
2012-03-09 19:00:29 +09:00
Jean Chalard
a333ff19ef Reduction, step 7
Change-Id: I177ef2f29c8b6000c5e3d021c016c5d216fe3fc6
2012-03-09 18:59:20 +09:00
Jean Chalard
a3ee019331 Reduction, step 6
Change-Id: I22ad4cea0e0cac23813da7e788f5c94974ce0ebf
2012-03-09 18:58:01 +09:00
Jean Chalard
dbd140504d Reduction, step 5
Change-Id: Iac52e62c2bdffad14f916f69eade2b785bb41767
2012-03-09 18:44:23 +09:00
Jean Chalard
0b96bc4b2b Reduction, step 4
Change-Id: Ib27dc6e9486c3f0f2ec1e94a88a52d12c1af2d38
2012-03-09 18:44:20 +09:00
Jean Chalard
5a61d03f31 Reduction, step 3
Change-Id: I0e08b102c9539d97c473505b9d42176c4a7c8853
2012-03-09 18:44:16 +09:00
Jean Chalard
8abd15b59f Reduction, step 2
Change-Id: I06e117df43d25dbaf9fc7a7366efd9355a6215ce
2012-03-09 18:44:10 +09:00
Jean Chalard
f08f30176b Reduction, step 1
Change-Id: Ic3ed04300cfd4c0b69b93b27379aca4093b32f67
2012-03-09 18:38:44 +09:00
Jean Chalard
de165aed2a Separate bigram prediction from suggestion process
Change-Id: Ibdef206fbd6688a45cebbd7fb8a9f6cd175d03b0
2012-03-09 18:38:20 +09:00
Jean Chalard
67af2a2415 Export some more logic out of Latin IME
Change-Id: Ib264533a05e9e09347bf254789e6ab5beec92400
2012-03-09 18:36:49 +09:00
Jean Chalard
df9fce5df1 Export some logic out of LatinIME
Hopefully that will end in Suggest/SuggestedWords being autonomous
and won't need the logic spoon-fed to them

Change-Id: I915661bce13c69c8a5b8e5d4a8c41e18fea594cf
2012-03-09 18:36:45 +09:00
Jean Chalard
de19ab878d Merge "Remove useless tests (B5)" 2012-03-08 22:22:56 -08:00
Jean Chalard
54392438c5 Merge "Optimize and clean up (B2)" 2012-03-08 22:00:02 -08:00
Jean Chalard
92146f2926 Remove useless tests (B5)
WordComposer#getTypedWord() may not return null. Don't test for it.

Change-Id: I6aff14892503d0c275a3328c404ed99d2f40a687
2012-03-09 14:52:04 +09:00
Jean Chalard
94b20c90d8 Optimize and clean up (B2)
Stop parameters from escaping and don't do useless work and
simplify the code.
Yay.

Change-Id: I0dfc3e14b1cb50e0730f6d9c1d52b54516baa90e
2012-03-09 12:51:55 +09:00
Jean Chalard
13fb8fb775 Limit escape of parameters
Change-Id: I3a7ab069042d5542ab2e033d1eeb13d718cd7698
2012-03-09 12:30:23 +09:00
Jean Chalard
23a5e9d1a7 Merge "Make AutoCorrection static and non-instantiable (A5)" 2012-03-08 19:05:30 -08:00
Jean Chalard
2621fe2256 Merge "Move a memory in the container class (A4)" 2012-03-08 19:04:56 -08:00
Jean Chalard
427dfe37ec Merge "Remove an unused method" 2012-03-08 18:31:26 -08:00
Jean Chalard
58722d83f0 Merge "Stop uselessly remembering a value (A2)" 2012-03-08 18:30:10 -08:00
Jean Chalard
caae6df0ce Remove an unused method
Who would have guessed this wasn't being called at all.

Change-Id: Ib74a212356ea44e9bf149619ed5464c14684a1ba
2012-03-09 11:10:55 +09:00
Jean Chalard
82adfdaeae Make AutoCorrection static and non-instantiable (A5)
This needs change Ic6756baa to not break the build

Change-Id: I1c772dd99d63fec5d3ad67a0eb7fbc28ec7a0f0f
2012-03-08 20:56:59 +09:00
Jean Chalard
7a580a4769 Move a memory in the container class (A4)
This allows us to make AutoCorrection a purely static class.

Change-Id: I15b81bd7f3d6ea487154a5b09a81bc323be82ce1
2012-03-08 20:56:11 +09:00
Jean Chalard
719f92fc77 Stop uselessly remembering a value (A2)
The value is only used in debug mode, and it can be recomputed
at the time.
This change does not impact the logic. There is however a side
effect: in debug mode, the normalized score will be displayed
also when the word comes out of the whitelist or is a valid word.
It's actually a good thing.

The end purpose is to make all methods in AutoCorrection static.

Change-Id: I1642b1fdfa6ae62b8aa2fed94a8a26ff4a7e4d0e
2012-03-08 20:55:37 +09:00
Tadashi G. Takaoka
cc8c8b99bd Split Utils class to StringUtils, SubtypeUtils, and JniUtils
Change-Id: I09e91675fe7d573dad8c933ad513b21d7e409144
2012-03-08 20:30:38 +09:00
satok
ca7ec2097c Integrate the logic to calculate the proximities
Bug: 4343280

Change-Id: I0f6a7e6912ed4abea07c10d266da4c7ccb0dae76
2012-03-06 15:34:27 +09:00
Jean Chalard
6e082cb30d Convert an internal enum into an int of same underlying value.
Goes together with Id4f4e066

Bug: 5922118
Change-Id: I1e39dd01c67e9284d9d7fe008d868847e69986d7
2012-01-26 13:07:51 +09:00
Tadashi G. Takaoka
9c735b8038 Fix SuggestTests
We need revised scoring test because dictionary look up algorithm has
been changed significantly since this SuggestTests was made.

Change-Id: I69d527a6bfa24ed0dc189fddad1afab0566c6eb8
2012-01-13 15:25:28 +09:00
Jean Chalard
4606de117b Stop a flag from escaping.
The ultimate intent is to close it up in the settings, as it does not
change while typing, only when the keyboard is open again.

Change-Id: I12ff56e7482c1584877fe5531473bf03e95a60f6
2011-12-09 16:09:04 +09:00
Jean Chalard
c1fdd966a7 Remove a useless method
Change-Id: Ib6a0ee21bfe2000231f9ba7bcad4b18ae57e4249
2011-12-08 21:47:26 +09:00
Jean Chalard
117fc18ed4 Keep count of the trailing single quotes for suggestions
Bug: 5665809
Change-Id: I4d9100dbe980861ccb55c78464524be670cac1f7
2011-11-29 15:16:28 +09:00
Jean Chalard
c83359f974 Special case quotes at start and end of words
Single quote at start of word is not considered a part of a
word any more.
Single quote at the end of a word now behave like capitalization:
lookup in the dictionary is done *disregarding* a final quote,
and it is forcefully added back into the suggestions afterwards.

Bug: 5566368
Change-Id: I14dd3815f4b743edba56d64a3abdf4b73d863a6a
2011-11-21 16:34:39 +09:00
Tadashi G. Takaoka
8fbf29e2d5 Make some private method static
Change-Id: Ia23765268be0ef89d7fe7c3f5372ed32d6615765
2011-10-28 13:31:31 +09:00
Jean Chalard
fee149abe0 Use the whitelist as a dictionary in the spell checker.
Bug: 5402436
Change-Id: If89b8bbdebf6751697c4788270d01d4639cff665
2011-10-07 19:25:36 +09:00
Jean Chalard
3458d61807 Make the whitelist an instanciable class.
This goes together with I6b8628b9acc32449e4147a2a754b222fbb76c754
or it will break the build

Bug: 5402436
Change-Id: I07c6266b713773a8de80bb22afdd4c566261f78a
2011-10-06 16:05:21 +09:00
satok
904baab25a Remove code related to AutoText
Bug: 5245751

Change-Id: Ic02f951e8e1dbde9d8964d2c16e4928fb374ca41
2011-10-03 14:38:44 +09:00
Jean Chalard
5c08151c22 Avoid returning an object that's still used internally
There is no definite path known for this to end up being
touched by other classes, but we could imagine through
some way or some other it ends up shoved in the stringbuilder
pool, leading to catastrophic results.

Hopefully related to
Bug: 5248688

Change-Id: Ib8abfc31263cbf31d515ed607ced5d8253971938
2011-09-15 16:23:03 +09:00
Jean Chalard
358e1327d8 Fix a bug where autotext would occasionally not work
Autotext correction would check whether the first suggestion
so far was the same as what Autotext would return, and if it
was indeed the same, would not send its result as
autocorrect. However, the first suggestion is not guaranteed
to have a high enough score to trigger autocorrection, and
there would be cases where a word in autotext would not get
autocorrected because the word came out of bigram
suggestions. These occurrences would be extremely rare, as
they would require concomitant insert between autotext for
one char and bigram suggestion. It is, in fact, probably
limited to the capitalization of "I".

This did not happen in gingerbread because gingerbread would
not register 1-letter words as valid bigrams.

This fix works by just always sending the result of autotext
regardless of whether it is already the first suggestion or
not. This is okay because duplicates are removed afterwards
anyway - and this processing is absolutely necessary because
the autotext'd word may actually be somewhere else in the
suggestion, so it made really no sense checking for only the
first one.

Please note that there is also a race condition that can
result in "i" not being converted to "I": at the moment,
Latin IME relies on having the suggestions evaluated
at the time autocorrection is performed, but when typing
very, very fast, those messages may have been canceled.
This is not limited to the autocorrection of "i", but
affects all autocorrections. It requires a nearly
inhumane typing speed to trigger, but hitting "i" and
space in turn as fast as one can it's possible to
reproduce occasionally.

Bug: 5135113
Change-Id: I530ea6212487300001a2c0fc5b25a5c7716bdf63
2011-09-01 12:59:17 +09:00
Jean Chalard
a6e912cf98 Fix a bug with the string pool.
This also adds some optional debug code to detect more easily possible
future occurrences of the same problem.

Bug: 5195017
Change-Id: I2558b468e46f7090de868f1ec2dc9e24895d670f
2011-08-23 14:55:34 +09:00
Jean Chalard
6da8b74582 Move the dupes-removing method to the Utils class
This is preparation for bug: 5175740

Change-Id: I18b2042317f740cb1e021d3dfbf90ecfbb1a1d37
2011-08-19 19:49:59 +09:00
Jean Chalard
4e01afc520 Make the string builder pool in Suggest a singleton.
This is internal refactoring, done as preliminary work to fix
Bug: 5175740

Change-Id: I21bd4c001c27e7b925ddb87a152105b4dcab320a
2011-08-18 18:41:57 +09:00
Jean Chalard
3016863f86 Refactor string removal to make it static
The next step is to move this over to the Utils class.
The ultimate goal is to make use of the duplicate removal code
also in the spell checker as per
Bug: 5175740

Change-Id: Ica36691b843b0713b832c56ffc65e5b2ec427c4a
2011-08-18 15:16:59 +09:00
Jean Chalard
14051e2b53 Stop reloading contacts when not appropriate.
A recent change had the contacts reloaded every time a new field
is touched. This change not only fixes the problem, but also removes
reloading contacts when changing language, which should make language
switch within LatinIME lighter.

Bug: 5125034
Change-Id: Ia61c4f75a8617113cdce88a2e2c6fdf073146a2d
2011-08-09 12:49:19 +09:00
Ken Wakasa
c769ef4dd1 Correction mode should not rely on the existence of the main dic
bug: 5114094
Change-Id: I2088918ec2c9ad6f8db13b55e58d3e73e180aef8
2011-08-08 19:42:24 +09:00
Jean Chalard
043f784198 Create a way to pass the proximity info to the dictionary
This is a preparative change for inserting the spell checker.

Change-Id: Ie441879cac4f67078ec27a95f1fcbbf3ef373df7
2011-08-04 19:46:21 +09:00
Jean Chalard
3af9f05f29 Load the binary dictionary asynchronously.
This should help with LatinIME opening performance.
It should not be merged before Ia9e4741f (if it is, there is a
race condition where the wrong dictionary is opened).

Bug: 5023141
Change-Id: I39c52de70a449929a622dddfdd92b38425ad9416
2011-07-27 15:18:49 +09:00
Jean Chalard
f422345211 Rename AutoDictionary to UserUnigramDictionary.
...and adjust internal functions, variables and constant names.

Bug: 3459274
Change-Id: I1b11c6adfee360ac0fc22d627955688b3dbdcffc
2011-07-15 12:14:47 +09:00
Tadashi G. Takaoka
35f20916e5 Support Turkish keyboard
I left TODOs in Suggest.java because we must pay attention to locale
when changing character's case. Filed another Bug: 4769095 to track
that.

Bug: 4768050
Change-Id: I1ae2c4ffd2208403a8c2a25dd3a56b71dcefc826
2011-06-21 17:50:17 +09:00
Tadashi G. Takaoka
3439c72639 Close dictionary appropriately
The dictionary that extends ExpandableDictionary must be closed when
it becomes unused.

Bug: 4725930
Change-Id: Ib5d2c39771fb7010d303a26d1ea1c8e237c0101f
2011-06-20 20:06:54 +09:00
Tadashi G. Takaoka
86e815a142 Implement expandable candidates pane
This change removes horizontal scroll from candidates strip. Instead
of that this change introduces "fixed 3 items candidates strip" and
"expandable candidates pane".

Bug: 4175031

Change-Id: Ia367d9074436fdea76d3b653d81798ce2749170e
2011-06-14 20:40:56 +09:00
Jean Chalard
699094f9b6 Add an option to use or not the contacts dictionary.
Bug: 4586840
Change-Id: If62cd57e5ab661e6a51a5442d09bf0af8f08f263
2011-06-13 17:33:04 +09:00
Jean Chalard
4250eb27f5 Create a dictionary collection and a dictionary factory.
The dictionary collection is a class complying to the Dictionary
interface that acts as a front end to a collection of arbitrarily many
dictionaries of any type.
The dictionary factory is a helper class for creating various
dictionaries and get some meta information about them.

At the same time, this change makes the BinaryDictionary class
not a singleton any more.

This also needs I9afe61a9 to not break the build.

Change-Id: I61fdcc4867fcda18342807bf1865e6e46979e5d5
2011-04-27 17:06:20 +09:00
Jean Chalard
0c8d5ca023 Fix Eclipse warnings.
This change is only there to fix warning issued by Eclipse.
It should have absolutely no impact on the program logic.

Change-Id: Ie0e242ac6c167297d33de19902340b0f6ecae9e1
2011-04-26 16:39:45 +09:00
Jean Chalard
89bd776cf6 Use user-history bigrams when no input if available.
This also fixes a small inconsistency upon clicking on whitespace
twice in a row.
Also add some unit tests for an introduced and an existing method.

Change-Id: I1be2fb53c9624f4d0f5299009632cb4384fdfc15
2011-04-22 15:46:23 +09:00
satok
15a0ba6d74 Check the availability of layouts for showing the input languages in the settings
Bug: 4316889

Change-Id: I746b3ff79c2a6cd4925fca1817d5b209623b5108
2011-04-21 17:17:32 +09:00
Jean Chalard
c899038eee Move language-specific keyboard setting to resources.
Some flag settings used to be stored in a keyboard layout extravalue setting. This
change:
- Introduces the capability of setting such specific flags in values/config.xml
- Retains the ability to use extravalues (for layout-specific settings), though
  there is no more any such setting at the moment.
- Fixes a bug where loading a dictionary from outside does not initialize the flags.
- Moves Flag to another class.

Note: this needs I705ec68c to avoid breaking the build

Change-Id: Ia7703aae3215b06c0b3cb792821649806e8998c1
2011-04-20 17:31:59 +09:00
Jean Chalard
cba93f50c3 Add different ways of reading the dictionary file.
This change adds basic support for an external dictionary provider.
It adds methods for reading the dictionary itself from an asset in
the dictionary provider package directly, obtaining the file name
through the ContentProvider interface; it also adds a way of getting
the data through an InputStream and copying the file locally.

Incidentally this change also adds the code needed to listen for
updating the dictionary provider package and reloading it in time.

This change also goes hand-in-hand with Iab31db6e, which implements
the small closed part of this.

Issue: 3414944

Change-Id: I5e4fff99a59bb99dbdb002102db6c90e6cb41c8a
2011-03-18 12:16:50 -07:00
Tadashi G. Takaoka
071f47140c Refactor BinaryDictionary a bit
This changes:
* Flag initialization code in BinaryDictionary to be more unit test friendly.
* Removing unnecessary class hierarchy of LatinIME inner class WordAlternatives.
* Formatting normalized score neatly.

Change-Id: I9f10c093d4f36258fe883cf3fb10cbbda2770497
2011-03-16 19:46:19 -07:00
Tadashi G. Takaoka
e7a2512aa3 Add Utils.equalsIgnoreCase methods
This change also corrects usage of "frequency", "priority" and "score"
* Frequency is the relative probability in dictionary.
* Score is the relative probability in suggestions.
* Priority is kind a sorted score.

Change-Id: Iafb135a4ecdb401cc505014a07c74dfcac44d699
2011-03-16 16:03:05 -07:00
Jean Chalard
d631651b12 Avoid the removal of high-ranking exactly typed candidates.
It used to be the case that the scoring system turns up the same word
that was entered with a different capitalization, but with a lower
score than some other, more frequent word. To cope with this, there
was code that would order such candidates in the first slot no matter
what. This processing is now useless because fully matching words now
have a huge boost that ensures they will get to the top of the list,
before any non-fully matching word (which means, differing only by
capitalization or accents).

The bug that did happen with this was, if a fully-matching word got
matched by several processing passes, and the (chronologically) later
score affected to this word was weaker, it would result in the
duplicate removal pass removing the stronger score. This in turn would
mess with autocorrect.

In an effort to keep the risk at a minimum for MR1, this change does
not actually remove the useless code, but adds a check in the odd case
to avoid the bad situation. Another change will remove the code for
ICS release.

bug: 4100269

Change-Id: I18c0575332981ffec0e257e26a360995838d521e
2011-03-15 21:12:38 -07:00
satok
bcfce3b3b9 Add whitelist dictionary
Bug: 3447571

Change-Id: I538e4e706982129b666ca1ab1085f1b68b69f87f
2011-03-08 11:29:10 +09:00
Tadashi G. Takaoka
c2c44f94e7 Cleanup Suggest to be able to be unit test ready
Bug: 3414081
Change-Id: Ia76afac4b1a61b8953a215b7cbdb7557736f7b9c
2011-03-03 19:18:03 -08:00
satok
9f67e12a0e Move the auto correction functionalities to AutoCorrection.java
- Also removed a quick fix for 2nd or more suggestions.

Change-Id: I7bf46a9cd6a727473e68836954fca160c9d853e6
2011-03-03 19:51:10 +09:00
Ken Wakasa
7e99a28dfc Clear suggestion strip when the suggestion starts
bug: 3488704
bug: 3480132

Change-Id: Ie895d2ad1b58dc65fe16d65baa6fccafd4a142bb
2011-03-02 16:40:08 +09:00
Tadashi G. Takaoka
887f11ee43 Remove next letters frequency handling
Bug: 3428942
Change-Id: Id62f467ce4e50c60a56d59bf96770e799a4659e2
2011-02-17 13:59:41 +09:00
Tadashi G. Takaoka
33e0b1e79e Add unit test helper method to BinaryDictionary and Suggest
Bug: 3414081
Change-Id: Idee64010f2f423d3c7c548d0279c7bf287088762
2011-02-08 17:56:55 +09:00
Tadashi G. Takaoka
5ef096f5f6 Move and rename computeProximityThreshold
Move and rename KeyboardView.computeProximityThreshold to
KeyDetector.getMostCommonKeyWidth. And make it public for unit test
use.

This is a part of multi-project change (If751659a, Idb18f362)

Bug: 3414081
Change-Id: If751659a53c7412f836d6d28866760ffe84b179b
2011-02-08 11:43:39 +09:00
Jean Chalard
8553b5ec31 Add debugging info for Latin IME.
Add frequency of candidates in the candidates view when the debug
mode is active.

Bug: 3312867

Change-Id: Ie911f14ef11b2fa02af8f3a74302129f16ed0604
2011-02-01 16:06:50 +09:00
satok
b5d7857fbc Merge "Fix auto-correction threshold and promote full matched words" into honeycomb 2011-01-26 20:10:31 -08:00
satok
14e427d5bb Fix safety net not to be enabled at aggressive autocompletion mode
Bug: 3374359

Change-Id: I7b1dbeb64a87dda05397c236bb58da292f819471
2011-01-27 13:09:27 +09:00
satok
58c49b9132 Fix auto-correction threshold and promote full matched words
Bug: 3374359
Bug: 3278422

"zbe" will be auto corrected to "be" by fixing s-line
"teh" will be auto corrected to "the" by promotion of full matched words

Change-Id: I314c632820e4e0b1501edeca60ada205d291451f
2011-01-27 12:53:13 +09:00
satok
6f7218627e Dim previously suggested words
Change-Id: Id673c03bfa22ea9ce1bedb5174d8309a37a2a460
2011-01-21 15:20:21 +09:00
satok
82411d47ba Add a safety net for auto-correction.
Bug: 3353956

Change-Id: I6a32632b2f986f0d9a07aa72f256a2c41cc09873
2011-01-19 17:54:22 +09:00
Ken Wakasa
da50e1e98d Fixes in close() in BinaryDictionary.
Avoid using 'synchronized' in finalizer as well.

bug: 3340837
Change-Id: I9b28f54e4490ecb844ba33a379f71b625e4246a2
2011-01-17 15:58:07 +09:00
Ken Wakasa
e90b333017 Load main dic in native
Follow up to Id57dce51

bug: 3219819
Change-Id: I00e11ef21d0252ffa88c12dffb9c55b0f2e19a66
2011-01-07 19:51:45 +09:00
Ken Wakasa
458249e703 Consolidate main dictionary files.
This change is a preparation for upcoming optimizations on dictionary file loading.
* We can consolidate dictionary files because we are no longer relying on Asset Manager.
* Stopping compressing dictionary files as planning to use mmap() on the region in the apk file.
* Probably we won't rely on Asset Manager.  Instead we'll probably use offset and size obtained from AssetFileDescriptor.

Change-Id: Id57dce512fd3d2397a58628f8264bd824194da76
2011-01-05 11:31:58 +09:00
Tadashi G. Takaoka
9fb8c6dd48 Suppress punctuation suggestions if not needed
Bug: 3294256
Bug: 3284745

Change-Id: I77d54cbfcc2e809315bab59ecb808ae944982501
2010-12-22 01:48:20 +09:00
Tadashi G. Takaoka
9ecad8c2e8 Fix auto correction threshold values array reference
This change also removes unused argument from Suggest.getSuggestions().

Change-Id: I512f8695d22898bb906e136a66e0ee6b521cd1d1
2010-12-13 14:40:49 +09:00
Tadashi G. Takaoka
1b1f7f907f Cleanup unused string resources
This change also renames some "completion" to "correction".

Change-Id: I156dd7ccafe99a632721f20769d5f0ea5915a564
2010-12-12 21:55:00 +09:00