)]}'
{
  "commit": "dc24f937b031f5f4e153dbfeaa51e96415a09b71",
  "tree": "fdfddcf8359f3931bfd6a118bd6471d844916c79",
  "parents": [
    "94ae1e739fd84a308609fff3b913d0963900ed6e"
  ],
  "author": {
    "name": "Svet Ganov",
    "email": "svetoslavganov@google.com",
    "time": "Tue Jul 26 11:41:42 2016 -0700"
  },
  "committer": {
    "name": "Svetoslav Ganov",
    "email": "svetoslavganov@google.com",
    "time": "Mon Aug 01 11:46:02 2016 -0700"
  },
  "message": "Prevent apps to overlay other apps via toast windows\n\nIt was possible for apps to put toast type windows\nthat overlay other apps which toast winodws aren\u0027t\nremoved after a timeout.\n\nNow for apps targeting SDK greater than N MR1 to add a\ntoast window one needs to have a special token. The token\nis added by the notificatoion manager service only for\nthe lifetime of the shown toast and is then removed\nincluding all windows associated with this token. This\nprevents apps to add arbitrary toast windows.\n\nSince legacy apps may rely on the ability to directly\nadd toasts we mitigate by allowing these apps to still\nadd such windows for unlimited duration if this app is\nthe currently focused one, i.e. the user interacts with\nit then it can overlay itself, otherwise we make sure\nthese toast windows are removed after a timeout like\na toast would be.\n\nWe don\u0027t allow more that one toast window per UID being\nadded at a time which prevents 1) legacy apps to put the\nsame toast after a timeout to go around our new policy\nof hiding toasts after a while; 2) modern apps to reuse\nthe passed token to add more than one window; Note that\nthe notification manager shows toasts one at a time.\n\nbug:30150688\n\nChange-Id: Icc8f8dbd060762ae1a7b1720e96c5afdb8aff3fd\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "35b53a48e6e18385fd0b42b19c8232cc8f8cc6d5",
      "old_mode": 33188,
      "old_path": "core/java/android/app/ITransientNotification.aidl",
      "new_id": "d5b3ed0a44d80274de5003e873a414398a57c516",
      "new_mode": 33188,
      "new_path": "core/java/android/app/ITransientNotification.aidl"
    },
    {
      "type": "modify",
      "old_id": "48189106f2c4a3b7d9621db6f6ab27dc6833d115",
      "old_mode": 33188,
      "old_path": "core/java/android/view/SurfaceView.java",
      "new_id": "b6955a82a3ed4d08d563bf75fef39e892cb2da31",
      "new_mode": 33188,
      "new_path": "core/java/android/view/SurfaceView.java"
    },
    {
      "type": "modify",
      "old_id": "fe2423093c881e087aefb2c7b46e0a9cc06b4bfb",
      "old_mode": 33188,
      "old_path": "core/java/android/view/WindowManager.java",
      "new_id": "4a20619b000fefde27a7e2dea26fe378b9e2b135",
      "new_mode": 33188,
      "new_path": "core/java/android/view/WindowManager.java"
    },
    {
      "type": "modify",
      "old_id": "77626754264f1931b2fa63e2cd5b53d938edacac",
      "old_mode": 33188,
      "old_path": "core/java/android/widget/Toast.java",
      "new_id": "eca10cb5e7fd513f0032c5bef2c0a42b0b0f57b5",
      "new_mode": 33188,
      "new_path": "core/java/android/widget/Toast.java"
    },
    {
      "type": "modify",
      "old_id": "8b5942c85e4bb4d7ce402df8e66c55154b4dfacf",
      "old_mode": 33188,
      "old_path": "services/core/java/com/android/server/notification/NotificationManagerService.java",
      "new_id": "de1d7a76f7d80b940c2a75e036a91d25e73772c2",
      "new_mode": 33188,
      "new_path": "services/core/java/com/android/server/notification/NotificationManagerService.java"
    },
    {
      "type": "modify",
      "old_id": "09c2b2774f680370dbdfcdbea4cc226d14f01535",
      "old_mode": 33188,
      "old_path": "services/core/java/com/android/server/policy/PhoneWindowManager.java",
      "new_id": "68c4960da6131a29756eaf37987780c7e50d981c",
      "new_mode": 33188,
      "new_path": "services/core/java/com/android/server/policy/PhoneWindowManager.java"
    },
    {
      "type": "modify",
      "old_id": "8c5481d1a4d85ebed4e08d81b6e0250ce8433a60",
      "old_mode": 33188,
      "old_path": "services/core/java/com/android/server/wm/WindowManagerService.java",
      "new_id": "a4fcbb0a8ad71198f7b60c777d3db3234100787c",
      "new_mode": 33188,
      "new_path": "services/core/java/com/android/server/wm/WindowManagerService.java"
    },
    {
      "type": "modify",
      "old_id": "25ad07ef07a764d88e8e7e49757c032aa3edf0bd",
      "old_mode": 33188,
      "old_path": "services/core/java/com/android/server/wm/WindowState.java",
      "new_id": "7a3c07c6f303176232d8007906ed15111f747614",
      "new_mode": 33188,
      "new_path": "services/core/java/com/android/server/wm/WindowState.java"
    }
  ]
}
