remove dependence of ResearchLogger on LatinImeLogger
for autocorrection
multi-project commit with I32cc134b
Bug: 6188932
Change-Id: Iaeda97eb43fa4782db2d1b2a6d8d09a93b395111
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
the new points are all at Log.x() positions; only those appearing directly
related to user input were added.
multi-project change with I159f5de2
this CL is the same as I618bcd07, which was reverted because of
incompatibilities with vendor branches.
Bug: 6188932
Change-Id: I999249dceb0c04f5a4ffbfff25caed09d24a2c52
the new points are all at Log.x() positions; only those appearing directly
related to user input were added.
Bug: 6188932
Change-Id: I618bcd07b22c9efc794745678b073afe1e79a697
This change also undoes the effects of I8694eb9016, which was an initial
effort built on Utils.UsabilityStudyLogs. Now Utils operates as it did
previously, for backward compatibility, but the ResearchLogger retains
the new log format.
Coordinated with I274b75c5.
Bug: 6188932
Change-Id: I41208bdc6b511f69a010c9fc38a936521beba7d5
The old code would remove caps from the first letter if
auto-capsed but that makes very little sense when the word
is camel-cased. Also, it would not correctly handle
surrogate pairs, and would require a direct reference to
LatinIME and a specific method to do the processing in an
unexpected place.
Change-Id: I416d6a805242788a2473f007ca7452c9fe3f5205
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
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
UserBigramDictionary now assumes both functionalities. It will
be renamed to UserHistoryDictionary in a future change.
There are several reasons to do this. First, there is a lot of
duplicate code in User{Unigram,Bigram}Dictionaries that are
factored by the few lines of code in this change. Also, other
dictionaries like BinaryDictionary or ContactsDictionary all
assume both responsibilities, as should be the case
theoretically.
It is also possible to do this because previous versions don't
write any unigram data that we'd want to reuse. For even older
versions that do write data, we can't really make any sense out
of it. Bigram data however can be useful, and this allows us to
reuse it easily.
Change-Id: I755525f92744e1536eaef097527e8151b7859a30
A lot of things don't really make sense in the old code.
Let's streamline it for now so that we have a cleaner interface
to work with. This is preliminary work for bug 4192129.
Change-Id: If01a5974cfadc43afced610c57fcf7fde67c1346
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
Hopefully that will end in Suggest/SuggestedWords being autonomous
and won't need the logic spoon-fed to them
Change-Id: I915661bce13c69c8a5b8e5d4a8c41e18fea594cf
We only use some of those results in one branch of an if() test.
Let's not compute those that are not needed.
Change-Id: I6ca068646b86d2980fb88e75b110ad077362c4ff
If !mInputAttributes.mInputTypeNoAutoCorrect then mCorrectionMode
will not have allowed #hasAutoCorrection() to return true.
Change-Id: I1b498d5aeb26194c765cc9b9dcb24d980de43894
It's probably simpler not to have registers dance around,
and just message the feedback manager when the audio event
happens.
Change-Id: Id0710ed102d10d01f1af93ad8cb660653bb3a9f8
This duplicates the functionality in ComposingStateManager at
a fraction of the cost. It's not used yet.
Change-Id: Ica2607fb2f7c41e11189fcb566e253db8f62596f
This fixes two defects:
- One where some separators should promote a phantom space to
a real space. This bug had a unit test but wasn't tracked.
- One where French punctuations would behave incorrectly. Tracked
Bug: 6113693
Change-Id: Ia7f86fc960e00141757632ab2c9bce9168dd6966
It makes more sense to catch words with the safety net in
updateSuggestions() than in showSuggestions(). Also, it's useless
to do it in updateBigramPredictions, because the result will
always be provably false.
This will also help with writing unit tests.
Change-Id: Ifab81e6c5a74b1aa75cf85ef7742fee69a98f5ce
I wish "are we autocorrecting?" was not computed in a dozen
places all depending on a hundred code paths
More than likely, this fixes very subtle discrepancies
between auto-correction indicator with the underline and with
the LED on the spacebar - which is not displayed any more in
the current version anyway. Especially, the LED probably
would have been off when the word was caught by the safety net.
Change-Id: Idda3021771081d6155b06915e728ecd64d9e042e
The message id 0 is used intrinsically by the framework
for all messages without a specific ID. Using 0 here
we can't reliably use the post(Runnable) method on our
handler, because these would in *some* respects be taken
for update_suggestion messages, but not all.
For example, they'd be removed on removeMessage() but
they would not trigger the actual process. This would
lead to utter confusion.
Change-Id: I5d9b01d38e2ff090cd0d80c27421dc8a41c317b8
This is never called any more, since we now use the cancelCommit
path to react to a backspace after a manual pick.
This concludes the run of changes to implement feature
request #5968922
Change-Id: I23df653bb2a3de2ba0152394d5d616a42ac7519b
Also remove a test in debug mode that would check for absence of
a situation which is now expected.
Change-Id: Ia5be350bc98a604b3bf8f6057652c5534f6a19af
This is new code, but simple code. The new code path is never
used for now, but it will be in an upcoming change. This serves
to implement feature request #5968922
Change-Id: I3e67731ec6e9fc0b86c5cbd972e9c081781c11a9
Now that we have stored our committing separator, we can use
it directly instead of reading it back from the text view
paying the IPC cost. This prepares for feature request #5968922.
Change-Id: Ifeaa2d659cf12b91c89d28e6ff7d07a669258184
This stores the separator that was used to commit the word in
the LastComposedWord. It may be NOT_A_SEPARATOR if there was
no separator (for example, the cursor moved causing a commit,
or there was a manual pick). This is necessary to implement
feature request #5968922.
Change-Id: I5fcf19a78ec66d68d4df89418eaef13952588207
There is no point storing the prospective autocorrect - we are
recomputing it anyway. The committed word however will be necessary
to implement feature request #5968922.
Change-Id: I588c18e1a5a1050a791d601de465f421ccbe36cd
This would happen when a character is not a separator but is not
a word starter. Such characters include single quote and
dollar, and others non-letter, non-separator chars.
We set the bigram predictions if any - if not so configured, this
will fallback on setting back punctuations into the strip.
Bug: 6010408
Change-Id: Id203bbe87f8c13de0d5027b555c9067c7ec98f92
It turns out this was available in an unexpected place.
Fixes both the following bugs
Bug: 5948469
Bug: 6023118
Change-Id: Ie1a91b8268540ea0f0df02bee94c3bbdeb0fa4c5
This change also cancels double tap and long press timers if other
letter key is pressed after shift key.
Bug: 5693999
Bug: 6017610
Change-Id: I3b5f3debfb8915fa73a93b409a38afadf24132e9
This change also
* Honors the custom action label in EditorInfo.actionLabel.
* Invokes InputConnection.performeEditorAction if action is specifed
at EditorInfo.imeOptions or actionLabel/actionId.
* Stops using InputMethodService.sendKeyChar. Implements
sendKeyCodePoint instead.
Bug: 2498607
Bug: 5961809
Bug: 5368408
Change-Id: If4cd5eb3dacfc6b6a7ea434b0617c2438e06e42d
A suggested punctuation is sure to be 1 character and a word separator,
so the isSuggestedPunctuation() test is redundant.
Change-Id: I3d31f0825f069f64d514682e46be62afdae25291
Remove a useless test (we can only come here if the code
is not a separator, as we are only called from onCodeInput
inside an explicit test).
Change-Id: Icd996a5a1c18a550117a144a1d35f167b96211f7
Inhibit adding phantom space for tld keys even if the last
character inserted in the textview is not a dot
Change-Id: Ie92554ead7a18c932480905c5738aff7c0159a32
When the application is modifying the text under our feet,
we may come through this code path. We should log the error
rather than crash.
Bug: 5869235
Change-Id: Ic0fd24c3bc805d44c5db0ad781ddebeca0450614
This change also
* Doesn't use Key.getRtlParenthesisCode to get correct parentheses
code in RTL context. Intead uses the outputText feature of
moreKeys specification.
* Move CVS string parser from KeyStyles to Utils.
Bug: 5948247
Change-Id: I45752c7d01b4f7d3f3da900b110a2185b336a1f0
This change also
* Rename phone shift keyboard to phone symbols keyboard.
Use CODE_SWITCH_ALPHA_SYMBOL code to switch between phone and phone symbols keyboard.
* Remove phone symbols keyboard from tablet.
* Introduces enableLongPress flag of Key.keyActionFlags attribute.
* Remove clumsy long press code from PointerTracker.
* Remove CODE_CAPSLOCK handling from LatinIME.
* Make KeyboardSwitcher to invoke haptic and audio feedback.
Change-Id: I00e1f697a10ab5112aec75e36853b96246ff5054
If any shift state variants of alphabet keyboard layout is not
specified in KeyboardSet.Element, it will be automatically generated
from base alphabet keyboard definition.
This change also
* Eliminates KeyboardShiftState object from Keyboard.
* Removes various set shift state methods from Keyboard.
* Removes KeyboardSet.Element.elementAutoGenerate attribute.
* Separates "sticky" Key.backgroundType to "stickyOff" and "stickyOn"
* Add preserveCase flag to smiley, .com, and labeled special keys.
* Rename KeyboardShiftState class to AlphabetShiftState.
* Rename some attributes from *UppercaseLetter* to *ShiftedLetterHint*.
* Introduce shiftedLetterActivated to Key.keyLabelFlags
Change-Id: I01a0a8efeeaa76820ae728a5bdfa8d02b6ce74b7
This deactivates the cancellation at each separator pressed while
not composing a word. The net effect is to fix
Bug: 5875776
Change-Id: I67aa3f842ddff250828c60596ad5a7e466c1ddaa
This is cleanup.
This also introduces a "deactivated" state to the last committed
word, that can be used for
Bug: 5875776
Change-Id: I1855adb8ac8123f6d2c5365b0ae899145e5c3ba1
...and avoid crashing in one case where the application may
change the text while we are typing.
Bug: 5685922
Change-Id: I4a22c63168986f43ac84f512aaa4267023d536e3
All calls to this method are done with the same parameter,
and it's really hard to understand if we call upon this
member inside.
Change-Id: I787664bb59053ab0fe666ed812fb12b2b9090918
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
* Rename KeyboardActionListener.onPress to onPressKey
* Rename KeyboardActionListener.onRelease to onReleaseKey
* Merge KeyboardSwicther.onPressShift, onPressSymbol, and onPressOtherKey to onPressKey.
* Merge KeyboardSwitcher.onReleaseShift and onReleaseSymbol to onReleaseKey.
* Merge KeyboardState.onPressShift, onPressSymbol, and onPressOtherKey to onPressKey.
* Merge KeyboardState.onReleaseShift and onReleaseSymbol to onReleaseKey.
Change-Id: Icf28fd18e238c5e534c292893e4ab5b6b98e72f8
The basic idea is that in some situations, we would restart
suggestions, but before evaluating them we would bail out
because suggestions were not requested. This would lead to
the "correction" set to null, so we would commit a null word.
This fix does two things:
- Do not restart suggestions when not requested.
- If we still end up with a composing word when suggestions
are not requested, we select the typed word as the
correct version.
Bug: 5846646
Change-Id: Ic35351841d0cb20afa99092ef681ecb7bd68bec6
The method deleteWordAtCursor would call finishComposingText,
which is a very unexpected state change and would probably cause
surprising bugs to any parent that would call it.
As it happens, it's not used anywhere any more so let's just
remove it.
Change-Id: Iaa9200866e40b4e914f76baa987279948300679c
This would crash the program when inputting a punctuation
symbol that should not swap with a weak space through the
suggestion strip, then press backspace.
Those include all two-part punctuation symbols in French for
example, as well as magic space strippers like the dash in
English. For English all suggestion strips symbols happen to
be magic space swappers so this would not happen in English
by default.
Also fix a typo.
Change-Id: Ia40678c264e978509b5786290a75a3c57181648e
Also this change moves LatinKeyboard attributes,
autoCorrectionSpacebarLedEnabled, autoCorrectionSpacebarLedIcon,
spacebarTextRatio, spacebarTextColor, and spacebarTextShadowColor to
LatinKeyboardView.
Change-Id: I7cc27ce1fc550e9f620a9ed0fbe4b8172902d5a1
This is the last one (whew)
Also move a somewhat unrelated initialization out of the
input attribute initialization function.
Change-Id: Icc77b32fd16b112ab43786715061b1c9dca31c04