)]}'
{
  "commit": "7eaf0f8b9abc15de6cdb30862f2c7a49b5d3c2aa",
  "tree": "9beca45ab4bb34982b9a417b539afde7ca1257ed",
  "parents": [
    "25730af6f6633d29d5824fbfd4fb3d893ead1eec"
  ],
  "author": {
    "name": "Cosmin Băieș",
    "email": "cosminbaies@google.com",
    "time": "Fri Jul 18 13:02:35 2025 +0200"
  },
  "committer": {
    "name": "Cosmin Băieș",
    "email": "cosminbaies@google.com",
    "time": "Thu Aug 07 16:55:57 2025 +0200"
  },
  "message": "Optimize InputMethodSubtypeSwitchingController\n\nThis avoids re-computing the list of items in the\nInputMethodSubtypeSwitchingController every time the IME Switcher Menu\nis requested, by instead storing the full list of items. These are still\nupdated whenever necessary (e.g. user, context or language change).\n\nAs this will be a superset of all the enabled IMEs and subtypes we could\nuse, this requires iterating and filtering when creating the list used\nfor switching, and the one used for the menu. However, this avoids\nrepeatedly calling into package manager to resolve the IME and subtype\nlabel resources. With these lists being usually small, this should\noverall improve performance.\n\nTo enable this, the logic for creating the list suitable for hardware\nkeyboard switching was merged into the main method. This presents a few\nchanges for the hardware keyboard list:\n  * sorted based on the IME label, and IME id\n  * removes duplicates based on the subtype hashcode\n\nThese two behaviours were already present on the main method, thus\ncombining them will provide more consistency in switching IMEs.\n\nFlag: EXEMPT cleanup\nBug: 347693610\nTest: atest InputMethodSubtypeSwitchingControllerTest\nChange-Id: I11280dd485faa06676e8292b95cecdb312d92460\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "1ff666e3ae4af3f1752ce01681222c5d9466c2e6",
      "old_mode": 33188,
      "old_path": "services/core/java/com/android/server/inputmethod/InputMethodManagerService.java",
      "new_id": "19bfc7d9b2622dcd4803ff98ee87a301726510aa",
      "new_mode": 33188,
      "new_path": "services/core/java/com/android/server/inputmethod/InputMethodManagerService.java"
    },
    {
      "type": "modify",
      "old_id": "5985f101d8f7352888e0210a9e1f812b43caa9ea",
      "old_mode": 33188,
      "old_path": "services/core/java/com/android/server/inputmethod/InputMethodSubtypeSwitchingController.java",
      "new_id": "b2a7b93ed98d84b36ca6aa4465d86cad9e3c2e10",
      "new_mode": 33188,
      "new_path": "services/core/java/com/android/server/inputmethod/InputMethodSubtypeSwitchingController.java"
    },
    {
      "type": "modify",
      "old_id": "cdf487c9e2ea62fdee8cdc2131e08b26afd18aaa",
      "old_mode": 33188,
      "old_path": "services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/InputMethodMenuControllerTest.java",
      "new_id": "664594dcb4cdcc7295bdb31f13af90034a7c20a5",
      "new_mode": 33188,
      "new_path": "services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/InputMethodMenuControllerTest.java"
    },
    {
      "type": "modify",
      "old_id": "32dc868f76317e0440ba7b87cf4a3a9765920ce9",
      "old_mode": 33188,
      "old_path": "services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/InputMethodSubtypeSwitchingControllerTest.java",
      "new_id": "3ed12b2ae65bc4dcced30ecc2e59f68faa257bf9",
      "new_mode": 33188,
      "new_path": "services/tests/InputMethodSystemServerTests/src/com/android/server/inputmethod/InputMethodSubtypeSwitchingControllerTest.java"
    }
  ]
}
