)]}'
{
  "log": [
    {
      "commit": "df4ee721cbb3d33879be1ca09017710abd20a9ed",
      "tree": "2f0122da5f54a9440618829e36f112922b1ec924",
      "parents": [
        "ff92dd69af5d95c00ef6ce9285c97d3e937cd704"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Nov 04 20:19:33 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Nov 07 12:22:39 2011 -0800"
      },
      "message": "Fix possible leak in Parcel::writeDupFileDescriptor.\n\nAlso, check the result of dup() just in case we got EMFILE\nor something.\n\nChange-Id: I18e627bd84f4c7941813fe1c2bad2cdd9e5afa83\n"
    },
    {
      "commit": "bd79a9c9f39482b3a9560d03cb045ec4e3b87486",
      "tree": "90d3ebbe31b26daa57c670ab884bbadc46a6f062",
      "parents": [
        "2abb2abea05fddd9ec2a1d6c831f1e62c37c7fa3",
        "88061d6b38cfb4bf374039846b753a3b21ac61e1"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Nov 07 15:51:31 2011 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Nov 07 15:51:31 2011 +0000"
      },
      "message": "am 88061d6b: am 5462bc63: Fix a leak in Parcel::writeBlob.\n\n* commit \u002788061d6b38cfb4bf374039846b753a3b21ac61e1\u0027:\n  Fix a leak in Parcel::writeBlob.\n"
    },
    {
      "commit": "88061d6b38cfb4bf374039846b753a3b21ac61e1",
      "tree": "0d4656659add969e8015e5019d85d2bf18d89940",
      "parents": [
        "2ccc47b89868d4f39683e0e2bd057ce95d7d1217",
        "5462bc6318b4b70e7a58c66994e2bd79f59d9739"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sat Nov 05 02:35:57 2011 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Nov 05 02:35:57 2011 +0000"
      },
      "message": "am 5462bc63: Fix a leak in Parcel::writeBlob.\n\n* commit \u00275462bc6318b4b70e7a58c66994e2bd79f59d9739\u0027:\n  Fix a leak in Parcel::writeBlob.\n"
    },
    {
      "commit": "5462bc6318b4b70e7a58c66994e2bd79f59d9739",
      "tree": "4c5c4b7980974adb8c5fc11df32e1a523cd94306",
      "parents": [
        "348297abc0e03fb87a1d22465020b580d83fdd61"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Nov 04 19:01:44 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Nov 04 19:26:03 2011 -0700"
      },
      "message": "Fix a leak in Parcel::writeBlob.\n\nWas mistakenly assuming that Parcel::writeFileDescriptor took\nownership of the fd that was passed in.  It does not!\nAdded some comments and a default parameter to allow the caller\nto specify whether it wishes the Parcel to take ownership.\n\nBug: 5563374\nChange-Id: I5a12f51d582bf246ce90133cce7690bb9bca93f6\n"
    },
    {
      "commit": "bce45617083209583d61afbea50994f2cdcda459",
      "tree": "6383fcce42736e7aca6189370a555a97cad22780",
      "parents": [
        "94e08f40936b6a280f404e8b67cb5ef900747258",
        "2d280f754e32e556407df05d977cfabdfff1c070"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Oct 30 14:24:02 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Oct 30 14:24:02 2011 -0700"
      },
      "message": "resolved conflicts for merge of 2d280f75 to ics-mr1\n\nChange-Id: I459e1cb0b60fb94dfb12862fedb9f8d949c226a7\n"
    },
    {
      "commit": "89101cd9d9b5c1a6ff1ed85eba0613ca4c4802e2",
      "tree": "f155cc2da9ab892b29262bc6b161c2bf51f34988",
      "parents": [
        "c43b9b6d97ed6dc40e181843aa79159c504e7004"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Oct 27 21:24:54 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Oct 28 14:58:39 2011 -0700"
      },
      "message": "Improve the slow query instrumentation.\n\nOn user-debug and eng builds, you can set the\n\"db.log.slow_query_threshold\" system property to queries that\ntake longer than the specified number of milliseconds.\nSet it to 0 to log all queries.\n\nThis property has been around for a while but it was implemented\npoorly.  In particular, it *changed* the behavior of the query\nby calling getCount() while holding the Db connection.\nIn normal operation, the query will not actually run until later.\n\nBy putting the timing logic into fillWindow() instead, we ensure\nthat we only measure queries that actually ran.  We also capture\ncases where the cursor window gets filled multiple times.\n\nBug: 5520301\nChange-Id: I174f5e1ea15831a1d22a36e9a804d7755f230b38\n"
    },
    {
      "commit": "650de3dcfcbc7635da3c070410ef1dc4027ae464",
      "tree": "93cb485d70a4388a76397e6f65a80c1a059425fb",
      "parents": [
        "4257e3b18118200e29a3125a12044c4572c1baf5"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Oct 27 14:52:28 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Oct 28 01:46:18 2011 -0700"
      },
      "message": "Optimize fillWindow to improve reverse-seek performance.\nBug: 5520301\n\nWhen an application requests a row from a SQLiteCursor that\nis not in the window, instead of filling from the requested\nrow position onwards, fill from a little bit ahead of the\nrequested row position.\n\nThis fixes a problem with applications that seek backwards\nin large cursor windows.  Previously the application could\nend up refilling the window every time it moved back\none position.\n\nWe try to fill about 1/3 before the requested position and\n2/3 after which substantially improves scrolling responsiveness\nwhen the list is bound to a data set that does not fit\nentirely within one cursor window.\n\nChange-Id: I168ff1d3aed1a41ac96267be34a026c108590e52\n"
    },
    {
      "commit": "71f2cf116aab893e224056c38ab146bd1538dd3e",
      "tree": "75a9162a0ea00830184b12a9ca51d3a1a040a5bb",
      "parents": [
        "1da79501066a74b630c8aa138db0f86ab6c690bb"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Thu Oct 20 11:56:00 2011 +0100"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Wed Oct 26 09:57:54 2011 +0100"
      },
      "message": "Rename (IF_)LOGV(_IF) to (IF_)ALOGV(_IF)  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/#/c/143865\n\nBug: 5449033\nChange-Id: I0122812ed6ff6f5b59fe4a43ab8bff0577adde0a\n"
    },
    {
      "commit": "28d9f024e043817212b15f04128d0464330502ea",
      "tree": "7e2c86394b95b0eae87810cca3cfa1b2dd98ef5e",
      "parents": [
        "2536b1d627c0296531a91dc519ee8d84ed505291"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Wed Oct 12 17:27:03 2011 +0100"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Tue Oct 25 16:28:24 2011 +0100"
      },
      "message": "Rename (IF_)LOG() to (IF_)ALOG()  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/#/c/141576\n\nBug: 5449033\nChange-Id: I42575e7c29cf1c0f465c357a5c97ab118df6f473\n"
    },
    {
      "commit": "5e5d6d8ba04d7579df840cda055cd5dfa9d7666f",
      "tree": "b9c47baaa3b62795dfc12645da4bed2eb5d3ec13",
      "parents": [
        "5b2dda3be5cc903aafb77ce7902c14d76eb26a9b"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Oct 12 15:41:34 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Oct 12 22:19:41 2011 -0700"
      },
      "message": "Deprecate local-only CursorWindows.\n\nThere is no difference and has never really been a difference\nbetween local-only and remotable CursorWindows.  By removing the\ndistinction officially in the API, we will make it easier to\nimplement CrossProcessCursor correctly.  CrossProcessCursor\nis problematic currently because it\u0027s not clear whether a call\nto getWindow() will return a local-only window or a remotable window.\nAs a result, the bulk cursor adaptor has special case handling\nfor AbstractWindowedCursors vs. ordinary CrossProcessCursors\nso that it can set a remotable window before the cursor fills it.\nAll these problems go away if we just forget about local-only\nwindows being special in any way.\n\nChange-Id: Ie59f517968e33d0ecb239c3c4f60206495e8f376\n"
    },
    {
      "commit": "0cde89f5f025b7826be009ebb9673b970e180e32",
      "tree": "ee6a4c95c0b07890353a813afb15a52334384f0d",
      "parents": [
        "99f36683a4f2c218d52922ae7c2a0c0b3f2890ed"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Oct 10 14:50:10 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Oct 11 11:03:19 2011 -0700"
      },
      "message": "Use ashmem for CursorWindows.\nBug: 5332296\n\nThe memory dealer introduces additional delays for reclaiming\nthe memory owned by CursorWindows because the Binder object must\nbe finalized.  Using ashmem instead gives CursorWindow more\ndirect control over the lifetime of the shared memory region.\n\nThe provider now allocates the CursorWindows and returns them\nto clients with a read-only protection bit set on the ashmem\nregion.\n\nImproved the encapsulation of CursorWindow.  Callers shouldn\u0027t\nneed to care about details like how string fields are allocated.\n\nRemoved the compile-time configuration of string and numeric\nstorage modes to remove some dead weight.\n\nChange-Id: I07c2bc2a9c573d7e435dcaecd269d25ea9807acd\n"
    },
    {
      "commit": "3bc6bbc92cd2095f42039b5aadd0a14d0e5d9230",
      "tree": "39b62affe30e0c2895a0f8a52212a7f91bd80dd7",
      "parents": [
        "3b2faf68e5a66ac67b28d6f79d4ba213b6c0d09c"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Oct 06 13:11:04 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Oct 06 14:40:13 2011 -0700"
      },
      "message": "Clean up CursorWindow code.\nBug: 5332296\n\nThe code is functionally equivalent, but a little more efficient\nand much easier to maintain.\n\nChange-Id: I90670a13799df05831843a5137ab234929281b7c\n"
    },
    {
      "commit": "c04db7e06737c5b9bae276ac462858d44002672e",
      "tree": "bc987fad458ca9609339478f4aac28971646d760",
      "parents": [
        "2588a07730ff511329c87b5f61b20419b2443d48"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Oct 03 21:09:35 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Oct 03 21:09:35 2011 -0700"
      },
      "message": "Fix handling of \"allow fds\" state.\n\nDidn\u0027t take into account nesting of bundles.  Boo.\n\nChange-Id: Ic8cf21ad8d6f4938a3e105128624c9d162310d01\n"
    },
    {
      "commit": "6579a9d6fe2302fa149452f66c4062ebc60c2523",
      "tree": "ec270840b71b6dc492748ee7da073e7b50547130",
      "parents": [
        "7d657e5cfacec1f0be845c86dd4336e7efde5ede"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Sep 23 21:17:56 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Oct 03 17:28:13 2011 -0700"
      },
      "message": "Transfer large bitmaps using ashmem.\nBug: 5224703\n\nChange-Id: If385a66adf4c6179a0bb49c0e6d09a9567e23808\n"
    },
    {
      "commit": "9ecebbfbf768fd63e9a6c9a09c86d81c7737ee2d",
      "tree": "08d24c5413fa49ac6386f8b396f29e297e728fbd",
      "parents": [
        "8ebf1efd66516340bedbf0d0a19d5e96cc28fa20"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Sep 28 23:19:47 2011 -0400"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Oct 03 16:58:41 2011 -0700"
      },
      "message": "Add mechanism for Parcel to not allow FDs to be written to it.\n\nThis is to help implement issue #5224703.\n\nChange-Id: I026a5890495537d15b57fe61227a640aac806d46\n"
    },
    {
      "commit": "b6377170960d40e66858d8b4d335a95eac773762",
      "tree": "b0737e61622e7184ae35abf71702c9bb87e5def4",
      "parents": [
        "56c58f66b97d22fe7e7de1f7d9548bcbe1973029"
      ],
      "author": {
        "name": "Bart Sears",
        "email": "bsears@google.com",
        "time": "Sun Sep 25 14:30:21 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Sep 25 14:30:21 2011 -0700"
      },
      "message": "Revert \"Transfer large bitmaps using ashmem. Bug: 5224703\"\n\nThis reverts commit 56c58f66b97d22fe7e7de1f7d9548bcbe1973029\n\nThis CL was causing the browser to crash when adding bookmarks, visiting the bookmarks page, and sharing pages (see bug http://b/issue?id\u003d5369231"
    },
    {
      "commit": "56c58f66b97d22fe7e7de1f7d9548bcbe1973029",
      "tree": "55ab40fcdfe77696388886aed84e33372de51192",
      "parents": [
        "4c253119db0ce753e46ec3809b54b9e357d363db"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Sep 23 21:17:56 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Sep 23 21:20:47 2011 -0700"
      },
      "message": "Transfer large bitmaps using ashmem.\nBug: 5224703\n\nChange-Id: Ic7481dd9f173986f085a8bbdcc59bbe9830d7a44\n"
    },
    {
      "commit": "3f8cbfeb07a934dd5bc9b16995326639d09c7a0c",
      "tree": "b53c860d5d90b082cee48872dba3401015090de9",
      "parents": [
        "38aac047431ea370509f956ad16224b39a71e586"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Wed Aug 31 07:43:40 2011 -0700"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Wed Sep 07 16:45:03 2011 -0700"
      },
      "message": "Resurrect verbose binder logging\n\nUpdated the command name lists, and masked off the additional bits in\nthe command word when doing the name lookup.\n\nMade descriptor values easier to grep for and consistent with kernel\noutput (i.e. decimal rather than hex).  Attempt to show transaction\ndescriptors as such (they\u0027re in a union with a pointer).\n\nAlso, the writeLines() function in Static was using a no-op\nlogging call to write an iovec.  It looks like all callers are using\nN\u003d1, so I just added a log for the first string.\n\nBug 5155269\n\nChange-Id: I417b8d77da3eb6ee1d2069ba94047210f75738bc\n"
    },
    {
      "commit": "c1b9bbb21c8ad5109978a4e9e770cd18b0257434",
      "tree": "bfb7dd2272e5fe29d3c0fc4f22ca708e00bc10be",
      "parents": [
        "b6e5e7a740bf595a1a5d32b28549e5d579a04ee3"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Wed Jul 13 11:06:57 2011 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Wed Jul 13 19:45:44 2011 -0400"
      },
      "message": "Remove some #ifdef HAVE_ANDROID_OS that were needed for the simulator build\n\nChange-Id: I13d9f251f86c05ae5405f37adbf6b8e9660935ba\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "10e89712863f5b91a2982dc1783fbdfe39c1485d",
      "tree": "7a268e40e03cfb2b65d3764b73d0ea42172965fa",
      "parents": [
        "b7440a140b650932bf31cf51d3b87c3249e3b682"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jul 08 18:52:57 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jul 08 19:54:07 2011 -0700"
      },
      "message": "Eliminate single-process mode.\nBug: 5010576\n\nChange-Id: Id450dc83efed4897d1e4ff451530fed14457aace\n"
    },
    {
      "commit": "0dd593f22352a0863223fa4ea7e37e926b99282e",
      "tree": "58d445ed41c6aea8184848490a9f47a2aa31a876",
      "parents": [
        "abb04eec06bce358826e4cb6b5f852424ece8005"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 27 16:05:52 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 27 17:42:15 2011 -0700"
      },
      "message": "PermissionCache caches permission checks\n\nThis is intended to absorb the cost of the IPC\nto the permission controller.\nCached permission checks cost about 3us, while\nfull blown ones are two orders of magnitude slower.\n\nCAVEAT: PermissionCache can only handle system\npermissions safely for now, because the cache is\nnot purged upon global permission changes.\n\nChange-Id: I8b8a5e71e191e3c01e8f792f253c379190eee62e\n"
    },
    {
      "commit": "f24c4cd0f204068a17f61f1c195ccf140c6c1d67",
      "tree": "8bba9602587565eeb9c475f4ccad2e20727ffd41",
      "parents": [
        "ed9bbf27babc7e90a81b229cade498e931ff3dd2"
      ],
      "author": {
        "name": "Anu Sundararajan",
        "email": "sanuradha@ti.com",
        "time": "Wed Jun 22 15:58:59 2011 -0500"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Mon Jun 27 13:48:51 2011 -0700"
      },
      "message": "MemoryHeapBase: Save and binderize the offset\n\nThe offset that is used in the creation of the MemoryHeapBase must be saved, so\nthat it can be used to recreate the Heap when an IMemory object is passed\nacross process boundary through the binder.\n\nChange-Id: Ie618fb5c0718e6711f55ed9235616fd801e648dc\nSigned-off-by: Anu Sundararajan \u003csanuradha@ti.com\u003e\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "594f3eec38840aaaf7557196f353744fdb725b59",
      "tree": "025e73c07a3a2fcae70e376ad393b34fb9cf00cc",
      "parents": [
        "4804c211a60e1bfb7e7878cfe1e48541136e8388"
      ],
      "author": {
        "name": "Evgeniy Stepanov",
        "email": "eugenis@google.com",
        "time": "Thu Apr 21 14:15:00 2011 +0400"
      },
      "committer": {
        "name": "Evgeniy Stepanov",
        "email": "eugenis@google.com",
        "time": "Thu Apr 21 14:37:15 2011 +0400"
      },
      "message": "Make sure binder ioctl structs don\u0027t contain uninitialized values.\n\nChange-Id: I8a678f91262417bb120e65e32c244ce1512b46c2\n"
    },
    {
      "commit": "b0dfade955f2e2e19a827ca2119f3c5d319a824a",
      "tree": "bbbda0f558c45cecb2bff60498b9b77592882faf",
      "parents": [
        "2ecebd6f69db9a127f78ae32916d1e0066939b29",
        "0a47f4f711514ceb3e5f6d3ecdbc4c74f7b3bbef"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Apr 18 08:12:36 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 18 08:12:36 2011 -0700"
      },
      "message": "Merge \"Parcel::appendFrom({const } Parcel *parcel, size_t, size_t)\""
    },
    {
      "commit": "0ffc988a7f47013805d5abeed1c20f159b3bd799",
      "tree": "f9873ba8872388b88d75a3d83144e03e7c3f59f4",
      "parents": [
        "5cde33b7d14841677414fa9f43a043bb4a89ffa7"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Apr 13 18:15:56 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Apr 14 10:57:22 2011 -0700"
      },
      "message": "Rewrite battery history storage.\n\nWe now write battery history directly into a buffer, instead of\ncreating objects.  This allows for more efficient storage; later\nit can be even better because we can only write deltas.\n\nThe old code is still there temporarily for validation.\n\nChange-Id: I9707d4d8ff30855be8ebdc93bc078911040d8e0b\n"
    },
    {
      "commit": "0a47f4f711514ceb3e5f6d3ecdbc4c74f7b3bbef",
      "tree": "0e46ec1bb8cb044f590dc57cc813d7cf87ce3475",
      "parents": [
        "fda06c0cd9bf1db78adcddf11d374785c6737b61"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Apr 13 10:21:56 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Apr 13 10:21:56 2011 -0700"
      },
      "message": "Parcel::appendFrom({const } Parcel *parcel, size_t, size_t)\n\nAs far as I can tell \"parcel\" isn\u0027t actually modified by the implementation.\n\nChange-Id: Ib806eefdc13c97b932773e1dc9ca3a4aad4422b2\n"
    },
    {
      "commit": "bb9d394b21bdfeb1ceb4cf6e4ed0306e39757b15",
      "tree": "dbe7d5b2eef96e80ed4a3a1595e1a26cb19e228d",
      "parents": [
        "9497144281b92dd5293ea734d668217bcf4e86e9"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Feb 16 10:13:53 2011 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Feb 16 10:56:32 2011 -0800"
      },
      "message": "Clean up use of HAVE_ANDROID_OS\n\nHAVE_ANDROID_OS was defined as \"1\" for targets, but never defined as \"0\"\nfor non-targets. Changing them to #ifdef should be safe and matches\nall the other uses of HAVE_ANDROID_OS throughout the system.\n\nChange-Id: I82257325a8ae5e4e4371ddfc4dbf51cea8ea0abb\n"
    },
    {
      "commit": "827521a8e3fe0bedc8624657f624cf2f9dab58e1",
      "tree": "ee8dcdc18b7121bf096f6bf761cf01cc2da2c60d",
      "parents": [
        "55985bed7be8c93296eee3f4f39557fba4fbaebe",
        "6637e307494475b85afe8869d312d4a2f832d8f4"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Dec 28 11:54:08 2010 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Dec 28 11:54:08 2010 -0800"
      },
      "message": "am 6637e307: am bfb5f596: Merge \"Fix for writing empty strings to Parcel::writeString8()\"\n\n* commit \u00276637e307494475b85afe8869d312d4a2f832d8f4\u0027:\n  Fix for writing empty strings to Parcel::writeString8()\n"
    },
    {
      "commit": "b803c04cdaf3ce9dec387a874cabf141f0d8500f",
      "tree": "3434a89a4e5aef771095e9edc7cd726e4d510350",
      "parents": [
        "e78a000955c283509ee8a21b8b7e448060ac8dd8"
      ],
      "author": {
        "name": "Pravat Dalbehera",
        "email": "pravat.dalbehera@sonyericsson.com",
        "time": "Wed Dec 15 08:40:00 2010 +0100"
      },
      "committer": {
        "name": "Johan Redestig",
        "email": "johan.redestig@sonyericsson.com",
        "time": "Wed Dec 22 12:57:31 2010 +0100"
      },
      "message": "Fix for writing empty strings to Parcel::writeString8()\n\nIf writeString8 is called with the following sequence:\n\n writeString8(String8(\"\"));\n writeString8(String8(\"TempString\"));\n\nThen in the readString8, the 2nd String i.e. \"TempString\" is not read,\ninstead an empty string is read.\n\nThe bug comes because of the write call for String8(\"\") where there are\nno String bytes present. In the write Statement, an extra ‘\\0’ is\nwritten. During the Marshalling, Following bytes are written:\n\n1        2         3        4       5   ...\n0x0      0x0       0xB      ‘T’     ‘e’  ...\n\nThe readString8 function has a check that, if String length is 0, don’t\nread anything. So the first byte is read as the length for the first\nstring. The second byte i.e. ‘\\0’ is read as the length for the second\nstring and hence the second string becomes empty too.\n\nChange-Id: Id7acc0c80ae16e77be4331f1ddf69ea87e758420\n"
    },
    {
      "commit": "0bd5243b751c9cad317758158f79b3347e7948af",
      "tree": "0c019af51a9067ae0292b6e0cf95c0829539c83d",
      "parents": [
        "48ea8d836276c04528d8e7dfebd59d27a627ce66"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Mon Dec 13 16:52:35 2010 -0800"
      },
      "committer": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Tue Dec 14 09:28:16 2010 -0800"
      },
      "message": "Framework-side support for Dalvik \"isSensitiveThread\" hook.\n\nUsed in lock contention stats.\n\nBug: 3226270\nChange-Id: Ie6f58d130a29079a59bdefad40b80304d9bc3623\n"
    },
    {
      "commit": "b37f8a8af15425ed3e65104e8556099d33a9c1ce",
      "tree": "1bc90cf91427cb17603017f91e8fbe3819febcb2",
      "parents": [
        "00e40171892c73295b6e7221ed83126731230b98"
      ],
      "author": {
        "name": "Vasu Nori",
        "email": "vnori@google.com",
        "time": "Mon Nov 29 11:22:22 2010 -0800"
      },
      "committer": {
        "name": "Vasu Nori",
        "email": "vnori@google.com",
        "time": "Mon Nov 29 11:53:55 2010 -0800"
      },
      "message": "fix messages from sqlite layer in c++ code to be useful.\n\nChange-Id: Ib13f86f3481aae391f5e887bb14877f12bf48034\n"
    },
    {
      "commit": "e6544e4cc906c6b5c4157fccdc928149fc39d7d6",
      "tree": "19893999e30e0fc7ad1d9e7923db08466555b689",
      "parents": [
        "f0a896b353e01c7093ba2ee0539f1a7cabef6ec6"
      ],
      "author": {
        "name": "Vasu Nori",
        "email": "vnori@google.com",
        "time": "Tue Oct 26 16:44:44 2010 -0700"
      },
      "committer": {
        "name": "Vasu Nori",
        "email": "vnori@google.com",
        "time": "Tue Oct 26 16:44:44 2010 -0700"
      },
      "message": "convert one of the LOGE to LOG_WINDOW msg to reduce grief\n\ngrief from people who think this message is bad news.\nbut in reality, this message is really just an informational message\nto aid in debugging\n\nChange-Id: I1a2ab1666a27adb7d3fd210528b2c5218640d53d\n"
    },
    {
      "commit": "b7e2c783af9753da65d08924a622560829ba2dbb",
      "tree": "d10acb4b108ca075cf86b593b13290dadcbf0d4f",
      "parents": [
        "6d970255af55443a1c9a4211be9a265408598680"
      ],
      "author": {
        "name": "Vasu Nori",
        "email": "vnori@google.com",
        "time": "Tue Oct 05 16:50:51 2010 -0700"
      },
      "committer": {
        "name": "Vasu Nori",
        "email": "vnori@google.com",
        "time": "Tue Oct 05 16:50:51 2010 -0700"
      },
      "message": "turn off some useless messages\n\nChange-Id: I5ed5696cd052b70e7cf7b872205470cd56fada90\n"
    },
    {
      "commit": "405e012681aa563b1d7b66c671c90ed2deb26e41",
      "tree": "6687aa617fea8213148702c68e4da9083122eb0c",
      "parents": [
        "3011b6617232d1ef7c1687d1db9e780fce978d30",
        "deaa8ff1b10d38add4f7c276e7be2ffc19359a14"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Sep 24 15:58:25 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Sep 24 15:58:25 2010 -0700"
      },
      "message": "am deaa8ff1: am a7ef18fc: Merge \"Some debugging support.\" into gingerbread\n\nMerge commit \u0027deaa8ff1b10d38add4f7c276e7be2ffc19359a14\u0027\n\n* commit \u0027deaa8ff1b10d38add4f7c276e7be2ffc19359a14\u0027:\n  Some debugging support.\n"
    },
    {
      "commit": "f123e49bf0708719b51a7064ae134c097abe4a54",
      "tree": "73c218afbbede522ca5c7d70b1399cf55609ca5d",
      "parents": [
        "6d8fae722cfb2833dd542b2a5e613582a9096fc6"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Sep 24 11:16:23 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Sep 24 13:11:55 2010 -0700"
      },
      "message": "Some debugging support.\n\n- New feature to \"am monitor\" to have it automatically launch\n  gdbserv for you when a crash/ANR happens, and tell you how to\n  run the client.\n\n- Update dumpstate to match new location of binder debug logs\n\n- Various commented out logs that are being used to track down\n  issues.\n\nChange-Id: Ia5dd0cd2df983a1fc6be697642a4590aa02a26a5\n"
    },
    {
      "commit": "1423f51ec5fe2c9bf5fa44866443b2c52db165be",
      "tree": "0ab080b873257293730980e9d2479045a1af2e2e",
      "parents": [
        "fdf5b0808ff6f6a3c067dab17a9533cfd66229f1",
        "ae087369c56a270c33c1c1af5be7d3c5d7f94e80"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Tue Aug 31 15:06:24 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Aug 31 15:06:24 2010 -0700"
      },
      "message": "am ae087369: am 63070856: Merge \"Don\\\u0027t propagate StrictMode over one-way Binder calls.\" into gingerbread\n\nMerge commit \u0027ae087369c56a270c33c1c1af5be7d3c5d7f94e80\u0027\n\n* commit \u0027ae087369c56a270c33c1c1af5be7d3c5d7f94e80\u0027:\n  Don\u0027t propagate StrictMode over one-way Binder calls.\n"
    },
    {
      "commit": "0234376503ce421c4b871d5d811c541f5094301a",
      "tree": "6f4686cb9bdc0d19f8c4b541c57ad5b10496588a",
      "parents": [
        "6aacad66eba2b51251f7e2dfb8c005b5242326ca"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Mon Aug 30 16:01:16 2010 -0700"
      },
      "committer": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Tue Aug 31 13:16:49 2010 -0700"
      },
      "message": "Don\u0027t propagate StrictMode over one-way Binder calls.\n\nThis was causing stack stitching problems where a one-way call with\nviolations followed by a two-way call without violations was getting\nthe previous one-way call\u0027s violation stack stitched on to the second\ncaller\u0027s stack.\n\nThe solution is a little more indirect than I would\u0027ve liked\n(preserving the binder\u0027s onTransact flags until enforceInterface) but\nwas seemingly necessary to work without changing the AIDL compiler.\nIt should also be sufficiently cheap, since no new calls to\nthread-local IPCThreadState lookups were required.  The additional\nwork is just same-thread getter/setters on the existing\nIPCThreadState.\n\nChange-Id: I4b6db1d445c56e868e6d0d7be3ba6849f4ef23ae\n"
    },
    {
      "commit": "84fabc0ce3d7c3da73903380d0d6141d60fa4448",
      "tree": "7fc1a8cf6897f7ada12afe7cca8b883c4f912be3",
      "parents": [
        "ebd19e0f48b0cb246c246274a256a9bb494b7e7a",
        "245cb7846c82f7c0840e13f0b994d356846b1678"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Tue Jul 27 14:04:14 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jul 27 14:04:14 2010 -0700"
      },
      "message": "am 245cb784: am 84c924a6: Merge \"Replace several IPCThreadState::get() lookups with one.\" into gingerbread\n\nMerge commit \u0027245cb7846c82f7c0840e13f0b994d356846b1678\u0027\n\n* commit \u0027245cb7846c82f7c0840e13f0b994d356846b1678\u0027:\n  Replace several IPCThreadState::get() lookups with one.\n"
    },
    {
      "commit": "7bcad8a315f12bd6251a998781efac7b11c2ca84",
      "tree": "44f9ded1cd1a31254607ddddc2c08cad3d4b6546",
      "parents": [
        "eb75888e6479317151c2ed44d47bd28ef567a4c7"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Tue Jul 27 09:49:11 2010 -0700"
      },
      "committer": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Tue Jul 27 12:28:57 2010 -0700"
      },
      "message": "Replace several IPCThreadState::get() lookups with one.\n\nAlso, make StrictMode\u0027s ThreadLocal final.\n\nChange-Id: I08d400ed254fa67bb7a3dae1227f205a54c00df0\n"
    },
    {
      "commit": "d2f6c7fe735ffcdb67852c6a1287565a2afa412d",
      "tree": "227009693183c0285bfae75f18620a68fc375759",
      "parents": [
        "9555a1323e846aba16e6a7f2e5d9a9227523e595",
        "3e5e21d4dc74751e64d17379c5563ece39a7e35d"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Thu Jul 15 23:05:39 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 15 23:05:39 2010 -0700"
      },
      "message": "am 3e5e21d4: am 1772c34e: Merge \"StrictMode: gather and return violating stacks in Binder replies\" into gingerbread\n\nMerge commit \u00273e5e21d4dc74751e64d17379c5563ece39a7e35d\u0027\n\n* commit \u00273e5e21d4dc74751e64d17379c5563ece39a7e35d\u0027:\n  StrictMode: gather and return violating stacks in Binder replies\n"
    },
    {
      "commit": "9555a1323e846aba16e6a7f2e5d9a9227523e595",
      "tree": "2f28645cc7f03ce41a4fa3d6c5a89b731e6cbc84",
      "parents": [
        "6ba776ad34a8029e4d0c784ce0092f1fcbc91bef",
        "cc52121c4f88e9feb8404937bcbfff6e73084666"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Thu Jul 15 23:05:35 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 15 23:05:35 2010 -0700"
      },
      "message": "am cc52121c: am c4b204bd: Merge \"More StrictMode work, keeping Binder \u0026 BlockGuard\\\u0027s thread-locals in-sync.\" into gingerbread\n\nMerge commit \u0027cc52121c4f88e9feb8404937bcbfff6e73084666\u0027\n\n* commit \u0027cc52121c4f88e9feb8404937bcbfff6e73084666\u0027:\n  More StrictMode work, keeping Binder \u0026 BlockGuard\u0027s thread-locals in-sync.\n"
    },
    {
      "commit": "5b747191ff8ad43a54d41faf50436271d1d7fcc8",
      "tree": "b55016fca3367035e4d9109bd9ee509b250bd23f",
      "parents": [
        "727de40c6bc7c6521a0542ea9def5d5c7b1c5e06"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Mon Jul 12 11:05:38 2010 -0700"
      },
      "committer": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Thu Jul 15 13:18:05 2010 -0700"
      },
      "message": "StrictMode: gather and return violating stacks in Binder replies\n\nNow, when Thread A has a strict mode policy in effect and does a\nBinder call to Thread B (most likely in another process), the strict\nmode policy is passed along, but with the GATHER penalty bit set which\noverrides other policies and instead gathers all offending stack\ntraces to a threadlocal which are then written back in the Parcel\u0027s\nreply header.\n\nChange-Id: I7d4497032a0609b37b1a2a15855f5c929ba0584d\n"
    },
    {
      "commit": "727de40c6bc7c6521a0542ea9def5d5c7b1c5e06",
      "tree": "0d2f0f400211efbaf131020d7c4d38e647f5bbe3",
      "parents": [
        "d6343c26b8580f61a257a3045bfa124049201116"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Wed Jul 07 16:06:39 2010 -0700"
      },
      "committer": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Thu Jul 15 13:18:05 2010 -0700"
      },
      "message": "More StrictMode work, keeping Binder \u0026 BlockGuard\u0027s thread-locals in-sync.\n\nChange-Id: Ia67cabcc17a73a0f15907ffea683d06bc41b90e5\n"
    },
    {
      "commit": "f5574e0f8ca5624c822737eae497e27b60e33662",
      "tree": "f639515cf04c39a41b0af38c2980b13291b582f4",
      "parents": [
        "d11f6e6460dcc41597e3a7f6cd3023f116f8c696",
        "706623ddb8314850c0551f0b66e24b5f0bd28620"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Tue Jul 13 15:57:20 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jul 13 15:57:20 2010 -0700"
      },
      "message": "am 706623dd: am c0a7e690: Add Parcel::readExceptionCode() and Parcel::writeNoException()\n\nMerge commit \u0027706623ddb8314850c0551f0b66e24b5f0bd28620\u0027\n\n* commit \u0027706623ddb8314850c0551f0b66e24b5f0bd28620\u0027:\n  Add Parcel::readExceptionCode() and Parcel::writeNoException()\n"
    },
    {
      "commit": "c0a7e690bfd32dd897ceccd04dd0fa6bf6e9cee6",
      "tree": "a0cbda85dcb855134d89f4f1b27f0457f4ee5e7f",
      "parents": [
        "70c6c9a1e2240e82d8eb442b34efa9629ef2bba4"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Tue Jul 13 15:33:35 2010 -0700"
      },
      "committer": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Tue Jul 13 15:45:18 2010 -0700"
      },
      "message": "Add Parcel::readExceptionCode() and Parcel::writeNoException()\n\nAdd native Parcel methods analogous to the Java versions.\n\nCurrently, these don\u0027t do much, but upcoming StrictMode work changes\nthe RPC calling conventions in some cases, so it\u0027s important that\neverybody uses these consistently, rather than having a lot of code\ntrying to parse RPC responses out of Parcels themselves.\n\nAs a summary, the current convention that Java Binder services use is\nto prepend the reply Parcel with an int32 signaling the exception\nstatus:\n\n     0: no exception\n     -1: Security exception\n     -2: Bad Parcelable\n     -3: ...\n     -4: ...\n     -5: ...\n\n... followed by Parceled String if the exception code is non-zero.\n\nWith an upcoming change, it\u0027ll be the case that a response Parcel can,\nnon-exceptionally return rich data in the header, and also return data\nto the caller.  The important thing to note in this new case is that\nthe first int32 in the reply parcel *will not be zero*, so anybody\nmanually checking for it with reply.readInt32() will get false\nnegative failures.\n\nShort summary: If you\u0027re calling into a Java service and manually\nchecking the exception status with reply.readInt32(), change it to\nreply.readExceptionCode().\n\nChange-Id: I23f9a0e53a8cfbbd9759242cfde16723641afe04\n"
    },
    {
      "commit": "fc94e89a7f7aadf101ac1144073be964d9bfcf6b",
      "tree": "6d65eb3af3c12f4f073fd715260fbdceba6f988f",
      "parents": [
        "f3a8f74f7b8a0fb3672534d50b1fd942ab0742a2",
        "efcf68aa1fd7fcfd52cf3d2837ed8db8e797194b"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Wed Jun 23 10:18:18 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jun 23 10:18:18 2010 -0700"
      },
      "message": "am efcf68aa: am ef8f96a7: Merge \"Start of work on passing around StrictMode policy over Binder calls.\" into gingerbread\n\nMerge commit \u0027efcf68aa1fd7fcfd52cf3d2837ed8db8e797194b\u0027\n\n* commit \u0027efcf68aa1fd7fcfd52cf3d2837ed8db8e797194b\u0027:\n  Start of work on passing around StrictMode policy over Binder calls.\n"
    },
    {
      "commit": "27b3a7a75960d026655f3acd1de8a672e80a5776",
      "tree": "cc5036a00b976b7757f26212abf49ed11f779cd9",
      "parents": [
        "f25c560dcdc0c04e11152fff11f521dae03522cd"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Fri Jun 18 13:07:53 2010 -0700"
      },
      "committer": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Mon Jun 21 12:56:35 2010 -0700"
      },
      "message": "Start of work on passing around StrictMode policy over Binder calls.\n\nThis is (intendend to be) a no-op change.\n\nAt this stage, Binder RPCs just have an additional uint32 passed around\nin the header, right before the interface name.  But nothing is actually\ndone with them yet.  That value should right now always be 0.\n\nThis now boots and seems to work.\n\nChange-Id: I135b7c84f07575e6b9717fef2424d301a450df7b\n"
    },
    {
      "commit": "2807df89af680e46cb35ee0035bb10b42d3136a2",
      "tree": "7f78fa82946171e60dc9c13fd4d0b05df860777e",
      "parents": [
        "afd52a0b40e7986d0993217b3fe0cf44fea21274"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu May 27 17:04:23 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri May 28 10:08:21 2010 -0400"
      },
      "message": "Move CursorWindow class from core/jni to libbinder\n\nTo allow use of the native CursorWindow class outside of the core framework jni\n\nChange-Id: I72e8dcb91a2c691130c33cdfd9a25d343da1c592\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "08b3d2e5ef01a5114424a871934dd9fc153352c0",
      "tree": "7768ecd2c0308f149cb8abb1746a0e7bc1bdae8b",
      "parents": [
        "df7ccbc8ff0d93a708a7fa1e57469d3f93ceda5c"
      ],
      "author": {
        "name": "Dan Egnor",
        "email": "egnor@google.com",
        "time": "Thu May 06 00:55:09 2010 -0700"
      },
      "committer": {
        "name": "Dan Egnor",
        "email": "egnor@google.com",
        "time": "Thu May 06 01:03:31 2010 -0700"
      },
      "message": "Make static versions of libutils and libbinder.\n\nFix some small static-initialization-order issues (and a static-\ninitializers-missing issue) that result from doing so.  The static\nlibraries don\u0027t actually get used for anything real at the moment --\nthey\u0027re used for perf tests of bug 2660235.\n\nBug: 2660235\nChange-Id: Iee2f38f79cc93b395e8d0a5a144ed92461f5ada0\n"
    },
    {
      "commit": "92c3b393275e967f37162b40b3438c5616328372",
      "tree": "14f077c0233038875cc90dd8eb107decb117b667",
      "parents": [
        "e80c6f49d5055e299b7ada91b5967feab66e467b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Apr 19 19:09:03 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Apr 19 19:09:03 2010 -0700"
      },
      "message": "fix [2599939] \"cannot play video\" after open/close a video player a dozen of times\n\nget rid off the MAP_ONCE flag is MemoryHeapBase (as well as it\u0027s functionality),\nthis feature should not be used anymore.\n\nthe software renderer was incorrectly using the default ctor which set MAP_ONCE,\ncausing the leak. the software renderer itself is incorrectly used while coming\nback from sleep.\n\nChange-Id: I123621f8d140550b864f352bbcd8a5729db12b57\n"
    },
    {
      "commit": "7182ef360498b7f45cc5253c167bd9975cfc5335",
      "tree": "0cfd720f759df1398bdabe6d4a02811b0e5fe70d",
      "parents": [
        "e5bdecea289a09070f0ea2a1067ae2a8f498098a"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Mar 18 17:55:03 2010 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Mar 18 18:13:57 2010 -0700"
      },
      "message": "Ensure that binder incalls to the system process keep the fg cgroup\n\nOn binder incalls, the handler thread is given the caller\u0027s priority by the\ndriver, but not the caller\u0027s cgroup.  We have explicit code that sets the\nhandler\u0027s cgroup to match the caller\u0027s, *except* that the system process\nexplicitly disables this behavior.  This led to a siuation in which we were\nrunning binder incalls to the system process at nice\u003d10 but cgroup\u003dfg.\n\nThat\u0027s fine as far as it goes, except that if a GC happened in the handler\nthread, it would be promoted to foreground priority and cgroup both, to avoid\nhaving the GC take forever.  Then, when GC finished, the original priority\nis reset, and the cgroup set *based on that priority*.  This would push the\nhandler thread into nice\u003d10 cgroup\u003dbg_non_interactive -- which matches the\ncaller, but is supposed to be impossible in the system process.\n\nThe end result of this was that we could be running \"lengthy\" operations in\nthe system process in the background.  Unfortunately, some of the operations\nthat wound up like this would hold important global system locks for up to\ntwenty seconds as a result, making the entire device unresponsive to input\nfor that period.\n\nThis CL fixes the binder incall setup to ensure that within the system process,\na binder incall is always begun from the normal foreground priority as well\nas cgroup.  In practice now the device still becomes laggy/sluggish when the\noffending lock-holding time-consuming incall occurs, but since it still runs\nas a foreground task it is able to proceed to completion within a short time\nrather than taking 20 seconds.\n\nFixes bug #2403717\n\nChange-Id: Id046aeabd0e80c48eef94accc37842835eab308d\n"
    },
    {
      "commit": "c86727f5805f28fbd25da141c50fb6843f364f3a",
      "tree": "395806614f40b9aac7306a9e951305167fb8abe1",
      "parents": [
        "08d13c3cbb0b250b84ca861edb462060556aead9"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Feb 11 17:30:52 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Feb 21 23:27:25 2010 -0800"
      },
      "message": "remove a dependency of GraphicBuffer (libui) on Parcel (libbinder).\n\nAdd a Flattenable interface to libutils which can be used to flatten\nan object into bytestream + filedescriptor stream.\nParcel is modified to handle Flattenable. And GraphicBuffer implements\nFlattenable.\n\nExcept for the overlay classes libui is now independent of libbinder.\n"
    },
    {
      "commit": "6faf7893b6307a3295993380d61af49f2cda965c",
      "tree": "0b96c41270e160fbafb2956f8a91ec3ef1772b67",
      "parents": [
        "bf124e7e41f7850ac1b7be808221a462db6f3447"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jan 25 19:00:00 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jan 29 14:51:06 2010 -0800"
      },
      "message": "Simplify the MemoryDealer implementation\n\nAt some point the implementation became complicated because of\nSurfaceFlinger\u0027s special needs, since we are now relying on gralloc\nwe can go back to much simpler MemoryDealer.\n\nRemoved HeapInterface and AllocatorInterface, since those don\u0027t need\nto be paramterized anymore. Merged SimpleMemory and Allocation.\nMade SimplisticAllocator non virtual.\n\nRemoved MemoryDealer flags (READ_ONLY, PAGE_ALIGNED)\n\nRemoved a lot of unneeded code.\n"
    },
    {
      "commit": "887f355f99ff83d568ef2885a4fdcaae475583df",
      "tree": "c4788aa9ac8f37c6a02fc6b3a6874b71efb0f759",
      "parents": [
        "259e3384face72ea8e30696d7bae492d37d44e8b"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Dec 07 17:59:37 2009 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Dec 07 19:11:14 2009 -0800"
      },
      "message": "Propagate background scheduling class across processes.\n\nThis is a very simply implementation: upon receiving an IPC, if the handling\nthread is at a background priority (the driver will have taken care of\npropagating this from the calling thread), then stick it in to the background\nscheduling group.  Plus an API to turn this off for the process, which is\nused by the system process.\n\nThis also pulls some of the code for managing scheduling classes out of\nthe Process JNI wrappers and in to some convenience methods in thread.h.\n"
    },
    {
      "commit": "a0a40883d0f4bdc0694b236353ad66a4b4ca92fa",
      "tree": "826c961cc86ada8cb745258031b137be2f871600",
      "parents": [
        "b602c328c24f82d61038ac1222bd40a3cc7bc900"
      ],
      "author": {
        "name": "Rebecca Schultz Zavin",
        "email": "rebecca@android.com",
        "time": "Fri Oct 30 18:39:55 2009 -0700"
      },
      "committer": {
        "name": "Rebecca Schultz Zavin",
        "email": "rebecca@android.com",
        "time": "Thu Nov 12 16:31:12 2009 -0800"
      },
      "message": "Modify the binder to request 1M - 2 pages instead of 1M.  The backing store\nin the kernel requires a guard page, so 1M allocations fragment memory very\nbadly.  Subtracting a couple of pages so that they fit in a power of\ntwo allows the kernel to make more efficient use of its virtual address space.\n\nSigned-off-by: Rebecca Schultz Zavin \u003crebecca@android.com\u003e\n"
    },
    {
      "commit": "1dacdd482894bee9fbc1993cbb525fb800750222",
      "tree": "1d60f5999e6217165b7d72d01a24b00584c9af43",
      "parents": [
        "3f857b78fc68e5d700139bdc6078c5333b62a9bc"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@android.com",
        "time": "Sun Nov 08 14:29:02 2009 -0800"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@android.com",
        "time": "Sun Nov 08 14:29:02 2009 -0800"
      },
      "message": "Reset binder service threads\u0027 cgroup/priority after command completion\n\nTo prevent buggy command implementations from poisoning binder threads\u0027\nscheduling class \u0026 priority for future command execution, we now reset the\ncgroup and thread priority to foreground/normal when a binder service thread\nfinishes executing the designated command.\n\nChange-Id: Ibc0ab2485751453f6dc96fdb4eb877fd02796e3f\n"
    },
    {
      "commit": "97b30e2f6239a3ca2b9489ce09320aaf317f9fc8",
      "tree": "db3a8d2c8720cfc9dc303048afb2064e297bda2d",
      "parents": [
        "9eaff61adf15b4e6cced7da3d7c239e2fc41f8ed"
      ],
      "author": {
        "name": "Evan Millar",
        "email": "emillar@google.com",
        "time": "Fri Nov 06 11:25:23 2009 -0800"
      },
      "committer": {
        "name": "Evan Millar",
        "email": "emillar@google.com",
        "time": "Fri Nov 06 11:25:23 2009 -0800"
      },
      "message": "Revert jparks code from IPCThreadState.\n"
    },
    {
      "commit": "2867746d7b59579ecf7b2de41e42fc1ca88d04d9",
      "tree": "3060ea65ae476e8a2d866ce276efee571d725410",
      "parents": [
        "7ed0ceeba54712f76e9a4f2dd4c9197d76813488"
      ],
      "author": {
        "name": "Jason Parks",
        "email": "jparks@google.com",
        "time": "Wed Nov 04 14:25:26 2009 -0800"
      },
      "committer": {
        "name": "Jason Parks",
        "email": "jparks@google.com",
        "time": "Wed Nov 04 14:25:26 2009 -0800"
      },
      "message": "When a thread is about to be put back onto the thread pool ensure that it is in the foreground cgroup.\n"
    },
    {
      "commit": "dabcf4151adeb1376ce3b6c9f4b060f9b7fd8a16",
      "tree": "1fcf1df262a9bc4b707c33e5ab7139c5a23b6f9a",
      "parents": [
        "d2c68794364120d0531667e797f078416ebef3f5"
      ],
      "author": {
        "name": "Jason Parks",
        "email": "jparks@google.com",
        "time": "Tue Nov 03 12:14:38 2009 -0800"
      },
      "committer": {
        "name": "Jason Parks",
        "email": "jparks@google.com",
        "time": "Tue Nov 03 13:10:15 2009 -0800"
      },
      "message": "Add a warning when we leave threads in the binder thread pool in the background scheduling group.\n"
    },
    {
      "commit": "dfc7244aa874ae31cc13758e1e2cf6112f7a66b4",
      "tree": "1df29e6222cdebda7880d145104f62a92346281d",
      "parents": [
        "a229cedadd6c3b8ab7f2d8b7b45638753e834992"
      ],
      "author": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Mon Nov 02 16:02:43 2009 -0800"
      },
      "committer": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Mon Nov 02 16:36:45 2009 -0800"
      },
      "message": "libbinder: MemoryHeapPmem: honor the NO_CACHING flag when creating a client heap\n\nChange-Id: Ia7beb800f5a24beaa4b7f3032b486d4ed1991b23\nSigned-off-by: Dima Zavin \u003cdima@android.com\u003e\n"
    },
    {
      "commit": "baef6141a3239c7dd9bad0e2cd8a9ece5eef5a7e",
      "tree": "50df32f2a31006f4ea4572cffdf390012541027b",
      "parents": [
        "05cb5610fdfb7b69cf90a9230853e59b4ae5e219"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Thu Oct 29 22:55:00 2009 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Fri Oct 30 18:35:47 2009 -0700"
      },
      "message": "libbinder: add a NO_CACHING flag to MemoryHeapBase\n\nThe NO_CACHING flag translates to opening a memory region with O_SYNC.\n\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "f99c18083e87ccf83430b29b53c7dea52a1675de",
      "tree": "602d616cdcc91d974299fca1e4f40fce00a2fbc4",
      "parents": [
        "41b379da57d3125de038636d72fba95e2255483d"
      ],
      "author": {
        "name": "Benny Wong",
        "email": "Benny.Wong@motorola.com",
        "time": "Mon Aug 17 15:28:30 2009 -0500"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Aug 20 03:55:20 2009 -0700"
      },
      "message": "Add offset handling in MemoryHeapBase class\n"
    },
    {
      "commit": "2f10ae08d435b12e1798d93e0b90605717c66081",
      "tree": "30d50a2897e1f0a1835e72c8fa7b057c98ad8c2e",
      "parents": [
        "01f750d6fa03f16ef93802618a6ccf8b353ae8e2"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Aug 17 13:33:27 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Aug 17 15:31:25 2009 -0700"
      },
      "message": "Support for marshalling pointers / intptr_t in Parcel.\n\nSome refactoring to eliminate code duplication in Parcel implementation.\n"
    },
    {
      "commit": "f1db4aec6569d7cf9e1fb84f1d9c1292032eac30",
      "tree": "b04465a44e9363c1bfd1f7195eedbe9a6b0a43db",
      "parents": [
        "abac01052c1c40f8582fe9f010c2efe6013e25c6"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jul 31 16:12:13 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jul 31 16:18:16 2009 -0700"
      },
      "message": "don\u0027t crash in Parcel when given a null (and therfore invalid) native_handle_t\n"
    },
    {
      "commit": "e1babd45e1f849522b63c80d4602ec50eac74cff",
      "tree": "1a50bf35f5867b7c2950d8a886c8dd13b95a70a9",
      "parents": [
        "3720cf2de9a86b4fb5583f190b183498f0ad3fc0"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Jul 17 07:59:17 2009 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Jul 17 10:48:09 2009 -0700"
      },
      "message": "Instead of using -1 for pid and uid in the simulator, and then having\nto special-case the simulator case all over the framework, just use\ngetuid and getpid, and intercept those in the simulator wrapper.\n"
    },
    {
      "commit": "151e859e0fc3a930bdf6d270d275e69e9eba0cbf",
      "tree": "90abe1d328fe3f7234815651237ab31219a1de03",
      "parents": [
        "e19476214a2fe718c82461f54e6b56cee7faa5f4"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 15 18:24:59 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 15 21:56:51 2009 -0700"
      },
      "message": "new Permission class used to improve permission checks speed (by caching results)\n"
    },
    {
      "commit": "aaf834a284a025cedd8ec1cf01d09e1790c1dcf8",
      "tree": "6314488c2ccaa1ab96923a1c771593ee65e7a726",
      "parents": [
        "7f36a5729f17fcb37a7b65a13fd86b0d922caca9"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 22 19:00:22 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 26 16:12:20 2009 -0700"
      },
      "message": "some work to try to reduce the code size of some native libraries\n\n- make sure that all binder Bn classes define a ctor and dtor in their respective library.\n  This avoids duplication of the ctor/dtor in libraries where these objects are instantiated.\n  This is also cleaner, should we want these ctor/dtor to do something one day.\n\n- same change as above for some Bp classes and various other non-binder classes\n\n- moved the definition of CHECK_INTERFACE() in IInterface.h instead of having it everywhere.\n\n- improved the CHECK_INTERFACE() macro so it calls a single method in Parcel, instead of inlining its code everywhere\n\n- IBinder::getInterfaceDescriptor() now returns a \"const String16\u0026\" instead of String16, which saves calls to String16 and ~String16\n\n- implemented a cache for BpBinder::getInterfaceDescriptor(), since this does an IPC. HOWEVER, this method never seems to be called.\n  The cache makes BpBinder bigger, so we need to figure out if we need this method at all.\n"
    },
    {
      "commit": "9f7d60cbfaa40bd78c0f4d5d4e3b8e8cf257e87a",
      "tree": "d00f0230d2e178a2f1aca915766f0901cc2262f8",
      "parents": [
        "ccf1ab64846112846c0bcd7fc4a623f55588ee46",
        "d50a458bb291801ab9fdc119301bc7b84b42a6e3"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 22 14:53:18 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri May 22 14:53:18 2009 -0700"
      },
      "message": "am d50a458b: Merge change 2351 into donut\n\nMerge commit \u0027d50a458bb291801ab9fdc119301bc7b84b42a6e3\u0027\n\n* commit \u0027d50a458bb291801ab9fdc119301bc7b84b42a6e3\u0027:\n  Fix a major bug in Bundle when unparcelling from AIDL.\n"
    },
    {
      "commit": "dfece80c790934e4413def863070ac0dd21f6e29",
      "tree": "8e9e2d17e5ecd6086bf02416f3a700c0d09247d7",
      "parents": [
        "8f80eef228cfd01b938ca48202d6a264f7689154"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu May 21 16:29:38 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu May 21 16:29:38 2009 -0700"
      },
      "message": "change 2115 wasn\u0027t merged properly into master. this fixes that.\n\nMerge change 2115 into donut\n\n* changes:\n  bring the native_handle stuff back from master_gl\n\nConflicts:\n\n\tlibs/binder/Parcel.cpp\n"
    },
    {
      "commit": "0795272aa226f4e965968a03daddc53ce30b7cda",
      "tree": "6b4e8ba5e57c5dcf2dd770c24e14c43eda42fdd7",
      "parents": [
        "25ba5b6564224dceefa086b5c439ef28dad530ca"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 19 19:08:10 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 20 12:55:03 2009 -0700"
      },
      "message": "move libbinder\u0027s header files under includes/binder\n"
    },
    {
      "commit": "25ba5b6564224dceefa086b5c439ef28dad530ca",
      "tree": "af3c9fa40d27425c37cf6492589cb86854b08f8a",
      "parents": [
        "6b961bb54bfb44abd1bcee46924ca38c2d10dd72"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 18 15:08:03 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 20 12:55:02 2009 -0700"
      },
      "message": "checkpoint: split libutils into libutils + libbinder\n"
    }
  ]
}
