Files
frameworks_base/core/proto
Kohsuke Yatoh eae7ca8165 Do not cleanup IME window if show is requested.
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
2022-04-21 21:34:31 +00:00
..
…

Conventions for the protos in this directory:

  1. As in the rest of Android, use 4 spaces to indent instead of 2.

  2. For protos based on Java files, use the same package as the Java file. For example, com.android.server.thing instead of com.android.server.thing.proto.

  3. 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. WindowManagerServiceDumpProto vs WindowManagerServiceProto.

    • Inner messages whose containing messages have the Proto suffix do not need to have a Proto suffix. E.g:
message FooProto {
    message Bar {
        ...
    }
}
 vs
message FooProto {
    message BarProto {
        ...
    }
}
  1. If the proto represents the structure of an object, it should have Proto as its suffix. Please also include the full package path of the original object as a comment to the proto message.

  2. Include units in the field names. For example, screen_time_ms vs screen_time, or file_size_bytes or file_size_mebibytes vs file_size.

  3. Leave field numbers 50,000 - 100,000 reserved for OEMs.