)]}'
{
  "log": [
    {
      "commit": "76fc7cbf696a560f0752d3e628ef64fdc02c8ce5",
      "tree": "70174bc6da94b445a51f951f3c8a6cfd17ccdf30",
      "parents": [
        "c860fc0a54eeebe3a47bf101963ca432d22e3b3e"
      ],
      "author": {
        "name": "Grant Hernandez",
        "email": "granthernandez@google.com",
        "time": "Mon Jul 01 15:01:43 2019 -0700"
      },
      "committer": {
        "name": "Grant Hernandez",
        "email": "granthernandez@google.com",
        "time": "Mon Jul 01 15:21:19 2019 -0700"
      },
      "message": "MTP: add friend class for fuzz testing\n\nIn preparation for fuzz testing the MtpServer, we need to be able to\nmock the IMtpHandle interface to avoid reading directly from the USB\ninterface.\n\nTest: SANITIZE_TARGET\u003d\u0027hwaddress fuzzer\u0027 mmm -j .\nTest: atest mtp_ffs_handle_test\nChange-Id: I79d023cbda75d6760bed22b659fa31328e9d81c5\n"
    },
    {
      "commit": "5513843dfeb5ffcff1fa5f8a5254187eca245256",
      "tree": "a67be0a83d7259a57b4267fc237db60f6967802d",
      "parents": [
        "93adab132cfdd6e71cee2af14eea711b49a4c76d"
      ],
      "author": {
        "name": "James",
        "email": "jameswei@google.com",
        "time": "Mon Jul 02 18:07:30 2018 +0800"
      },
      "committer": {
        "name": "James",
        "email": "jameswei@google.com",
        "time": "Fri Jul 27 11:49:21 2018 +0800"
      },
      "message": "MTP: Add support of ObjectInfoChanged Event\n\nUnder MTP mode, new file created at device side shown size zero at PC side\ndue to file information is not updated to PC in time with ObjectAdded event\n\nBug: 77883345\nTest: 1. Take screenshot of device under MTP mode with Win10 / Linux\n    2. file copy, delete, rename between PC and device\n    3. file copy, delete, rename on device with adb shell command\nTest: adb shell am instrument -w android.mtp/\n\tandroid.support.test.runner.AndroidJUnitRunner\n\nChange-Id: If428064fb0104b53b8afd5b050a4fab4a09312f0\n"
    },
    {
      "commit": "bc1d4b41f4df1b6dd04801ea5a526d23f5321340",
      "tree": "9c40c27d4c306658b10f622f5a32f111e2623c68",
      "parents": [
        "e1d2f7dd9b8f153fc581144ab4d4a77c6241918a"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Tue Mar 27 15:25:03 2018 -0700"
      },
      "committer": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Tue Mar 27 17:32:27 2018 -0700"
      },
      "message": "Fix Unicode string handling\n\nLinux uses UTF8 but java and MTP both\nuse UTF16. In a few places, this results\nin the top byte of a UTF16 string being\ntruncated on conversion to UTF8.\n\nAlso, the hardcoded UTF to byte serialization\nin MtpStringBuffer is incorrect.\nReplace it with conversions from std, and\nreplace usages of MtpString with MtpStringBuffer.\n\nRemove any remaining usages of libutils\nand replace them with corresponding std\nlibraries.\n\nBug: 70546563\nTest: Mtp works, tests pass\nTest: file/folder names containing emoji can be transferred to/from\nwindows\nChange-Id: Idbcb73f1beac17ce8a90843fa254e759dd1a6369\n"
    },
    {
      "commit": "63dac45aa868b9048c028967e9865c90a9ba544d",
      "tree": "b21d37631cde212935b35cb8109ee333b69d97c6",
      "parents": [
        "b95a5989190a427a7ea092dc18741af524009bdb"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Wed Dec 06 15:19:36 2017 -0800"
      },
      "committer": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Mon Mar 05 13:44:25 2018 -0800"
      },
      "message": "Remove configure() from Mtp\n\nInstead of configuring the server each\ntime the connection happens, UsbService\nwill now pass in the control fd with the\ndescriptors already written. Also, PTP\nendpoints have been moved to their own\ndirectory at /dev/usb-ffs/ptp rather than\nusing the same ones as mtp.\n\nBug: 72877174\nTest: Verify PTP and MTP config changes work\nChange-Id: I9a0336afd610aa397c9947568c308afb89b27c08\n"
    },
    {
      "commit": "e5aa05d12a48f7c5766a80d5bd2dc8cd068c1bcd",
      "tree": "7dd4c8dfd8429a55c5aa56bc8d55a3e7139bacee",
      "parents": [
        "e5b50aeedba87b11b278105cc42343691a5b9e2f"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Fri Oct 13 12:14:42 2017 -0700"
      },
      "committer": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Fri Dec 15 00:08:44 2017 +0000"
      },
      "message": "MtpServer changes for MtpStorageManager\n\nMoveObject and DeleteObject require\nbegin() and end() methods in order to\nmaintain database consistency. delete() now\nhas to return errors.\n\nAllow sendObject after sendObjectInfo since\nthe spec allows this.\n\nTest: See tests for main MtpStorageManager change\nBug: 63143623\nChange-Id: Ied105e884cafd36e861521dcc59740e23b330f5f\n"
    },
    {
      "commit": "e242f12c0f33518e0760fabfdad8cb93a1c8a2fb",
      "tree": "c12c22ff3550202df1af4a0816f6ee3c489f3938",
      "parents": [
        "49d0502f1a227a510df65ec74f14eef91185dc6a"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Mon Oct 16 14:54:08 2017 -0700"
      },
      "committer": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Thu Oct 19 17:55:26 2017 +0000"
      },
      "message": "Account for folders in copy and move.\n\nCopy and move will use mkdir() if target\nis a folder, and copyFile() if target is a file.\n\nMove will recursively copy contents if moving\nbetween different storages. Move will also\nchange the storageId.\n\nBug: 67028892\nTest: Copy and move folders on win 10\nChange-Id: If114ef74b9d8668cf66d45953d9ea8b17bc11ae8\n"
    },
    {
      "commit": "708b3e0b72189d2d2e932459bd0391f98c9ff9a2",
      "tree": "fc7856849cca6731143755c464df310e817d78f7",
      "parents": [
        "0d51135defebfe9bf0d790216ee4668c96041224"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Tue Sep 26 17:53:39 2017 -0700"
      },
      "committer": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Mon Oct 02 11:56:25 2017 -0700"
      },
      "message": "Add implementations for move and copy operations.\n\nPreviously, we didn\u0027t have these implemented so the\nhost OS would emulate them by pulling the object\nand pushing it to a new location. This can result\nin data being lost and it is slow.\n\nWith the operations implemented, moving objects\non the same storage is instantaneous since the data\ndoesn\u0027t need to move. Moving objects between storages\nand copying objects are both much faster since no\ndata has to be moved through USB.\n\nBug: 66679910\nTest: Move and copy objects, verify they are correct\nChange-Id: I38c69eee41d883af46fa2f1b9e091193b2847e8c\n"
    },
    {
      "commit": "854cb1745dd4abd06e6e8e6eef99f44faa54a219",
      "tree": "f73f7217c3556de262f0f7645b2275265320a4fb",
      "parents": [
        "94d15f9c0c7dc8a916ebfcf0f208adcc427df7f6"
      ],
      "author": {
        "name": "caozhiyuan",
        "email": "cao.zhiyuan@zte.com.cn",
        "time": "Wed Apr 26 16:52:30 2017 +0800"
      },
      "committer": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Thu Apr 27 11:35:32 2017 -0700"
      },
      "message": "mtp: Preserve last modified time of files.\n\nBug: 6325175\nTest: Transfer files\nChange-Id: I54af3205575f2bb83c732bb70907f60e0b785e91\nSigned-off-by: caozhiyuan \u003ccao.zhiyuan@zte.com.cn\u003e\n"
    },
    {
      "commit": "792298f63b1433ddd54ef7ab6283a5aeb3386e16",
      "tree": "f6c3e03aff99740c4cef1e63db92b56734978799",
      "parents": [
        "36a75eeb15e58726e8cbbfe9687975740133a11b"
      ],
      "author": {
        "name": "Alex Klyubin",
        "email": "klyubin@google.com",
        "time": "Wed Dec 21 11:20:22 2016 -0800"
      },
      "committer": {
        "name": "Alex Klyubin",
        "email": "klyubin@google.com",
        "time": "Wed Dec 21 14:12:21 2016 -0800"
      },
      "message": "Make users of MtpServer provide DeviceInfo fields\n\nThis is part of weaning apps off accessing system identifiers via\nsystem properties API. Apps should use android.os.Build API instead.\n\nBug: 33700679\nTest: Enable MTP mode then check that mtp-detect output same as before this commit\nChange-Id: Ic21da7b8e976aaa1abc606a3cb4a1f2bd8698408\n"
    },
    {
      "commit": "487be61fb0a38873aec1d12da92437fba5e728f2",
      "tree": "29bfa5273c091b25b31ac5353580f67229a8b07c",
      "parents": [
        "b985e3c6bab78c60ef53164f157dd5bccf3045f9"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Mon Oct 24 12:10:41 2016 -0700"
      },
      "committer": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Mon Dec 12 14:36:06 2016 -0800"
      },
      "message": "Refactored Mtp driver interface into multiple classes.\n\nAdded new interface for FunctionFS. This allows most of\nthe driver code to exist in userspace. The driver will\nautomatically use FunctionFS if it is enabled for that\ndevice, otherwise it will default to the kernel driver.\n\nThe intention is to eventually deprecate the kernel driver.\n\nBug: 30976142\nChange-Id: I36b8d16ca254fddd995b3ea1bd3d37b0ff4a28f7\nTest: New automated tests for MtpFfsHandle, AsyncIO.\nManual testing on each device.\n"
    },
    {
      "commit": "0fa848d780cf990a2860637f40432d28594c85a3",
      "tree": "f2a205d5d14cffd5b164fb8cedc65d6dad59a915",
      "parents": [
        "3a06522fd0e74934acb4bacaf1e90209bc7e9aa8"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Fri Mar 07 13:29:59 2014 -0800"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Tue Mar 11 15:06:39 2014 -0700"
      },
      "message": "MTP: Add support for device property changed events\n\nAlso fixed bug in MtpProperty::write() for device properties\n\nBug: 7342482\nChange-Id: If0099095d101409d131564e55b1939895c69c202\n"
    },
    {
      "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"
    }
  ]
}
