Introduce InputMethodInfoSafeList

With this CL we start using InputMethodInfoSafeList to transfer
List<InputMethodInfo> over Binder IPC so that we do not need to worry
about TransactionTooLargeException any more. The new behavior is fully
flag-guarded.

This should enable us to remove our past workarounds [1][2] in the
future.

 [1]: Ibb2940fcc02f3b3b51ba6bbe127d646fd7de7c45
      f06569561fe1c6e898debf8bb9f37331a9f87323
 [2]: I51703563414192ee778f30ab57390da1c1a5ded5
      eed1008252d8e2e9411c0813cc43ad4bf0fbd624

Note on backport:
This change was initially added with a flag guard, but for backporting,
the flag guard is removed and change is directly applied.

Bug: 339761278
Bug: 449416164
Bug: 449181366
Bug: 449393786
Bug: 449227003
Test: atest FrameworksInputMethodSystemServerTests:InputMethodInfoSafeListTest
(cherry picked from commit 93d66878027908c4986ef27aeb4338557bd25f3d)
Cherrypick-From: https://googleplex-android-review.googlesource.com/q/commit:342d0771f6f8cbca4152d101b5bd671b88fd7213
Merged-In: I0a7667070fcdf17d34b248a5988c38064588718a
Change-Id: I0a7667070fcdf17d34b248a5988c38064588718a
6 files changed