)]}'
{
  "commit": "5ff8ba7ace9b748892a2406995fe3eca87f682d4",
  "tree": "a57c28bb8738ff327b291106f16d6eafb015b4ad",
  "parents": [
    "0c72f4f9d04077f2fe96b486b8501303325a54af"
  ],
  "author": {
    "name": "riddle_hsu",
    "email": "riddle_hsu@htc.com",
    "time": "Fri May 15 11:33:03 2015 +0800"
  },
  "committer": {
    "name": "Wale Ogunwale",
    "email": "ogunwale@google.com",
    "time": "Fri May 15 10:17:21 2015 -0700"
  },
  "message": "Fix lost singleton provider after force-stopping user or package.\n\nCase 1 (name \u003d\u003d null):\nSwitch user from guest to owner. All processes of guest\nwill be killed, it will not include processes which singleton\ncomponents live in, but singleton provider records are still\ncollected and removed.\n\nWhen the user switch is complete and the process of removed\nsingleton provider is still alive, there is someone access\nthe provider, it will create a new ContentProviderRecord and\nwait but no one will notify it because the provider process\nis alive with different ContentProviderRecord.\n\nThen the access cannot get response unless the process of target\nprovider is died and restarted.\n\nCase 2 (name !\u003d null):\nSwitch to another non-guest user, launch an application which\ncontains singleton provider. Go to Settings to force-stop the\npackage then switch back to owner user. Launch an application\nwhich will access the singleton provider. It will also cannot\nget response that similar as case 1.\n\nSolution:\nOnly collect singleton provider if target user is all or owner.\n\nChange-Id: Ic6828da66645172d1378cfb1f66d092df5966516\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a1dc3e3c076956ac6fdf9b3a3f7e2882a716bb8c",
      "old_mode": 33188,
      "old_path": "services/core/java/com/android/server/am/ProviderMap.java",
      "new_id": "ed8b1dd7fcd5d7461b907355e4abf603b57b4683",
      "new_mode": 33188,
      "new_path": "services/core/java/com/android/server/am/ProviderMap.java"
    }
  ]
}
