)]}'
{
  "commit": "a06de0f29b58df9246779cc4bfd8f06f7205ddb6",
  "tree": "c8ecd3323c1112dd46a9470600eab5df022ca85c",
  "parents": [
    "2e9f65f978397d112dbfb134d374588515bb644a"
  ],
  "author": {
    "name": "Dianne Hackborn",
    "email": "hackbod@google.com",
    "time": "Tue Dec 11 16:34:47 2012 -0800"
  },
  "committer": {
    "name": "Dianne Hackborn",
    "email": "hackbod@google.com",
    "time": "Wed Jan 09 12:47:47 2013 -0800"
  },
  "message": "New \"app ops\" service.\n\nInitial implementation, tracking use of the vibrator, GPS,\nand location reports.\n\nAlso includes an update to battery stats to also keep track of\nvibrator usage (since I had to be in the vibrator code anyway\nto instrument it).\n\nThe service itself is only half-done.  Currently no API to\nretrieve the data (which once there will allow us to show you\nwhich apps are currently causing the GPS to run and who has\nrecently accessed your location), it doesn\u0027t persist its data\nlike it should, and no way to tell it to reject app requests\nfor various operations.\n\nBut hey, it\u0027s a start!\n\nChange-Id: I05b8d76cc4a4f7f37bc758c1701f51f9e0550e15\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "294a2fec15b8890aa89f38ed3b413101e88b6cbf",
      "old_mode": 33188,
      "old_path": "Android.mk",
      "new_id": "462d6acedc91f555dbb04e13f356a7f71d2b9337",
      "new_mode": 33188,
      "new_path": "Android.mk"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7210df40919a1825363531ef2202b12bbd958231",
      "new_mode": 33188,
      "new_path": "core/java/android/app/AppOpsManager.java"
    },
    {
      "type": "modify",
      "old_id": "74317656771fa88d6949e5ec5bd2dd8580047fb1",
      "old_mode": 33188,
      "old_path": "core/java/android/app/ApplicationPackageManager.java",
      "new_id": "03d1a3f3fec341bb6f9d449bb8b0d574be9e3cfb",
      "new_mode": 33188,
      "new_path": "core/java/android/app/ApplicationPackageManager.java"
    },
    {
      "type": "modify",
      "old_id": "f895cccbe25e8cbef0f3fda70b07604732887f40",
      "old_mode": 33188,
      "old_path": "core/java/android/app/ContextImpl.java",
      "new_id": "8ef708c0ec1cd85142a6b1241a7351b3b7891d25",
      "new_mode": 33188,
      "new_path": "core/java/android/app/ContextImpl.java"
    },
    {
      "type": "modify",
      "old_id": "257f84ef8e94200a6594be5785004d449fa5e8c3",
      "old_mode": 33188,
      "old_path": "core/java/android/content/Context.java",
      "new_id": "c777250743b6f4d0d2eefe803b13acedebe66554",
      "new_mode": 33188,
      "new_path": "core/java/android/content/Context.java"
    },
    {
      "type": "modify",
      "old_id": "8ba19881f09701f16a60f98edd32addfba99d25a",
      "old_mode": 33188,
      "old_path": "core/java/android/content/pm/PackageManager.java",
      "new_id": "cdd91951387c23ce77a25196b19b75c690f060a9",
      "new_mode": 33188,
      "new_path": "core/java/android/content/pm/PackageManager.java"
    },
    {
      "type": "modify",
      "old_id": "9821824502b68476824c65628b7949dea33d6358",
      "old_mode": 33188,
      "old_path": "core/java/android/os/BatteryStats.java",
      "new_id": "abbb6a1a5c4e7b3251c62aae1bb768c08dda645c",
      "new_mode": 33188,
      "new_path": "core/java/android/os/BatteryStats.java"
    },
    {
      "type": "modify",
      "old_id": "2c2fe8a189849bf7caf628932a8e17e8aac1dd31",
      "old_mode": 33188,
      "old_path": "core/java/android/os/IVibratorService.aidl",
      "new_id": "15cedf9f42a5425f1005d581ff66eddf4e64c5a0",
      "new_mode": 33188,
      "new_path": "core/java/android/os/IVibratorService.aidl"
    },
    {
      "type": "modify",
      "old_id": "7c5a47e5baf4776f208e64fee26f8c7658b4f534",
      "old_mode": 33188,
      "old_path": "core/java/android/os/SystemVibrator.java",
      "new_id": "54ea385426352f438dc66de32f1f2401b13be959",
      "new_mode": 33188,
      "new_path": "core/java/android/os/SystemVibrator.java"
    },
    {
      "type": "modify",
      "old_id": "cc9615260a0c691e295559e03cb183a2217b0171",
      "old_mode": 33188,
      "old_path": "core/java/android/os/UserHandle.java",
      "new_id": "d2052539ccb9cc5bfb32d7acef66eaaeca6c0bfc",
      "new_mode": 33188,
      "new_path": "core/java/android/os/UserHandle.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c93458797dfb13bbe431f510c9629a5720abffc2",
      "new_mode": 33188,
      "new_path": "core/java/com/android/internal/app/IAppOpsService.aidl"
    },
    {
      "type": "modify",
      "old_id": "1a76461f4f26a421f44c20e1177f82c7dc42a3a6",
      "old_mode": 33188,
      "old_path": "core/java/com/android/internal/app/IBatteryStats.aidl",
      "new_id": "823e19f21100b1bc599c2a8476de3dcc7d50ae01",
      "new_mode": 33188,
      "new_path": "core/java/com/android/internal/app/IBatteryStats.aidl"
    },
    {
      "type": "modify",
      "old_id": "94e7a068c7fb9873af90bee6c904942abc851a79",
      "old_mode": 33188,
      "old_path": "core/java/com/android/internal/os/BatteryStatsImpl.java",
      "new_id": "4d35a6bc3a2a48fa8324da0866b23a22912e0294",
      "new_mode": 33188,
      "new_path": "core/java/com/android/internal/os/BatteryStatsImpl.java"
    },
    {
      "type": "modify",
      "old_id": "9822e63b0319acb5a9db570f574c21ddf5a5a401",
      "old_mode": 33188,
      "old_path": "core/res/AndroidManifest.xml",
      "new_id": "e357255acc0873f95873114c06c55f3d99a364b2",
      "new_mode": 33188,
      "new_path": "core/res/AndroidManifest.xml"
    },
    {
      "type": "modify",
      "old_id": "cb8d0e5e8a20255705e5f4f016b0156ab71e8906",
      "old_mode": 33188,
      "old_path": "core/res/res/values/strings.xml",
      "new_id": "6a93860654bb949f0a9f1be6810d4caf1a165f81",
      "new_mode": 33188,
      "new_path": "core/res/res/values/strings.xml"
    },
    {
      "type": "modify",
      "old_id": "f663e0a0408559b967bc5056ec7cc943ae64fe48",
      "old_mode": 33188,
      "old_path": "location/java/android/location/ILocationManager.aidl",
      "new_id": "c353ec6efe46ae5776162753ac8d925a3b746c79",
      "new_mode": 33188,
      "new_path": "location/java/android/location/ILocationManager.aidl"
    },
    {
      "type": "modify",
      "old_id": "5a2f71b98c9bfcb19ceb16b13f62d7f1f11ee09a",
      "old_mode": 33188,
      "old_path": "location/java/android/location/LocationManager.java",
      "new_id": "0b9286ed62d5944c70ac4f0314a1cc648a186c32",
      "new_mode": 33188,
      "new_path": "location/java/android/location/LocationManager.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "5ad4be8d3bf6987afee4eb812694fc01b02aa58f",
      "new_mode": 33188,
      "new_path": "services/java/com/android/server/AppOpsService.java"
    },
    {
      "type": "modify",
      "old_id": "83b94e2c25d8a0aad8f6d46b5cd4864a7a36b776",
      "old_mode": 33188,
      "old_path": "services/java/com/android/server/LocationManagerService.java",
      "new_id": "9e40dc5ce82387cc222f83b491588a7c41c6ae8f",
      "new_mode": 33188,
      "new_path": "services/java/com/android/server/LocationManagerService.java"
    },
    {
      "type": "modify",
      "old_id": "a7b502ae97dd185108c7d48c2b466bfd1e1011e7",
      "old_mode": 33188,
      "old_path": "services/java/com/android/server/SystemServer.java",
      "new_id": "c33eb2b5ad05df6d8ad249b126a5f8d86660d85c",
      "new_mode": 33188,
      "new_path": "services/java/com/android/server/SystemServer.java"
    },
    {
      "type": "modify",
      "old_id": "df91decb31ed4faeafe296a3c5c038b0b6b84ad5",
      "old_mode": 33188,
      "old_path": "services/java/com/android/server/VibratorService.java",
      "new_id": "69379f17c3fc38212e5bbd00ab049aa1662c3450",
      "new_mode": 33188,
      "new_path": "services/java/com/android/server/VibratorService.java"
    },
    {
      "type": "modify",
      "old_id": "62af91e7602316267d26c0abd0c2981cb643e530",
      "old_mode": 33188,
      "old_path": "services/java/com/android/server/am/ActivityManagerService.java",
      "new_id": "b08fc2842bfab0c2255cf1fa9f5b751a2d9b0405",
      "new_mode": 33188,
      "new_path": "services/java/com/android/server/am/ActivityManagerService.java"
    },
    {
      "type": "modify",
      "old_id": "ab20208403d62f897a5bc9982d2872d4504191e9",
      "old_mode": 33188,
      "old_path": "services/java/com/android/server/am/BatteryStatsService.java",
      "new_id": "d19c7f6c762051c2fc96e3577613dda3f3943b3a",
      "new_mode": 33188,
      "new_path": "services/java/com/android/server/am/BatteryStatsService.java"
    },
    {
      "type": "modify",
      "old_id": "7f059f57f0133b4723b7d0f4ad328ceb20300f1a",
      "old_mode": 33188,
      "old_path": "services/java/com/android/server/location/GpsLocationProvider.java",
      "new_id": "f1739d56baeb0ea71af860595bc36e0823393edb",
      "new_mode": 33188,
      "new_path": "services/java/com/android/server/location/GpsLocationProvider.java"
    },
    {
      "type": "modify",
      "old_id": "2eba4e1165427d549f2a3aaf6525bbc241b375b5",
      "old_mode": 33188,
      "old_path": "test-runner/src/android/test/mock/MockPackageManager.java",
      "new_id": "5ee52de0a32db57fb830463c2310b5f01362ee86",
      "new_mode": 33188,
      "new_path": "test-runner/src/android/test/mock/MockPackageManager.java"
    }
  ]
}
