This CL fixes a race condition for IMM#showSoftInput, which surfaces
when it's called during an IME hide animation.
IMM#showSoftInput ends up calling WIC#show asynchronously, but at that
time the running IME hide animation may have already been finished
successfully, and WIC#show may fail to cancel the hide animation
(then the cleanup IMM#notifyImeHidden hides the IME again disruptively).
I think a clean fix is to have IMM#showSoftInput call WIC#show
synchronously. However, this requires a significant refactoring.
As a short term fix, this CL adds a boolean field indicating whether or
not IMM#showSoftInput has been called. If it's called, we skip calling
IMM#notifyImeHidden.
Bug: 221483132
Bug: 225674038
Test: atest InputMethodStressTest
Test: atest CtsInputMethodTestCases
Test: atest WindowInsetsAnimationControllerTests
Change-Id: I36d570630085d0bc34097a2433208601dc9cb0fd
(cherry picked from commit 4c607982ed)
Merged-In: I36d570630085d0bc34097a2433208601dc9cb0fd
Conventions for the protos in this directory:
-
As in the rest of Android, use 4 spaces to indent instead of 2.
-
For protos based on Java files, use the same package as the Java file. For example,
com.android.server.thinginstead ofcom.android.server.thing.proto. -
If the proto describes the top level output of dumpsys, it should contain
Dump. This makes it easy to understand that the proto is the dumpsys output of a certain service, not the data structure of that service, e.g.WindowManagerServiceDumpProtovsWindowManagerServiceProto.- Inner messages whose containing messages have the
Protosuffix do not need to have aProtosuffix. E.g:
- Inner messages whose containing messages have the
message FooProto {
message Bar {
...
}
}
vs
message FooProto {
message BarProto {
...
}
}
-
If the proto represents the structure of an object, it should have
Protoas its suffix. Please also include the full package path of the original object as a comment to the proto message. -
Include units in the field names. For example,
screen_time_msvsscreen_time, orfile_size_bytesorfile_size_mebibytesvsfile_size. -
Leave field numbers 50,000 - 100,000 reserved for OEMs.