)]}'
{
  "log": [
    {
      "commit": "9a161f06819e8bc5627a3e4384bf4774e3e4a1e1",
      "tree": "2116718d39ffbe6e301de61385e650e18d579e8e",
      "parents": [
        "c9dce5e883e34d14d954bb71d57b7257fe878416",
        "daaea6d2f1957dfea0501b6518f8deead7af4a7a"
      ],
      "author": {
        "name": "Yunlian Jiang",
        "email": "yunlian@google.com",
        "time": "Wed Mar 01 01:21:50 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Mar 01 01:21:50 2017 +0000"
      },
      "message": "Merge \"fix warning: dereference of a null pointer\" am: 9a6b9ed394 am: 90b59dbb0d\nam: daaea6d2f1\n\nChange-Id: If2eb8cba1df0760fb2c01e65e28d9b3f8ec4912c\n"
    },
    {
      "commit": "90b59dbb0d5e42e85f93e284f2ac47d4e6f7540b",
      "tree": "1e359b46e1f8449645a31354bacc234bf8319a85",
      "parents": [
        "840e2dcbae8d17bb6f092df32cb12324e18090b9",
        "9a6b9ed394c3ece622029ce5c169f19fd55de5b3"
      ],
      "author": {
        "name": "Yunlian Jiang",
        "email": "yunlian@google.com",
        "time": "Wed Mar 01 01:16:45 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Mar 01 01:16:45 2017 +0000"
      },
      "message": "Merge \"fix warning: dereference of a null pointer\"\nam: 9a6b9ed394\n\nChange-Id: I8f944dd30a2663262baa00a08c1e4204a29242eb\n"
    },
    {
      "commit": "0269068cb60dd68addfa5699664f04b376a82472",
      "tree": "e85f22cb8b89789409db57ae5e7fd07ca471a35e",
      "parents": [
        "f41c781cf4500cb0a8aae017f0c802c7b6f52f05"
      ],
      "author": {
        "name": "Yunlian Jiang",
        "email": "yunlian@google.com",
        "time": "Tue Jan 31 17:11:19 2017 -0800"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Mon Feb 06 21:31:27 2017 +0000"
      },
      "message": "fix warning: dereference of a null pointer\n\nThis fixes a warning: Access to field \u0027mPlaybackFormats\u0027 results\nin a dereference of a null pointer (loaded from field \u0027mDeviceInfo\u0027)\n[clang-analyzer-core.NullDereference]\n\nBug: None\nTest: Static analyzer no longer complains, bullhead still boots with no\napparent issues.\nChange-Id: I71ce486c667441d9b90ef63c2df8d23d70254639\n"
    },
    {
      "commit": "d95d34d49d36a2f27212485c79cde769af3873e9",
      "tree": "3d310e75606a554926ef0444d96d03f50944095b",
      "parents": [
        "5c66471ad288640a89188f765fef5b41b4d3daf5"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Tue Oct 04 17:34:43 2016 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Wed Jan 11 14:02:27 2017 +0900"
      },
      "message": "Don\u0027t send short URB packet when sending MtpDataPacket.\n\nWhen sending a MtpDataPacket to a MTP device, the kernel driver splits\nit into multiple URB packets so that the URB packet size does not exceed\nthe buffer size at the MTP device.\n\nPreviously MtpDataPacket sends its header first, then sends the\npayload. It means the first URB packet only contains the header of\nMtpDataPacket and the URB packet size is smaller than the maximum URB\npacket size (short packet). Some MTP devices regard the short packet as\nthe end of the sequencail URB packets, thus the devices do not accept\nthe following URB packets that contain the payload.\n\nThe MTP spec says if the responder (MTP device) sends the data in a way\nwhere the first pacekt contains only the header, the initiator (MTP\nhost) must send data in the same way. Otherwise the initiator must not\nsend a short packet in the sequencial URB packets.\n\nThe CL fixes the MTP host implementation so that it remembers how the\nMTP device sends data, and uses the same way when sending data\nfrom the host.\n\nBug: 31165557\nTest: Manually invokes MtpDevice#sendObject\nChange-Id: Ic76eb4241ed74957414aef2990be08cd77a9f5a9\n(cherry picked from commit d4b4296b401162a7a42f757c96e3652b82255b13)\n"
    },
    {
      "commit": "5c66471ad288640a89188f765fef5b41b4d3daf5",
      "tree": "16dffa5cea0670d5038bd96408f422473ca0ff21",
      "parents": [
        "cb85a295a44eb5e3f639e2a29499b51ebf2cd012"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Tue Oct 04 17:45:31 2016 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Wed Jan 11 01:37:52 2017 +0000"
      },
      "message": "Stop sending object handle with sendObject request.\n\nAccording to the MTP spec, the sendObject request must follow\nsendObjectInfo request and we could not send an object handle with\nsendObject request. The CL stops sending object handle with a sendObject\nrequest. Instead it checks if the given object handle equals to the\nobject handle returned by the previous sendObjectInfo request.\n\nBug: 31918048\nTest: manually invoked sendObjectInfo and sendObject.\nChange-Id: I0a80bdf67bf2913522821ac705f3dc548d3edead\n(cherry picked from commit 8d20945c08dfdd85c252c8ba92d197bf1bd2b208)\n"
    },
    {
      "commit": "6e08d93aa2194b084b90cd4fdd04148180deed77",
      "tree": "a696844147bc9a27f9333f0a110e92abef2fe33c",
      "parents": [
        "fa92ed0391a722a401b6f050d941032764a8639d"
      ],
      "author": {
        "name": "Vitalii Tomkiv",
        "email": "vitalit@google.com",
        "time": "Fri Oct 21 14:04:15 2016 -0700"
      },
      "committer": {
        "name": "Vitalii Tomkiv",
        "email": "vitalit@google.com",
        "time": "Tue Oct 25 15:55:29 2016 -0700"
      },
      "message": "Add timeout to usb_device_get_string to prevent usb stuck state for bad\nbehaving devices.\n\nBug: 31923641\nTest: manual run and test with bad devices.\nChange-Id: I50e65733fff19f16c7d16bfd805ae930f30171b3\n"
    },
    {
      "commit": "d4b4296b401162a7a42f757c96e3652b82255b13",
      "tree": "0c9433e61873d31b683753906c5ed4b0f21a81b2",
      "parents": [
        "d45003594f2ae928869f14579095687c4f090d06"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Tue Oct 04 17:34:43 2016 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Fri Oct 07 10:04:30 2016 +0900"
      },
      "message": "Don\u0027t send short URB packet when sending MtpDataPacket.\n\nWhen sending a MtpDataPacket to a MTP device, the kernel driver splits\nit into multiple URB packets so that the URB packet size does not exceed\nthe buffer size at the MTP device.\n\nPreviously MtpDataPacket sends its header first, then sends the\npayload. It means the first URB packet only contains the header of\nMtpDataPacket and the URB packet size is smaller than the maximum URB\npacket size (short packet). Some MTP devices regard the short packet as\nthe end of the sequencail URB packets, thus the devices do not accept\nthe following URB packets that contain the payload.\n\nThe MTP spec says if the responder (MTP device) sends the data in a way\nwhere the first pacekt contains only the header, the initiator (MTP\nhost) must send data in the same way. Otherwise the initiator must not\nsend a short packet in the sequencial URB packets.\n\nThe CL fixes the MTP host implementation so that it remembers how the\nMTP device sends data, and uses the same way when sending data\nfrom the host.\n\nBug: 31165557\nTest: Manually invokes MtpDevice#sendObject\nChange-Id: Ic76eb4241ed74957414aef2990be08cd77a9f5a9\n"
    },
    {
      "commit": "8d20945c08dfdd85c252c8ba92d197bf1bd2b208",
      "tree": "c590e169fc722f641ba277d9d05917385e2d2e57",
      "parents": [
        "ecb008139a952a7e5d812e7eb0f5af0f9466d25d"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Tue Oct 04 17:45:31 2016 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Tue Oct 04 17:45:31 2016 +0900"
      },
      "message": "Stop sending object handle with sendObject request.\n\nAccording to the MTP spec, the sendObject request must follow\nsendObjectInfo request and we could not send an object handle with\nsendObject request. The CL stops sending object handle with a sendObject\nrequest. Instead it checks if the given object handle equals to the\nobject handle returned by the previous sendObjectInfo request.\n\nBug: 31918048\nTest: manually invoked sendObjectInfo and sendObject.\nChange-Id: I0a80bdf67bf2913522821ac705f3dc548d3edead\n"
    },
    {
      "commit": "66a9abef47f7c8bd438bb1897617ebad3858c736",
      "tree": "ced5812a016c2917eb874575cef1c906b0810ba7",
      "parents": [
        "6fbc20c958c0c770261ca4d32a3748ea4ecd64d9"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Thu Mar 24 20:56:13 2016 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Fri Mar 25 19:49:05 2016 +0900"
      },
      "message": "Add getObjectPropValue function to MtpDevice.\n\nIn the MTP spec, the object size is stored in MtpObjectInfo as unsigned\n32-bit integer and fetched by the getObjectInfo operation. For the\nobjects that are more than 4GB, the object size is provided as one of\nextra properties, which are fetched by different operation.\n\nThe CL adds to getObjectPropValue method to MtpDevice class so that\nclient code can obtain 4GB+ object size from object property.\n\nBUG\u003d27805369\n\nChange-Id: I0b91facd07cdc19866cb29f7df08bb1698bcf60b\n"
    },
    {
      "commit": "95faffd31926e2e0b83923c181629d1cea29e88f",
      "tree": "ba83f0563d729a7569b6a5f3cfb91a9f2d1fcc24",
      "parents": [
        "bf57c8adde015a2e46f012e865bdb9082eca1eaa"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Wed Mar 23 20:13:24 2016 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Wed Mar 23 20:15:52 2016 +0900"
      },
      "message": "Remove redundant code to check container type.\n\nThe CL removes redundant check for containter type.  We have the same\ncheck just after the removed check, but the removed check returns\nopposite value for boolean result of the function.\n\nBUG\u003d27805514\n\nChange-Id: Ia8e32c0c38553a9a0ec4d9d726b8cde6281d34e1\n"
    },
    {
      "commit": "b3be006498f28f2630264135e88d266b540bcec3",
      "tree": "cf0e73cf3765cf3df953d22eae325747c412d7d3",
      "parents": [
        "78229d88678932244f7cbb6e52ad43c0d986a780"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Thu Feb 25 12:42:58 2016 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Fri Feb 26 12:56:57 2016 +0900"
      },
      "message": "Fix compiler warning in media/mtp.\n\nBUG\u003d27152673\n\nChange-Id: I0a5a7f2005bd76acf4d09353305b66af3fd29e4b\n"
    },
    {
      "commit": "251322bc8ac7ff7690bf706206c8ef251ca059f2",
      "tree": "c9b6a8ea3c6f7288d0b861162672473285cc6647",
      "parents": [
        "2e5408ac3e51cb459160b9cd392f1809b0758316",
        "33d58162896868f387416289c8b33266be0a3360"
      ],
      "author": {
        "name": "Jaesung Chung",
        "email": "jaesung@google.com",
        "time": "Tue Feb 02 01:09:06 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 02 01:09:06 2016 +0000"
      },
      "message": "Merge \"Retry usb_device_claim_interface when it\u0027s connected to the kernel driver\""
    },
    {
      "commit": "33d58162896868f387416289c8b33266be0a3360",
      "tree": "8e97cbe27b504348b1acb61894bfefbf1d32a905",
      "parents": [
        "bbe98f009fc2c3181a8d4ab71b3e145f76c01755"
      ],
      "author": {
        "name": "Jaesung Chung",
        "email": "jaesung@google.com",
        "time": "Mon Feb 01 16:41:51 2016 +0900"
      },
      "committer": {
        "name": "Jaesung Chung",
        "email": "jaesung@google.com",
        "time": "Mon Feb 01 23:58:22 2016 +0900"
      },
      "message": "Retry usb_device_claim_interface when it\u0027s connected to the kernel driver\n\nusb_device_claim_interface is called solely for marking that a program\nor a driver uses it and it does not trigger any signals over the bus.\n\nusb_device_claim_interface has a possibility to be failed if the kernel\ndriver already connected to a usb device. When it happens, the function\ncall returns an error and errno is set to EBUSY. For that case, it is\nnecessary to disconnect to the kernel driver and retry to claim the\ninterface again.\n\nBug: 26845384\nChange-Id: I4fae0e66ca1132f8cc16937cc6fb837ec4d5659f\n"
    },
    {
      "commit": "610d4a125f0144ec4915e5cef9f53e431cb117af",
      "tree": "ba5a91d474433a3599750bf5d2dfdf4a360c6c92",
      "parents": [
        "326edd98bbc52d41de6e0943ca8a343228ed87a5"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Thu Jan 28 14:26:36 2016 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Thu Jan 28 14:26:36 2016 +0900"
      },
      "message": "Add comment for readPartialObject\u0027s NULL expected length.\n\nBUG\u003d26703522\n\nChange-Id: I584c13e5e5d3f396aa2dfbd351c1c36f7bc0870d\n"
    },
    {
      "commit": "326edd98bbc52d41de6e0943ca8a343228ed87a5",
      "tree": "4d457072ec3cae45b3ac0f609fd1b2290cae5073",
      "parents": [
        "a03910b23a31058eea178e8d3f5e84fcf852d5c2"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Fri Jan 22 15:34:46 2016 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Thu Jan 28 10:52:54 2016 +0900"
      },
      "message": "Add MtpDevice#getPartialObject64 method.\n\nThis is the method similar to getPartialObject but takes uint64_t as\noffset.\n\nBUG\u003d26703522\n\nChange-Id: I9b8b5f77225b744b527c4a78fe628e88ae89209f\n"
    },
    {
      "commit": "59a90609cc340d2933c119aa47045a5c95530b48",
      "tree": "901a72751f1ec72bf3f9b56dc9f26e34fffbe3e6",
      "parents": [
        "4a9fc960b75e0718193d0df91936b6c6bd4195ae"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Mon Jan 11 13:36:57 2016 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Tue Jan 12 12:06:46 2016 +0900"
      },
      "message": "Reland \"Return parameters of event as well as event code.\"\n\nThe CL was previously reviewed at ag/842911.\n\n\u003e The CL makes MtpDevice#reapEvent return event parameters as well as\n\u003e event code.\n\u003e\n\u003e BUG\u003d26480986\n\nChange-Id: Ie750a58248068cd0e804f20b57e7e86eef19d315\n"
    },
    {
      "commit": "4a7cea889d81bbf8f555df006fe384a405b3ba53",
      "tree": "ab733d7877cbc9861961149e24379fe369d612ec",
      "parents": [
        "3747d8ec383964285a50a58abbf85589f2d29315"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Fri Dec 11 15:49:43 2015 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Wed Jan 06 14:35:36 2016 +0900"
      },
      "message": "Add getPartialObject method to MtpDevice.\n\nThe CL adds getPartialObject operation to MtpDevice (host side\nimplementation).\n\nBUG\u003d26284424\n\nChange-Id: Ia8f41b0ebb7dfb4572729eacb5902f21360c8db1\n"
    },
    {
      "commit": "a04e6fa61391f1ef64266579760f315c6b3e70b9",
      "tree": "a1badc9804fe0bf9b104cdb9d86c631a224ac8ce",
      "parents": [
        "d958855ff2f7c05672b5278437ee0d177270d24d"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Thu Dec 24 14:20:44 2015 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Thu Dec 24 16:59:10 2015 +0900"
      },
      "message": "Fix MtpDevice to read 0-byte object correctly.\n\nIf a requested object is 0 bytes, the remote MTP device can return\nMTP_CONTAINER_TYPE_RESPONSE at the first response package. Previous\nimplementation does not handle the case.\n\nBUG\u003d26317907\n\nChange-Id: I6ae1138bf1b24aa197575bea0440cc032ffd622a\n"
    },
    {
      "commit": "d6dabe95eb59c3d95f94825d08a6028bab06cbdc",
      "tree": "ca833cc680df8629748cc84e809f8c8ae4a95217",
      "parents": [
        "c5fcd06e9c332a60ba5fcba2118270dbdf22ae42"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Wed Dec 02 15:08:48 2015 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Wed Dec 02 15:08:48 2015 +0900"
      },
      "message": "Skip an interface that does not have MTP interface class.\n\nThe comment says it skips the interface that does not have MTP or PTP\ninterface class, but previously it accepts such interfaces.\n\nBUG\u003d25960704\n\nChange-Id: Idba07d4c6432d73cf45d9a3422af0ad18cd1b280\n"
    },
    {
      "commit": "8a7ffae09a019de7109b30c505561c453910bde1",
      "tree": "85222bdac601b44a798890a651a08ac36d71a591",
      "parents": [
        "7bafd606eb2390574f0a2b0043074d9cdfde1120"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Thu Aug 20 15:13:40 2015 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Tue Sep 15 18:50:37 2015 +0900"
      },
      "message": "Add functions to read MTP events from MTP devices.\n\nBUG\u003d23368533\n\nChange-Id: I2003dda961339677caf56e57ae90cf6df7bd7430\n"
    },
    {
      "commit": "532b4f23c7e08fdae9fff189c4b565f6216ffd2a",
      "tree": "460ae422b6e389e831fbf2fbd44f2e53c7b93cf9",
      "parents": [
        "f3c2b3df8bf616ad593e2c0101b04a718f291827"
      ],
      "author": {
        "name": "Tomasz Mikolajewski",
        "email": "mtomasz@google.com",
        "time": "Tue Aug 25 14:14:36 2015 +0900"
      },
      "committer": {
        "name": "Tomasz Mikolajewski",
        "email": "mtomasz@google.com",
        "time": "Thu Aug 27 16:49:21 2015 +0900"
      },
      "message": "Fix sendObject upload.\n\nTwo issues are resolved:\n- sendObject changed to accept raw arguments instead of objectinfo,\n  as calling getObjectInfo after sentObjectInfo is illegal,\n- send buffer decreased to 16K, as this is the maximum size working\n  per comments in other places.\n\nChange-Id: If71644dcbc508dd92c3fe74a2fdb7c6798059b42\n"
    },
    {
      "commit": "4fd9a8b9865addfedbcd84d5c9efea0f647086a0",
      "tree": "fcab096d691d3463873eba0c7c7a561416cee36b",
      "parents": [
        "6d5a0de5177bccc17d0eb1b69a8ed88d620884a5"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Thu Aug 20 15:13:40 2015 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Mon Aug 24 17:53:28 2015 +0900"
      },
      "message": "Use common implementation for getObject and importFile.\n\nPreviously the two functions have separate but similar implementation. ag/750097\nfixed a bug in importFile, but we have a same bug in getObject. Instead fixing\nthe bug separately, the CL adds a common function that can be used from both\ngetObject and importFile.\n\nBUG\u003d23264575\n\nChange-Id: I0bdc876ee9b11301ba4c445cc16556e9c951a8b4\n"
    },
    {
      "commit": "81ca5ade77ea518aa21fdd7434d2db5df088a115",
      "tree": "f201610ca81c7731190a11ca884a8678415f6245",
      "parents": [
        "2b355c2063fa89a50c5fd463c00a47633dfee56b"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Tue Aug 18 21:13:40 2015 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Thu Aug 20 15:14:53 2015 +0900"
      },
      "message": "Read whole data from MTP device even on writing error.\n\nOnce the object bytes is requested on the MTP client device, the device tries to\nsend whole data of object. We need to read the complete data from the device\neven when we have errors at the destination file descriptor. Otherwise the\nobject data will be received as a response of next request unintentionally.\n\nBUG\u003d23264575\n\nChange-Id: I3369786370022f65aa760dd6b75204a946f712af\n"
    },
    {
      "commit": "64c948bf5041fdfe391553315c9d028e1ee56382",
      "tree": "d14eaf1d1f218ca12fd8c48026318f15cbb1f3b7",
      "parents": [
        "58bfa487072d6e67ec1578c68315c83a2e49d3d3"
      ],
      "author": {
        "name": "Tomasz Mikolajewski",
        "email": "mtomasz@google.com",
        "time": "Thu Aug 13 15:31:02 2015 +0900"
      },
      "committer": {
        "name": "Tomasz Mikolajewski",
        "email": "mtomasz@google.com",
        "time": "Fri Aug 14 18:35:04 2015 +0900"
      },
      "message": "Fix sending object info in MTP stack.\n\nThis CL fixes three bugs:\n1. Wrong condition, which caused MtpDevice::sendData always return false.\n2. Sending data separately was incompatible with the server side, causing\n   receiving only partial data on the server side.\n3. Sending uninitialized buffers (sic!) from MtpDevice::sendObjectInfo\n   due to missing call to reset().\n4. Sending corrupted packets from MtpDevice::sendObjectInfo (shifted by\n   4 bytes) due to missing reset().\n5. Sending incorrect parent in MtpDevice::sendObjectInfo in case of not\n   specified parent.\n\nChange-Id: Ia545c66b388ea9a292ba31f6ff034e2467037d92\n"
    },
    {
      "commit": "025ffd9c17a7b30d862436954aa0db8d08bfaa9f",
      "tree": "6255d4904a7711eb4ec7e31120f09386aa97299a",
      "parents": [
        "b2d33aee5122c91a59c2a676c0b89ad340232450"
      ],
      "author": {
        "name": "Tomasz Mikolajewski",
        "email": "mtomasz@google.com",
        "time": "Tue Aug 04 18:38:31 2015 +0900"
      },
      "committer": {
        "name": "Tomasz Mikolajewski",
        "email": "mtomasz@google.com",
        "time": "Tue Aug 04 18:49:35 2015 +0900"
      },
      "message": "Add support for reading into a file descriptor on MTP devices.\n\nThis will allow to read files on Java side without copying all bytes to\nmemory first, which is problematic for large files such as movies.\n\nBug:22908937\nChange-Id: I67b116cf01d9e44af69f94c8edc64fd8fbf7b9a3\n"
    },
    {
      "commit": "e1e814c7c640a51511b149985d57f8bfd4a8bf78",
      "tree": "e80535c005c41fc25e24648fa0fa5f50b2d53137",
      "parents": [
        "dd1b265eb3041532ad76d41bb73dbe9722decf7f",
        "e418cfae0970d1abe60b8cc681aa8c8a828b3769"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Thu Nov 13 16:49:14 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Nov 13 16:49:14 2014 +0000"
      },
      "message": "am e418cfae: am 869e0798: Merge \"MTP: add strict bounds checking for all incoming packets\" into lmp-mr1-dev\n\n* commit \u0027e418cfae0970d1abe60b8cc681aa8c8a828b3769\u0027:\n  MTP: add strict bounds checking for all incoming packets\n"
    },
    {
      "commit": "ab063847e6e893740749029a04cce1f6b7345ed5",
      "tree": "8b840e9152cfa638aa354a0379962a89914e0006",
      "parents": [
        "745602d87607521f4fe84c4f3a6388fbdb6a867c"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Wed Nov 12 14:20:06 2014 -0800"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Wed Nov 12 16:08:37 2014 -0800"
      },
      "message": "MTP: add strict bounds checking for all incoming packets\n\nPreviously we did not sanity check incoming MTP packets,\nwhich could result in crashes due to reading off the edge of a packet.\nNow all MTP packet getter functions return a boolean result\n(true for OK, false for reading off the edge of the packet)\nand we now return errors for malformed packets.\n\nBug: 18113092\nChange-Id: Ic7623ee96f00652bdfb4f66acb16a93db5a1c105\n"
    },
    {
      "commit": "8023f3af62795b7816f36a9423f8e0a39e616e49",
      "tree": "d59bc64da620e6e42fde66ce22410c4749e2823f",
      "parents": [
        "8f230382b86e7b431211ceb0263d06c4bba1bf6b"
      ],
      "author": {
        "name": "Bo Huang",
        "email": "bo.b.huang@intel.com",
        "time": "Sun Jun 09 08:53:21 2013 +0800"
      },
      "committer": {
        "name": "Bo Huang",
        "email": "bo.b.huang@intel.com",
        "time": "Fri Sep 26 10:25:37 2014 +0800"
      },
      "message": "MTP Device: Parse USB3 descriptor for MTP initor;\n\nMTP initor in Android only support MTP responder based on USB2.\nAdd support for MTP device based on USB3.\n\nChange-Id: I52b7a5ddff8ae3f8c2ce8a802c2cb2865f4e162a\nSigned-off-by: Bo Huang \u003cbo.b.huang@intel.com\u003e\n"
    },
    {
      "commit": "3ab368e0810d894dcbc0971350c095049478a055",
      "tree": "a50053c391da8c02797158395f2ecfec83218855",
      "parents": [
        "db43b34c3428e480f8c4c66e7e88f4001f37f91e"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Apr 15 14:55:53 2014 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Apr 15 14:57:31 2014 -0700"
      },
      "message": "media: use size_t for integer iterator to Vector::size()\n\nChange-Id: I0a744dc7815a86a993df9b0623440be620ec8903\n"
    },
    {
      "commit": "db43b34c3428e480f8c4c66e7e88f4001f37f91e",
      "tree": "be194bf06c84b61f277a1c29c7499aa7862494a4",
      "parents": [
        "1df2557ac95a6d8a087fb15f6f842dc049f2759b"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Apr 04 14:47:28 2014 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Apr 15 13:18:22 2014 -0700"
      },
      "message": "media: 64 bit compile issues\n\n- change internal sized types to use stdint.h\n- printf \u0026 scanf formats\n- size_t or unsigned int for iterators\n\nChange-Id: Id993a70d8bf54c667c5d652b34179a2c727ed446\n"
    },
    {
      "commit": "af8e8aa1ada2948972555592570ec9ad90cbf372",
      "tree": "c573478e9f30dfe62dab9674fa4c04170f4b9626",
      "parents": [
        "0dc6d5ef45c0721c76f0e55354ff80371d795e5d"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Jun 26 13:32:23 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Jun 26 13:53:00 2012 -0700"
      },
      "message": "Add mode when open(O_CREAT) is used.\n\nWhen creating a new file using open(..., O_CREAT), it is an error\nto fail to specify a creation mode. If a mode is not specified, a\nrandom stack provided value is used as the \"mode\".\n\nThis will become a compile error in a future Android change.\n\nChange-Id: I36a3d67d294a915c1f79632a1b0ba45edd1214b1\n"
    },
    {
      "commit": "29357bc2c0dd7c43ad3bd0c8e3efa4e6fd9bfd47",
      "tree": "3bdafe4b02fe36f6ee29c3170f0b0d2799bebf86",
      "parents": [
        "d709ca9c6a0fa1c8f40cbe624a119398643c5087"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Fri Jan 06 19:20:56 2012 +0000"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Sun Jan 08 13:19:13 2012 +0000"
      },
      "message": "Rename (IF_)LOGE(_IF) to (IF_)ALOGE(_IF)  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/#/c/157220\n\nBug: 5449033\nChange-Id: Ic9c19d30693bd56755f55906127cd6bd7126096c\n"
    },
    {
      "commit": "df64d15042bbd5e0e4933ac49bf3c177dd94752c",
      "tree": "ff04eb3e1a1ce8c8d8559b93a438f278d984aa87",
      "parents": [
        "b8a805261bf0282e992d3608035e47d05a898710"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Wed Jan 04 20:05:49 2012 +0000"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Wed Jan 04 20:05:49 2012 +0000"
      },
      "message": "Rename (IF_)LOGI(_IF) to (IF_)ALOGI(_IF)  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/156801\n\nBug: 5449033\nChange-Id: Ib08fe86d23db91ee153e9f91a99a35c42b9208ea\n"
    },
    {
      "commit": "b8a805261bf0282e992d3608035e47d05a898710",
      "tree": "7a43908b8e936ac1f30eef0542b40d667c47aa23",
      "parents": [
        "94023fa6744e24f26f0aba1699ec278649bd66df"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Tue Dec 20 16:23:08 2011 +0000"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Tue Jan 03 22:38:27 2012 +0000"
      },
      "message": "Rename (IF_)LOGD(_IF) to (IF_)ALOGD(_IF)  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/156016\n\nBug: 5449033\nChange-Id: I4c4e33bb9df3e39e11cd985e193e6fbab4635298\n"
    },
    {
      "commit": "3856b090cd04ba5dd4a59a12430ed724d5995909",
      "tree": "a24e4c98fa6049fd8085826be838000f9a67e39b",
      "parents": [
        "1d2acaffde56ad79e6e96f228d7857863462397c"
      ],
      "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": "3d74457b66533b170606347e60628e55a2af255e",
      "tree": "959f5d6628976454dad2f3c5580b56ee4544cd84",
      "parents": [
        "33bde8d8c4fc71fb3cdd8356fd0df70ffb44fcd7"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Mon Mar 14 10:33:22 2011 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Mon Mar 14 10:33:22 2011 -0400"
      },
      "message": "MtpDevice: Handle zero length packets in readResponse()\n\nBug: 3509060\n\nChange-Id: I291eefeaa667688c9e6e75da74ec3025b84065e9\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "d4fb52e3031578119ecd53087b1bcb4828c333c5",
      "tree": "d4019afe98cb780b9beaf619c15bc581bc62efc5",
      "parents": [
        "f1958f9442bc937e1f8c8d9175901500b944b021"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Feb 15 14:55:51 2011 -0500"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Feb 15 14:55:51 2011 -0500"
      },
      "message": "MTP host: disable some test code\n\nChange-Id: I2237ad88f73b03a2c324f17267c52cc42b8a0d5b\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "31c52e7c8c01e1db6ff9bcf66135c72544b1235a",
      "tree": "d109f977a229623a0a907130bf354721378cd6e1",
      "parents": [
        "c36c7addb22cecfbe467b58ce219cd1f6db21a44"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Feb 02 13:43:55 2011 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Feb 02 14:07:10 2011 -0800"
      },
      "message": "Fix some memory leaks found in static analysis\n\nChange-Id: Icd630009793c51acfaed45763ef50489ead40024\n"
    },
    {
      "commit": "f41ef0ee0da4c497352df42d09c3d89940c25e14",
      "tree": "61b326463ac9122bf55196d354420cf2ca2c5306",
      "parents": [
        "6cfacdf97708bc3a0e3d1ed3e07e71caae9a194e"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu Jan 27 10:47:40 2011 -0800"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu Jan 27 16:22:15 2011 -0800"
      },
      "message": "Add support for synchronous bulk USB transfers\n\nChange-Id: Id5de49e4d728a702fa1583ecc24f83f36cc57d21\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "23f1b33c5f88f07510ca5dc01b3afd7af6843d6c",
      "tree": "801bb79c1b94e88d649a4066b631290e3de19ae9",
      "parents": [
        "f0cf63fff696b30a0b5760bb637efb1aa9bf1f55"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu Dec 30 15:38:45 2010 -0500"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Sat Jan 22 15:56:09 2011 -0800"
      },
      "message": "New APIs for MTP and PTP host support\n\nThis replaces the previous ContentProvider based interface\n\nChange-Id: I4cea2544854adb9fdcc04345e4d73d8ef05380f3\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "42d0b79a787814d42e4c6f9dfe14f13cc0f6a758",
      "tree": "9cb2c20fb8bf7d6b53c093c8e3dceb5dc0374523",
      "parents": [
        "d1108d74e13a74dc72e49513e0393e924f3d112c"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Jan 04 14:48:57 2011 -0500"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu Jan 06 11:46:55 2011 -0500"
      },
      "message": "MTP: changes to use new usb_request support in libusbhost\n\nChange-Id: Ic091eab166a66efcde0395dcebbbc513f2322fca\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "f7454622eaac287d20ab43013d7015fe42b894f8",
      "tree": "1bbc63dbaf849ed5226194e933f2de3c9bdb22e0",
      "parents": [
        "424c6cbfa75da5f4f889ab6517dfee4dd024ba2d"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu Dec 09 18:34:18 2010 -0800"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu Dec 09 18:34:18 2010 -0800"
      },
      "message": "MTP host: Handle receiving a response packet instead of data packet.\n\nThis will happen if the device needs to report an error rather than returning the data.\n\nChange-Id: I477512b3676c2f0518a85a4135832ed4475fbc2d\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "99e393a39a31bfbdeb435462939519e2d0279433",
      "tree": "b4fbe06804f106403ca1dad9eaf421d434566ce6",
      "parents": [
        "5da864845e024833c4c7f641acd7c88187a6bc1e"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Dec 07 18:53:04 2010 -0800"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Dec 07 18:53:04 2010 -0800"
      },
      "message": "MTP: Support format argument in host GetObjectPropDesc command\n\nChange-Id: Ic14313c0f95bea1d1d475cc6a001b256fccb91c8\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "0c7c7c76a96a82ec728a2d5c091941c4057ffb25",
      "tree": "19fc13f9b1d585ee08afe816939c27e5373cb091",
      "parents": [
        "98693f674125484de8873d969c209276a6dd604b"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Dec 07 11:24:28 2010 -0800"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Dec 07 17:13:12 2010 -0800"
      },
      "message": "MTP: Improve MtpProperty logging support\n\nChange-Id: I46800b99763edcc5e994d912941f9f5e9b1c94d2\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "98693f674125484de8873d969c209276a6dd604b",
      "tree": "58c69be45cd71ca9729f1a2388da9a8f18d3ae25",
      "parents": [
        "2e09e289b7e136481e9215bb61ed47cee5d9919b"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Dec 07 10:58:56 2010 -0800"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Dec 07 10:58:56 2010 -0800"
      },
      "message": "MTP: Host support for GetObjectPropsSupported and GetObjectPropDesc\n\nChange-Id: I6fd23587597fc68227dfb61118b097eda3e3e1d5\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "27afe3a1cc9c07ac4884a7720087a597aea3c76f",
      "tree": "9b82ea60a4996f39d1e0a33cc1fb300f7771143b",
      "parents": [
        "b9ff444a7eaf7ffd43970c0477110c6808bd4a7c"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri Nov 19 13:52:20 2010 -0500"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri Nov 19 13:55:22 2010 -0500"
      },
      "message": "PTP: Fix permissions problems with files imported via PTP\n\nChange-Id: I630a89c67e5b3d6d0c29e6c257f84e1909fa4de2\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "b9ff444a7eaf7ffd43970c0477110c6808bd4a7c",
      "tree": "6fcfa2ec5805ead1a62757b7875a20eee5b4a151",
      "parents": [
        "317ca79a49746dbd1b6bb83712e93e2dc5f6e4f0"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri Nov 19 11:20:19 2010 -0500"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri Nov 19 11:30:10 2010 -0500"
      },
      "message": "PTP: Improve performance and reliability of file importing\n\nNow the file copy is done completely within the media process\nrather than pushing data to the client via ContProvider.openFile().\n\nFile system writes are now interleaved with USB reads, which allows us\nto copy the data faster and prevents the camera from timing out during transfer.\n\nFile is automatically inserted in the media provider after a successful import\nand a Uri is returned to the client.\n\nBUG: 2994234\n\nChange-Id: Ie75c63da76f623343d3d966c6a707aa1ae871972\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "e3e76c456baee122de6715ae280130abaddc906c",
      "tree": "b3ba77dcd8e8f71e8607471e73e3ea560426be55",
      "parents": [
        "6faf0cd82346b23075d1f8b9f70f7af43f2c5f04"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu Sep 02 14:57:30 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu Sep 02 14:59:26 2010 -0400"
      },
      "message": "MTP: Implement support for getting/setting device properties\n\nAdded support for the \"device friendly name\" and \"synchonization partner\"\nproperties, which are required by Microsoft.\n\nChange-Id: Ic0443333d75f7d98a2d902a790b9d505a56d4eef\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "da90dff17b6ce79d0a7d8ab2dbe2aa69cd1c11aa",
      "tree": "ab459d596dad501fcc4b484bb45f80133efb2779",
      "parents": [
        "f43c641bf3f8bcb5748f4ae504d434896edc94f5"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Jul 27 11:52:45 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Jul 27 12:38:33 2010 -0400"
      },
      "message": "MTP host: Reduce buffer size for readObject so we don\u0027t clog our pipe.\n\nChange-Id: I24d2b1551af5843e48c0a63b84925b3a6451e36a\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "f43c641bf3f8bcb5748f4ae504d434896edc94f5",
      "tree": "be126fd1687b07b475cabcdc68c29ff2d3091bb0",
      "parents": [
        "9e77e155b05e419a34e0fd116ee50f0fc092e67a"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Jul 27 11:50:34 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Jul 27 12:38:29 2010 -0400"
      },
      "message": "MTP: Turn off excessive logging\n\nChange-Id: Ib0dd8cb99efa324d0b4e742bffeb913d6122ace2\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "0cf89f2e622aa53f31fa5762ca4bc805bb509ed3",
      "tree": "e0983afa92472593e764f81d8e42b5d118a3a697",
      "parents": [
        "2b6c4a26499693ae3638e3df6d4255b13e34ee29"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Mon Jul 26 20:40:45 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Mon Jul 26 20:40:45 2010 -0400"
      },
      "message": "MTP host: Add support for reading files from an MTP device via ParcelFileDescriptor\n\nAlso added some support for sending files to the device that hasn\u0027t been debugged yet.\nAdd locking to MtpDevice to prevent it from attempting multiple transactions simultaneously.\n\nChange-Id: I2b995ba0af086cc6920bd6b8c869f540ad78560a\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "21ef7d0e70c5ad599bc2602cb484f8cd647055ca",
      "tree": "3e7af9cd07506b7bf52e2d3ad1ed9ada9f6b0dd6",
      "parents": [
        "05a53a389852a9e52b816c087465f4e0c5009613"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Wed Jun 30 17:00:35 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Wed Jun 30 17:02:07 2010 -0400"
      },
      "message": "MTP: Implement GetObjectPropDesc\n\nChange-Id: I283651257254fc9cd9d93eab4605c5e33d3db93e\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "b14e588bec4d5e39e61b020b5b575f2ce555d316",
      "tree": "f4d08eaa3bd5832b3bfebbdb9d19c8fcde45b54e",
      "parents": [
        "703f87c890591e3a20ba0da237233c36a7c47bc7"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Jun 29 18:11:52 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Wed Jun 30 13:59:32 2010 -0400"
      },
      "message": "MTP: replace printfs with logcat\n\nChange-Id: I2c30921098e2dc049dc5fc1e0a548ead33c363e0\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "6afc41d095ccb159f6c4705bed903b6c048b922a",
      "tree": "d62715a9f700f2c56418968aa1d8199e62580bad",
      "parents": [
        "0c9e60c772ae007a68cbfa46e0d2fb429376cfd2"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri Jun 11 16:34:52 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri Jun 11 17:47:35 2010 -0400"
      },
      "message": "MTP: Add host support for deleting objects.\n\nFor example, deleting pictures on a digital camera.\n\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "3e072b354d1e1e3ee62d58492f0739139df8aff1",
      "tree": "5c1d39a97b326b210d148dfefb70832ea87e1dab",
      "parents": [
        "fee87d7b4e60d7541aa2cb0d31f5bdf4ca9e6475"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu Jun 10 16:34:20 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu Jun 10 16:58:03 2010 -0400"
      },
      "message": "MTP: Add support for retrieving thumbnails to MTP content provider.\n\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "a6c490b8b2d96ebaab632286029463f932ae3b6b",
      "tree": "05f47b431aa13127a4f62d9676d21f45169a7d9f",
      "parents": [
        "7dfffd78637f99ce396e7ce2008b05b2d5aec131"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Sat Jun 05 22:45:01 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Mon Jun 07 09:34:41 2010 -0400"
      },
      "message": "MTP: host support for retrieving device property descriptors\n\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "5ed68d29a140e14c8d46980fa844548eb33b1e87",
      "tree": "76b370bbfac9fe8e2105c57bf21154f6dd245d38",
      "parents": [
        "77995c32095cc192823de3eedf0d5a404fbca72e"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue May 25 19:08:48 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Jun 01 22:12:44 2010 -0400"
      },
      "message": "Prototype Content Provider support for MTP/PTP devices.\n\nAt this point much of the plumbing is in place, but only a few simple queries\nare supported.\nThis is enough to support a proof of concept sample program that navigates\nthe file hierarchy of a digital camera connected via USB.\n\nAlso removed obsolete ptptest host test program.\n\nChange-Id: I17644344b9f0ce1ecc302bc0478c1f3d44a1647f\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    }
  ]
}
