)]}'
{
  "log": [
    {
      "commit": "3d1d7767afc7c488197ec40a22739159c5110721",
      "tree": "f890c639ba31cbd98b05e69e504df1d4f8b924e6",
      "parents": [
        "c0fc64242a504a6c72670b0db2d648d2a3e208d2"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Jun 21 08:27:06 2011 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Jun 21 08:27:06 2011 -0400"
      },
      "message": "MTP: Add support for PTP variant of GetDeviceInfo result.\n\nChange-Id: I09f86fda768b7697665e401adb9516588859bf59\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "64000788211f4c7e78c80a4a155390d1316e1176",
      "tree": "5cd67cc35f9df8ffcef27438430c6a087adfa69c",
      "parents": [
        "c0502468a29aa2f2b3457e0e08c4a5650a70488d"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Sun Apr 24 18:40:17 2011 -0700"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Mon Apr 25 17:40:33 2011 -0700"
      },
      "message": "MTP: Implement GetThumb command\n\nThis allows the PC to access thumbnails in JPEG files over MTP/PTP\n\nBug: 3219495\n\nChange-Id: I4964f8b4826dffb7f0f77464ec91bd2e97a2f007\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "c3f16e5620c090aeb75c0836572a8b913a4ef864",
      "tree": "a888617667df3f7deb35d7123f8963ef23e9ed96",
      "parents": [
        "c5182e31b23dc381d21ef43b7f7d682ffc54bd79"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Mon Apr 25 12:56:21 2011 -0700"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Mon Apr 25 13:36:11 2011 -0700"
      },
      "message": "MTP: Fix file descriptor leak in file editing extensions\n\nChange-Id: I6d0de5efe705d8060bbfd526c6880dc995a3aa30\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "7d77dcfadd7fb637ed2c3aef5bb3990dd0a67dc0",
      "tree": "ca352d0fe548618385cef862a764ad33c4d0c1db",
      "parents": [
        "88a90ab588f11d1ffaf08e178232359c6d8d03eb"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu Apr 21 17:05:55 2011 -0700"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri Apr 22 07:11:20 2011 -0700"
      },
      "message": "MTP: Add extended operations to support in-place editing of files\n\nMTP does not support partial writes of files (the entire file must be transferred at once).\nThis makes it impossible to implement a FUSE file system for MTP\nwith acceptable performance.\nTo fix this problem, this change adds extended MTP operations to allow\npartial writes to files:\n\nSendPartialObject - allows writing a subset of a file, or appending to the end of a file\n\nTruncateObject - allows changing the size of a file\n\nBeginEditObject - must be called before using SendPartialObject and TruncateObject\n\nEndEditObject - commits changes to a file after it has been edited with SendPartialObject or TruncateObject\n\nWe also add GetPartialObject64, which is the same as GetPartialObject\nbut has a 64 bit offset rather than 32.\n\nChange-Id: I4b110748b97ae05cdc8aab02ecdbbbeb263f7840\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "30adaaf9d6fd944c8f6a2c7a06774b019878c368",
      "tree": "45569049e40a03e0e725f472bcec6170d106ecb2",
      "parents": [
        "7fb4b427d5fca79c09d69b212ddca41539c215a2"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Apr 05 10:21:27 2011 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Apr 05 15:19:16 2011 -0400"
      },
      "message": "MTP and media provider support for multiple storage devices:\n\n- MTP support for multiple storage units\n\n- Add storage_id column to media database for MTP storage ID\n\n- Add framework resource for defining mount points and user visible descriptions\nfor multiple volumes\n\n- Clean up locking in MtpServer JNI code\n\nChange-Id: Iffb66ed156ef5bc80b14228af78fbacee7734360\n"
    },
    {
      "commit": "a849440ca96e93f700d62c6e41d48905b4d405b6",
      "tree": "4df33307f6d972f4465c542390dd7ef3606eea58",
      "parents": [
        "39a5f1bbf88c124dc24b34d718a2d95f577b5bf1"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri Feb 18 09:07:14 2011 -0500"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Feb 22 13:57:23 2011 -0800"
      },
      "message": "MTP: Add support for dynamically adding and removing storage units\n\nBUG: 3402847\n\nChange-Id: I7da266061d949abcb6bb11c6faaa47b5e4a2a977\n"
    },
    {
      "commit": "20c3be0e0394e1340c036685eb1edb8f6ef5a2ac",
      "tree": "8f3ae6045924fe4692042cb0cd61feb195a8ddb3",
      "parents": [
        "8d45a37ff076814db39471f15d309567605b3416"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Sun Dec 12 12:17:43 2010 -0800"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Sun Dec 12 12:17:43 2010 -0800"
      },
      "message": "MTP: Add support for reserve storage setting to avoid low storage situations.\n\nSet resource config_mtpReserveSpaceMegabytes to number of megabytes to reserve.\nIf MTP has dedicated storage this value should be zero, but if MTP is\nsharing storage with the rest of the system, set this to a positive value\nto ensure that MTP activity does not result in the storage being\ntoo close to full.\n\nBUG: 3250924\n\nChange-Id: I881c87240da268bad1ea1b99ad03673ab85ffdbf\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "d81ce3cf2e6479915658a0829eced062e3655320",
      "tree": "f174670a23626ba7643eb561566a1490fb1ffaa3",
      "parents": [
        "b892d0e5556ed6ded3e0548f75ab16fc2e3d92c3"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Nov 23 09:08:01 2010 -0500"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Nov 23 18:45:01 2010 -0500"
      },
      "message": "MTP: Implement GetPartialObject command\n\nAllows host to read partial contents of files on the device\n\nChange-Id: I74927f7394224d674e1d150a4b72a51d9358459b\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "b6da06e9dfb916da4b88e09e8a83e22ddae445b5",
      "tree": "304c854e47b34e5a22fa885627b4d3597a9d7550",
      "parents": [
        "2d71233de5450f1b128c8149fdbdf39b937f3cb8"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Thu Oct 14 18:03:25 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Mon Nov 15 11:46:51 2010 -0500"
      },
      "message": "MTP: Partial implementation of the GetObjectPropList command\n\nIn this initial implementation we only support fetching one property at a time.\nSupport depth \u003d 0 (single object) or depth \u003d 1 (all objects in a directory)\nReimplemented GetObjectPropValue on top of GetObjectPropList, since the former\nis a special case of the latter.\n\nChange-Id: Ia76ee61741d6ee3902b5c5d9fc094cf86dfaf650\nSigned-off-by: Mike Lockwood \u003clockwood@google.com\u003e\n"
    },
    {
      "commit": "8277cec96ffa55082962591bca1c55abbeec8c26",
      "tree": "660b89fc58bc6971d848b80be47fc9fa374d1aec",
      "parents": [
        "17c53d433cd83d6b7d77e80635d6d58e2f6f5b2e"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Aug 10 15:20:35 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Wed Aug 25 18:42:22 2010 -0400"
      },
      "message": "MTP: work in progress on expanded property support\n\nGetObjectPropValue and SetObjectPropValue are disabled until I figure out\nwhy Windows doesn\u0027t like what I have done.\n\nChange-Id: I74e945ef3ea031f6d46f4ebaa8df815da0a5c3ed\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "438344fba74ddd6b931ac733fa48643f27b63de3",
      "tree": "3dd0ed5763a0c332506d9f6684a2f0eefe38cc08",
      "parents": [
        "fd150a8e03cdd8462eafd68f4a4231aa52f0e5a1"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Aug 03 15:30:09 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Aug 03 15:36:22 2010 -0400"
      },
      "message": "MTP: Add support for syncing MTP playlists\n\nMTP playlists now correspond to playlists in the media provider\n(like those created by the Music app).\n\nChange-Id: I085cb3cff003037ad62f0e297fb0cfd3047cb3a2\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "343af4ef512869695456a91519e73ed3c3d82101",
      "tree": "5545225fc812b6f6ad0aee784238a80f0a80667b",
      "parents": [
        "9c04c4cc038f924d9cb98798e1c07fe6017e85d0"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Mon Aug 02 10:52:20 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Mon Aug 02 10:52:20 2010 -0400"
      },
      "message": "MTP: Implement GetNumObjects\n\nChange-Id: Iccc3a445f9a1eab7bb76eddd567c6a3a8f155b2b\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "873871f3e75831bcda6c3f75bb4d53355ca5c53a",
      "tree": "e7fcffe64b2104cba18df6f35cf736cee63eb2d3",
      "parents": [
        "4714b0766ecf48f09f39b4781a5c4deafc092d49"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Mon Jul 12 18:54:16 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Jul 13 20:04:22 2010 -0400"
      },
      "message": "MTP: Add support for sending events to the host when objects are added and removed\n\nChange-Id: Ia1d5232b919c644c670ff9ca651eca92b3f9ad42\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "4714b0766ecf48f09f39b4781a5c4deafc092d49",
      "tree": "c9d8f729e7b71a08b1d55cf1b167e0babe0a2acd",
      "parents": [
        "66e6c1c85c33194b1a6fc5077bd78b53a5fe9d03"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Mon Jul 12 08:49:01 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Mon Jul 12 14:01:22 2010 -0400"
      },
      "message": "Integrate host to device file transfer with the media provider.\n\nMTP file transfers happen in two stages.  The SendObjectInfo command sends\nsome information about the file and reserves an ObjectHandle for the new file.\nThe file transfer is then performed using the SendObject command.\n\nTo support this in the media provider, MtpDatabase.beginSendObject receives\nthe information from SendObjectInfo and creates an row for it in the MTP objects\ntable for the new file.  After the file transfer has completed, then\nMtpDatabase.endSendObject is called.  In endSendObject, we run the media scanner\non the new file, which will add a row to the images, audio, video\nor audio playlist table.\n\nTo avoid the media scanner creating a second row for the file in the MTP objects\ntable, we pass the ObjectHandle created in beginSendObject to the media scanner,\nwhich then passes it to the media provider via the content values when it\nperforms its insert.\n\nChange-Id: I1ebcc63d6bd4404b0d3a93c703a9d3c097381d3a\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "7f53a190463274096155704276f3002c1620a364",
      "tree": "074ae70636a0169c5b07e15d1c8d64b99e564eba",
      "parents": [
        "723a540125f48aaf8a00b0cc5ed98fbbc01e5f14"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri Jul 09 10:45:22 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri Jul 09 11:07:55 2010 -0400"
      },
      "message": "Remove some scafolding and test code that is no longer worth maintaining.\n\nChange-Id: I9ee62d2463d8df1246a84774e8ac7e674778279a\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "1865a5ddcfe7b0e8dc211419aea1094b1491a5fd",
      "tree": "7d5cf198bb5802a4e6faf0f58bccf1ddecd62ce7",
      "parents": [
        "dda7e2b7378755637f188cca7c5ae854427a28f7"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Sat Jul 03 00:44:05 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu Jul 08 16:21:09 2010 -0400"
      },
      "message": "MTP: Use media provider database to implement MTP device support.\n\nUses a new \"MTP objects\" table in the media provider to support basic\nenumeration of the external storage file system.\nSupport for accessing audio, video and image metadata in the existing\nmedia provider tables will be added in a later commit.\n\nThe C++ MtpDatabase class is now abstract, to support a proxy subclass that\ncalls through JNI to the Java MtpDatabase class in the media provider.\n\nChange-Id: I90f0db5f3acc5d35ae78c27a8507edff16d14305\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "8e2a280ab7f98bf00ff2651f1f93c8f8bd46c08d",
      "tree": "d8135f979208f4b6611273fbba70624c0ea40557",
      "parents": [
        "0250361b110267a139cc0865ff7d2f13b4d63bdf"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri Jul 02 15:15:07 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri Jul 02 15:19:32 2010 -0400"
      },
      "message": "MTP: Fix ownership and file permissions for transferred files and folders\n\nAll new files and folders are created with group sdcard_rw\nPermissions for new files are 0664 and directories 0775\n\nChange-Id: I6d508231150f687e2e529112fd47f10e30fa594f\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "0250361b110267a139cc0865ff7d2f13b4d63bdf",
      "tree": "a2a5f01424d963c2b24d2fca8e2c59095ce404f8",
      "parents": [
        "fc20aab463f527ab3b0664986f0381a86b375884"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri Jul 02 14:03:31 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri Jul 02 14:14:06 2010 -0400"
      },
      "message": "MTP: Make MtpDatabase class abstract so we can have multiple implementations\n\nRename existing test database to MtpSqliteDatabase\nThis is the first step in transitioning to using the media provider database\n\nChange-Id: I5f36c854c6e76a79137c267b000a52ced803776c\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": "916076c6d84dac9b104fbdf94af5dcd7bce669fd",
      "tree": "186be596fb3d913040464aa5398edbdc46e2b820",
      "parents": [
        "5ed68d29a140e14c8d46980fa844548eb33b1e87"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri Jun 04 09:49:21 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri Jun 04 09:49:21 2010 -0400"
      },
      "message": "MTP: Add support for host cancellation of file transfers.\n\nChange-Id: I72df423f8017286e41adae525e6fbcb6b8440687\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "7850ef999740f214a1990a9c090d3f3865d435aa",
      "tree": "2320628e762e31b799c21f3a2d8177c271e47656",
      "parents": [
        "3c6d0f4c956494241c0c243b079f42049d832d7d"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri May 14 10:10:36 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri May 14 10:10:36 2010 -0400"
      },
      "message": "Move MTP code to the android namespace\n\nChange-Id: I5da48038fd5e4cdeefaeba42cdc74eb588b3448d\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "16864bae0f51c32c456da2c43adf7a057c0c4882",
      "tree": "87eb11d62168084c9e63cdd2bf5fd5d35a573df7",
      "parents": [
        "328523627293790cbf485fa6095b38a5fdb2118e"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue May 11 17:16:59 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu May 13 15:36:47 2010 -0400"
      },
      "message": "Checkpoint work on MTP and PTP investigation.\n\nThis change includes work in progress on a C++ library for both host and device\nMTP and PTP support.\nCurrently the makefile builds two test programs:\n\nmtptest - a command line test program that implements a small subset of device side MTP.\nRequires a kernel driver that has not been checked in yet.\n\nptptest - a host tool to test USB host support for detecting and communicating with\ndigital cameras over PTP.  Runs on Linux host.\n\nLater this will be reformulated as a native library that will be used in the media process.\n\nChange-Id: I81aab279975b600b59d99013ab97f9adf0b58da7\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    }
  ]
}
