)]}'
{
  "commit": "f9ba3f64c07fd5fc6b93523e78751dbe26a93400",
  "tree": "5343025d770c66450104a5322113b6b0b8ba333c",
  "parents": [
    "bf0730ed6828523c2445c20e3a87b2ce324aa502"
  ],
  "author": {
    "name": "Pinyao Ting",
    "email": "pinyaoting@google.com",
    "time": "Wed Jun 29 17:05:23 2022 -0700"
  },
  "committer": {
    "name": "Pinyao Ting",
    "email": "pinyaoting@google.com",
    "time": "Thu Jun 30 19:50:17 2022 +0000"
  },
  "message": "Fix AppPrediction/Smartspace leak\n\nAppPrediction and Smartspace session info are associated with two types of Binder objects: one maps to the client object (i.e. AppPredictor/SmartspaceSession) that represents the session itself, the other one maps to the callback functions that handles incoming update at the client side.\n\nThe death recipient of the former performs the clean-up which removes\nthe session info object from system process followed by calling a destroy on the session info object, while the other one simply calls destroy.\n\nUnfortunately upon destroy of the session info object, we unlink the\nformer from its death recipient, which means if the callback function\nobjects died before the session object in the client process, the death recipient is unlinked, therefore the clean-up will not be performed.\n\nBoth the callback function object and the session info object lives in the same process, when the process dies, both object dies, so there\u0027s no reason to having cleanup logic in both places.\n\nThis CL removes the death recipient associated with the callback in favor of the one associated with the session since the later provides more coverage, e.g. in case the process died before it start listening to prediction updates.\n\nBug: 230696939\nTest: manual\nChange-Id: I27641d347c2b436eaafba306842854a97a440f7a\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "1af8ad34419057d23671a331296dc5b1dcc2c592",
      "old_mode": 33188,
      "old_path": "services/appprediction/java/com/android/server/appprediction/AppPredictionPerUserService.java",
      "new_id": "84707a8d9c00385ce88553809881304cc2d6630b",
      "new_mode": 33188,
      "new_path": "services/appprediction/java/com/android/server/appprediction/AppPredictionPerUserService.java"
    },
    {
      "type": "modify",
      "old_id": "dcffc9e73c0e0fcda280aa42785df82fc72ea90c",
      "old_mode": 33188,
      "old_path": "services/smartspace/java/com/android/server/smartspace/SmartspacePerUserService.java",
      "new_id": "f041fbd7bf902e073eaae9ded851876ac740d4ba",
      "new_mode": 33188,
      "new_path": "services/smartspace/java/com/android/server/smartspace/SmartspacePerUserService.java"
    }
  ]
}
