There is no need to do it repeatedly in this loop: it's
clearer and faster to do it at the end only.
Bug: 8526576
Change-Id: I707571179c89479830891ec6d4fd06a9fffed7c1
There are many ways to fix this problem but this is the most
direct way. Removing a view from the cache when any animation
is started will ensure it won't be used again, and will be garbage
collected when it's possible. Since views are created on demand
anyway, a new one will just get created when needed, and that's
it.
Bug: 9400128
Change-Id: I4945d2859d642e79694d51ae90cf4f5bde9a5f1d
Emit a trace when a new dictionary is copied to LatinIME
successfully, not just when it fails. That will help diagnosing
some problems by being able to ensure this step succeeded
looking at the log.
This does not happen often (like, maybe 3 times at device
activation, and once every few weeks afterwards), so I think
the extra line in the log is more than acceptable.
Change-Id: I1674bc22d950a7be801076c5aa7e8bbebccab14b
JsonUtils knows how to output MotionEvents into json; that mechanism
should be reused for SuddenJumpingTouchEventHandler.
Change-Id: Id4c36c05533a3a329bf43ba33d57c0830dc4d196
This change also eliminates a reference of
AudioAndHapticFeedbackManager from KeyboardSwitcher and MainKeyboard.
Bug: 6522943
Change-Id: Iac42ec8ff00c66deb76a660ffc07477923a58959
This patch does two things:
- If there is no URL to download new data from, then the
Refresh button is not shown.
- Even if for some reason refresh starts for a client for
which there is no URL, loading correctly finishes.
Bug: 9388602
Change-Id: I3fd9214da50faa4b59d0bd3e775293dd34f07547
This is much better interface-wise. It eliminates all blinking
of the line in the practice.
Bug: 8874148
Bug: 8864306
Change-Id: I87754e44784327c2e9c8b162d598d145e20668e8
There is no reason not to contact the dictionary provider
when we don't have internet permission or when the URL
is empty. It knows how to handle both these cases.
Bug: 9388602
Change-Id: I30c4540551ad2f5e527d3acd1842bbd749feca89
This change records the number of words entered in every LogUnit.
This metric is helpful for determining how much multi-word gestures
and spaceless tapping is used.
Change-Id: I4c6d0f9d78e4ac2dd63fd53ed2ec70b368366f15
I548d899b introduced a new method to fix a sync miss between
the cursor position and the cached cursor position, but did not
take into account that it should also update the cached text
before and after the cursor in this case and that there was
already a method for doing this.
Change-Id: I31bd741893207c822827304e77791b1159774e1a
When there is only one suggestion, this code does
not work. The reason for that is, it's not homogeneous
at all and takes indices of one thing into another.
Not completely related to b/8839763, but realized
working on this and needed to have it addressed.
Bug: 8839763
Change-Id: I422730cc7eebb69ff421a171025af0390ebcdf92
in the hope of avoiding UnsatisfiedLinkError. This is definitely not a
confident fix as we still don't know the root cause of the issue.
bug: 9325110
Change-Id: I1abf8031b98509f63fce6a2d069d497895ea712c
SpannableStrings are not the only type of Spanned, they are
only the mutable kind. SpannedString is the immutable one.
Spanned is the correct class to use there.
Bug: 8839763
Bug: 8862327
Change-Id: Ic5e6199a51f22368914f2748ac2d0d1ca6a33f78
This changes how the Range class stores its data, but not its
functionality. It also improves encapsulation a bit.
Bug: 8839763
Bug: 8862327
Change-Id: I5bd583b3fc96a99b93a2632882d8fd587c03ab76
The documentation for setComposingRegion states explicitly
that it does not move the cursor. This is just a bug.
This does not have any ill effects right now, but it will have
in later changes if not fixed.
As for the selection handling, the specific test that this code
removes used to serve a purpose, but it does not any more because
the code using the value has been much sanitized. Now the variable
can just take the obvious value, and become so self-explanatory
that the comments are unnecessary.
Change-Id: I548d899b38776bd3ab5f5361aab0d89d98f12e73
This cuts the time spent in computeNearestNeigbors by
a factor of 6 to 20, with an average at about 8.
This method representing about 25% of the total time
spent when switching keyboards, this change is a
20% improvement in layout switching time.
Bug: 8689779
Change-Id: Icb465f6010b317c7156057891c3341e51a198688
As a preparation to show "system default" in the settings. LatinIME
can't know the actual system default value.
Bug: 9468462
Change-Id: I0b7898d1ca29ded7a619dd636d2ad16eb0db292e
This will spare a lot of IPC for Latin IME at the cost of very little
retained memory.
This improves the loading by potentially a lot - between 15 and 30%
when the layout is cached (which should now be the case almost every
time), and half that if it's not. More importantly, it makes the
load time less sensitive to high device load, which is one of the
sore points.
Bug: 8689779
Change-Id: I2e07736f1a92c38eed0e203bc690761a181da8b9
If the logger feedback screen is up and the user hits the home button or the
keyboard otherwise closes, the system won't let the user enter feedback again,
because it is waiting for the user to finish the first one.
With this change, the state associated with the feedback screen is
cleared when the user closes the keyboard.
b/9398772
Change-Id: I832a82793ad42e31b6b3fdb04fabcea75facde7d
In setup wizard, InputMethodManager may not be able to be aware that
this IME is installed, especially just after the IME is installed via
GooglePlay app and hit the open button on the app to launch the setup
wizard.
Bug: 9299618
Change-Id: I00c8544178b41074253d49ae9481996ec56593d2
This is a bit of a shot in the dark, as I really don't see how this
can happen, but this should fix it in the correct way no matter
how it's actually happening.
Bug: 9301836
Change-Id: I472865b7a78883942c9fd46773238c23788674f8
This change utilizes the no panel auto more key feature to implement
long press shift key for shift lock.
Change-Id: I3995d25dc35aea3c67b5aa29299815462eff9cad
Now that separators are put into their own LogUnits, they must be handled
when going through a revert.
Bug: 9088919
Change-Id: Ibebd0752bb2fa38d74ac96001d63070dd419cee3
A LogUnit is only uncommitted if the LogUnit's word matches what is
expected. But a LogUnit never stores numbers, only scrubbed words that
replace numbers with a special character. So when uncommitting, the
text from the TextView must also be scrubbed for the comparison to pass
correctly.
Bug: 9088919
Change-Id: I9b56f10afce6d0cc84eb9ead3b9a9b1e061ae39c
Now that separators have their own LogUnits, they must be uncommitted
from the LogBuffer when backspacing over them.
Bug: 9088919
Change-Id: Ib36cc94939b93abe18850a06bced17caf8aaa5b9
The period-generating double-space adds an extra LogUnit --
it must be removed when reverting.
Bug: 9088919
Change-Id: Ic148f40b4030a9b4a0651029bda87f7b94a52252
Currently when the user reverts a batch input, a LogUnit is uncommitted
from the LogBuffer. It should not be, because the LogUnit containing the
batch input is never committed in the first place (it is only committed
to the LogBuffer when a key is pressed or a new batch input is entered).
Bug: 9088919
Change-Id: I323af453ce082437a663ccae977b21b775a964bc
It turns out giving them in the right order is not enough, you
also have to actually give them a numeric priority.
Bug: 9165928
Change-Id: I2ecff38f65b70746feeeeb0ed2cc86a586a35363
This should be done in onFinishInput rather than onFinishInputView
but for an unknown reason onFinishInput never comes.
Bug: 9113167
Change-Id: Iafb40846a3ed8fad78bfc160d17cd431f81fe891
The default implementation for preferences refuses to
cache the views for custom preferences at all. We can
do it, but the system won't do it for us, so this does it.
This makes the screen scrolling smooth again.
Incidentally it also fixes the bug where the button may
not animate on the first element.
Bug: 8882722
Bug: 8883108
Change-Id: I9b2306ac4bf93761a808ebfee3477a65f017cddf
This change renames containsCorrection to avoid confusion with
CorrectionInfo, and to better clarify its meaning.
Change-Id: I5d8f8e2b03133c15a60d4e8b0f395cda1fff5447
Word boundaries are currently logged, but only if all the
details of a word pass the privacy filter and are logged.
This change records when a word is committed in all cases,
but does not disclose the word contents or any data used in
its construction.
Addresses b/9070768
Change-Id: I573679d0685c088aca65af99e46337a2f429f816
Currently isAllowedToLog only checks the state of the
ResearchLogger, and does not consider which log the data is
going to. This causes problems with the logs for Feedback.
The Feedback log should inhibit normal logging procedures,
but the system needs to be able to write specific data
directly to it.
This change renames to isAllowedToLogTo and adds the
destination ResearchLog as a parameter. A FeedbackLog is also
added as a new class so it can be distinguished from other
ResearchLogs.
Change-Id: I5a1eea05bb040c26bf816b89179f44b3024fa2ad
Punctuation is currently put into the same LogUnit as the
following word. This is counter-intuitive and makes
post-processing more complicated.
This change causes punctuation to be put into its own
LogUnit.
A tricky case is the phantom space. A phantom space is
inserted right before other text, whose MotionEvents have
already been collected and inserted into mCurrentLogBuffer.
Phantom spaces are handled by creating their own LogUnit and
inserting it into the LogBuffer right before
mCurrentLogBuffer is shifted in.
Change-Id: I102d7cd93982ad37ba0abb6c1ac0f66b85b5f95d
When the user reverts a commit, this causes the committed
word to be changed. The user usually then goes back to edit
that word. Going back to edit causes an uncommit, so that
the editing actions are added onto the LogUnit containing
the operations used to construct the word.
But currently, reverting also involves its own
commit/uncommit pair, with the caller performing the
uncommit, and the commit happening inside the revert
command. This may have been necessary in the past, when
revert was called in different situations, but is
unnecessary now. Furthermore, the guarding conditions are
currently such that the uncommit doesn't always undo the
effects of the commit, corrupting the log output.
Change-Id: I74af41f4f1db2fcabfa496dcc4a2d7bd0af19b3a
For a while, the ResearchLogger supported comprehensive recording of the
last few words in case the user wished to upload this data to give
developers feedback. However, this mechanism was not implemented well
(keeping a separate copy of the data), did not make the collected data
clear to the user, and was not working properly in the latest build (NPEs).
The mechanism in fact was deprecated in favor of the "userRecording"
mechanism in which the user explicitly turned on comprehensive recording,
demonstrated the issue they were experiencing, and then turned it off.
This change removes the vestiges of the FeedbackLogging mechanism.
A feedback log is still used to hold the user's message, but it is created
in a local variable as-needed, and not persisted in ResearchLogger.
Change-Id: I6a09d0ed36e1eddb6e57895e7428d22107f75f49
The IS_INHIBITING_AUTO_UPLOAD flag is tested in isPossibleToUpload, so it inhibits all uploads, not
just automatic ones. Renaming to IS_INHIBITING_UPLOAD.
Change-Id: Iceed79260d4b062147f40c09f0c5bb06b2519b1b
This change registers the functional key when sliding input mode is
end at the functional key itself.
Bug: 8915171
Change-Id: I2031e2aa4ebf33684221fc44d4a808112489724f
JsonWriter requires that its clients pass it only a single top-level object.
The existing implementation tries to make code cleaner by having mJsonWriter
never be null, and instead use a global static "NULL_JSON_WRITER" that just
discards data. But because JsonWriter complains if more than one top-level
object is passed, making this a global object does not work. This change
instead copes with mJsonWriter being null.
Change-Id: Ia37ccfc8646e91f11a64713dd92d2846eb86ac54