)]}'
{
  "commit": "9065310f814d38c5d8dea5f01655b30e4996fef4",
  "tree": "99a3b9e1295a80291fbbbc226819544e7a6e0baa",
  "parents": [
    "2fd5575fef07dd3155445d26064d5470b2817239"
  ],
  "author": {
    "name": "Kohsuke Yatoh",
    "email": "kyatoh@google.com",
    "time": "Tue Apr 12 15:14:53 2022 -0700"
  },
  "committer": {
    "name": "Kohsuke Yatoh",
    "email": "kyatoh@google.com",
    "time": "Wed Apr 20 15:13:55 2022 -0700"
  },
  "message": "Notify IMMS synchronously on IME insets hidden.\n\nCurrently, IMMS will be notified asynchronously when an IME hide\nanimation finishes, via message dispatching through IMS\n(IMM#notifyImeHidden -\u003e IMS#notifyImeHidden -\u003e IMMS#hideMySoftInput).\nThis creates a race condition when IMM#showSoftInput or WIC#show is\ncalled around the end of hide animation.\n\nThis CL fixes the race condition by synchronously and directly\ncalling IMMS#hideSoftInput from IMM#notifyImeHidden.\n\nNote that there is still another race condition for IMM#showSoftInput\n(not WIC#show) if it\u0027s called during an IME hide animation;\nIMM#showSoftInput ended up calling WIC#show asynchronously, but at that\ntime the running IME hide animation may have already been finished\nsuccessfully and WIC#show may fail to cancel the hide animation\n(then the cleanup IMM#notifyImeHidden hides the IME again disruptively).\nI will fix the latter issue in a separate CL.\n\nBug: 221483132\nBug: 225674038\nTest: atest InputMethodStressTest\nTest: atest CtsInputMethodTestCases\nTest: atest WindowInsetsAnimationControllerTests\nChange-Id: I7c71dc5a1d6b61aa79d1666f0e257e6401e4adb2\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "eccbb403b30681036c131f8ab8ca0ebd868ffc9d",
      "old_mode": 33188,
      "old_path": "core/java/android/inputmethodservice/IInputMethodSessionWrapper.java",
      "new_id": "9a7ccc64efcd17ca2927477bac0360ab20b7a9df",
      "new_mode": 33188,
      "new_path": "core/java/android/inputmethodservice/IInputMethodSessionWrapper.java"
    },
    {
      "type": "modify",
      "old_id": "378b366d893ee5787f73def2d8a789fec26bf087",
      "old_mode": 33188,
      "old_path": "core/java/android/inputmethodservice/InputMethodService.java",
      "new_id": "6f880069c939343bc86e30f36623d1ab7f17c33c",
      "new_mode": 33188,
      "new_path": "core/java/android/inputmethodservice/InputMethodService.java"
    },
    {
      "type": "modify",
      "old_id": "d609fb8eb2342684a2851947028bc8cb3267e1f7",
      "old_mode": 33188,
      "old_path": "core/java/android/view/ImeInsetsSourceConsumer.java",
      "new_id": "a3e654884ca53b6cee312649d2b4f4065e68586d",
      "new_mode": 33188,
      "new_path": "core/java/android/view/ImeInsetsSourceConsumer.java"
    },
    {
      "type": "modify",
      "old_id": "3fd6ae7a41cf9b4de00770c6991a14503c43b06f",
      "old_mode": 33188,
      "old_path": "core/java/android/view/inputmethod/InputMethodManager.java",
      "new_id": "0c16e34ae08ed24fbdab2af5a498816121bd7b15",
      "new_mode": 33188,
      "new_path": "core/java/android/view/inputmethod/InputMethodManager.java"
    },
    {
      "type": "modify",
      "old_id": "a178ee8ee866ec5d180b471ecdb0ea0f0b0d89e1",
      "old_mode": 33188,
      "old_path": "core/java/android/view/inputmethod/InputMethodSession.java",
      "new_id": "28c44507e43cbeb9e083c831f6b62085cfbd0866",
      "new_mode": 33188,
      "new_path": "core/java/android/view/inputmethod/InputMethodSession.java"
    },
    {
      "type": "modify",
      "old_id": "a1995202485fcf8901ca97e9a7205f675ba9d983",
      "old_mode": 33188,
      "old_path": "core/java/android/view/inputmethod/InputMethodSessionWrapper.java",
      "new_id": "ee22b650854945614764c050e533620f315f6b82",
      "new_mode": 33188,
      "new_path": "core/java/android/view/inputmethod/InputMethodSessionWrapper.java"
    },
    {
      "type": "modify",
      "old_id": "b9eb997b851b9afda79717c4df28a3eecf3d9971",
      "old_mode": 33188,
      "old_path": "core/java/com/android/internal/view/IInputMethodSession.aidl",
      "new_id": "d505c1995deff94273ebd0ed1a44388702bd8a44",
      "new_mode": 33188,
      "new_path": "core/java/com/android/internal/view/IInputMethodSession.aidl"
    },
    {
      "type": "modify",
      "old_id": "1c957d4d78cf8c176e97588a8954be604173ba44",
      "old_mode": 33188,
      "old_path": "tests/InputMethodStressTest/src/com/android/inputmethod/stresstest/ImeOpenCloseStressTest.java",
      "new_id": "f01b9b43710774ff443d1659b631e46a0b31b815",
      "new_mode": 33188,
      "new_path": "tests/InputMethodStressTest/src/com/android/inputmethod/stresstest/ImeOpenCloseStressTest.java"
    }
  ]
}
