There are two problems here. The first one is the tests would send
an invalid unicode character. Although we could want dicttool to
handle this more gracefully, it's fine for now.
The second problem is much more serious. If a node has more than
128 children, then the java code will crash trying to read the
dictionary back because of a bug that this change fixes. In
theory, it's possible that happens when we try to load the user
history dictionary back from the disk - native code is not affected
so there is no other point that may cause a problem.
In the practice, that means you'd need to have 129 words with a
common prefix (including empty string) but all different after
this. It's almost impossible with Google Keyboard since there are
only so many keys on the keyboard that you can make a word out
of, and then again you'd have to do it repeatedly until it
actually enters the user history dictionary, wait for it to get
saved on the disk.
The bad news is, if you manage to get this far, the keyboard will
crash every time and won't be able to get up until you clear
data for the package.
The good news is, the dictionary itself is not corrupted and only
the reading code is wrong. So updating to a newer version would
actually even recover from this situation.
All in all, considering how almost-impossible this is to trigger,
I don't think even a single user actually did hit this bug.
Bug: 8583091
Change-Id: Iabb2a7f47cbd9ed3193d2a3487318d280753e071
RichInputConnection#getWordRangeAtCursor may now returning
either a SpannableString or a String. We can't test that with
String#equals(), but TextUtils#equals() does the job for us.
Change-Id: I59ebe54207e92f4d90b49476b64f1e12fd4929cb
Yes that's even harder to understand. The old technique doesn't work
any more, so I have to drill a new hole in this class.
Bug: 8303100
Change-Id: I70a41b5094dab2bb56a17eaf55b2a2df853e4bb6
The test was not passing the correct input type when it was
creating the text view, resulting in mismatched types seen from
TextView and LatinIME with some bad results. The test would
even go as far as restoring it after it's been fixed by TextView.
Additionally, since we want to enter litteral carriage returns,
the input type should be MULTI_LINE. If not, TextView does
not allow carriage returns.
Bug: 8302690
Change-Id: I1c20bcf6ca554ad981048ec181e19c649f6c742e
The important bug is in findWordInTree. The problem, which is
not obvious, is that we were calling codePointAt() with the
code point index in the string, instead of the char index.
The other bug this change fixes was harmless in the practice,
because it's in the iteration which is only used for debug and
pretty printing purposes. It's very similar in that it would
substract a length in code point to a length in chars and
truncate a StringBuilder at that length, so it would fail in a
quite similar manner. This changes the meaning of the "length"
attribute in Position, but it's clearer this way anyway.
Bug: 8450145
Change-Id: If396f883a9e6449de39351553ba83f5be5bd30f0
The test is wrong - it checks a struct that contains a string
instead of checking the string itself.
Bug: 8149360
Change-Id: Ifb93d61f25a64a64e1c1e689de792f27994487b6
That helps tests know when to wait and when to declare the
dictionary actually not usable.
Bug: 7925814
Change-Id: Ic963c1206c43e3cde39ac4214a0d601f4fc6c03b
Tests have been broken again by recent changes to subtype
choice within Latin IME. This fixes the problem and all tests
pass again.
This change also includes a small fix to one test that was
checking for something irrelevant.
Change-Id: I6a03dea24f99b0d2ad84c4161a8413f3060bb811
The subtype locale name on the spacebar will be suppressed when only
one subtype is enabled and
- Subtype locale is equal to the system locale.
or
- Subtype language is equal to the system language but the subtype is
implicitly enabled.
Thus the "es_ES" system locale chooses "es" subtype keyboard
implicitly but the keyboard doesn't have the subtype name on its
spacebar.
This change also removes Spanish Latin America keyboard.
Bug: 7531804
Change-Id: Ib929e8235d643c0ba039eb010e18ab721a734e15
Most of the failures can be ascribed to the tests not passing the correct
old position of the cursor on a second call to onUpdateSelection() to
LatinIME.
Bug: 7276565
Bug: 7276805
Bug: 7276195
Change-Id: I3f1b52cdcc783ea18838408bed50699b7254eaf4
when logging LatinIME.onUpdateSelection(), now include the current word and
preceding word. no escaping of the word is performed; this is temporary
until the output format is cleaned up.
also fix EditingUtils.getWordRangeAtCursor to support supplementary
UTF-16 characters.
Bug: 6188932
Change-Id: If4612a2627537d5d8bb2f9585a3ad1b4e56c2e26
* Move SubtypeLocale.get{Full,Middle,Short}DisplayName() to
LatinLeyboardView and add unit tests (SpacebarTextTests).
* Add SubtypeLocale.getSubtypeDisplayName()
This is a cherry-pick of I57420c6a from Master.
Bug: 6393865
Change-Id: I68748189c17c73984ac4ae05a5a40fb54bf46453
log device type, screen size, etc. also simplification inside ResearchLogger
to use exceptions better, and fix ResearchLoggerTests to not change
preferences to specify the logfile.
multi-project change with Idfd193b16260215cca32886e288f03a0c12b2781
Bug: 6188932
Change-Id: Idd3ca6eb8e8e3934f68234b241c7fd7d0cc3bcd5
This fixes the input logic tests that were broken and suppresses
their dependency upon the spell checker proximity. Instead, it
gets the Keyboard instance from Latin IME and uses the actual
coordinates, which results in a test run closer to what actually
happens during typing.
Change-Id: I3a81d249ee7fb3ac6ae6940aa2e8b2421e829e5c
Also fix a typo, and increase the time allowed to load the main
dictionary to 2 secs instead of 1.
Bug: 6114326
Change-Id: I5f70b34fc4277c55977b18466253152aa98a2507
To some extent, the test was wrong here.
After space is typed in this case, we wait a small delay before updating
the suggestion strip so that we can display bigram predictions without
introducing delays. The suggestion strip is not displayed until then.
The test was bypassing this by simulating a press on the suggestion
strip, but for LatinIME it was not displayed yet, hence the bug.
The new code waits for the delay, makes sure the suggestion strip is
actually displaying punctuation marks, then press the mark and do
the intended test on space.
Change-Id: I18f82da1bc0a8e584e9b1bac59ff48823d78ec12
This is really brutal, but after trying many many things I didn't
find a better way. It works with the current implementation of
MessageQueue.
Since this only introduces a utility method it doesn't really do
anything, but the functionality it provides will be essential to
Bug: 5975557
Change-Id: I81c4113a08f9a8d8a88294d7dd3b6c8c483c8b1d
- Type "tgis", manually pick "thus", press backspace.
Backspace should revert the manual pick.
Check "tgis" is the result.
- Type "tgis" followed by a period.
Period should trigger auto-correct to "this".
Check "this" is the result.
- Type "tgis" followed by a period, then backspace.
Period should trigger auto-correct to "this", and backspace should
revert the auto-correction.
Check "tgis." is the result.
Change-Id: I7e23c8a26fbdbe23336149a05ff01bc51707422e
Seems I didn't get how to iterate on a String correctly >.>
Talk about a big bug. Anyway, I think it's working now.
Bug: 5955228
Change-Id: I988c900cf2a16c44b9505cfd4f77c7cda7e592f0
Fix two related subtle bugs:
- Stop singling out fat-finger-only corrections for rejection
when touch coordinates are not available.
- Remove a racy check that would happen only in debug mode
Change-Id: Ic904f9b27c091ca6b369052c4e65a630bff81257
We need revised scoring test because dictionary look up algorithm has
been changed significantly since this SuggestTests was made.
Change-Id: I69d527a6bfa24ed0dc189fddad1afab0566c6eb8
This change introduces KeyboardSet and SubKeyboard XML definitions to
represent a set of keyboard layouts.
Bug: 5002108
Bug: 5679585
Change-Id: Ib6c8d5936187381bb6725c9fe574e93871c01a86
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
This bug would kill the case where the whitelist contains
a word to be autocorrected to an uppercased version of
itself, and the user would enter the uppercase version.
In this case, this bug would cause the typed word to be
killed off the list of candidates, and possibly autocorrected
to the *next* candidate.
When the whitelist checks whether this the typed word is
a candidate for whitelisting, this change has it check whether
the whitelisting results in the typed word before returning.
Hence, it can keep the case-insensitive behavior of the
whitelist.
Coincidentally, this change renames the method used to do
this, because it does not comply with the general contract
of Dictionary. This happens to be in the way of another
upcoming change.
Bug: 5420371
Change-Id: Ifb305271acc5f171adf9b18c762ae7975b14be0a
This goes together with I6b8628b9acc32449e4147a2a754b222fbb76c754
or it will break the build
Bug: 5402436
Change-Id: I07c6266b713773a8de80bb22afdd4c566261f78a
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
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
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
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
This change also introduces number password (a.k.a. PIN) layout. The
text password layout will follow.
Bug: 3384942
Change-Id: I50b5e413e47a28d5285fd0468115e11ce46c7f18
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
This change introduces new package com.android.inputmethod.keyboard
which hosts keyboard related classes.
Also adds missing @Override and @SuppressWarning("unused") annotation
Change-Id: I0317f5cfa317e13f3c77815f48ffc69b5d1ade05
This change moves SwipeTracker out from LatinKeyboardBaseView. Also
this introduces EventBuffer class for swipe tracking buffer.
Bug: 2910379
Change-Id: I48ff714226a248ca063cbaf9755cf45e458f7402