)]}'
{
  "log": [
    {
      "commit": "dce97407dcf54ae9725c2d29224f6ed8dfd994b8",
      "tree": "f406dd4c41ded26993995f0409f15530f144d16c",
      "parents": [
        "a710c7444b1a17b3fc9b2abf4fba0987482d6c47"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Nov 14 08:00:42 2014 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Nov 14 14:02:09 2014 -0800"
      },
      "message": "Update calls to IInterface::asBinder()\n\nto use the new static version.\n\nChange-Id: I88ee037c66aa254f466d3a51ddc358bd37cf44b5\n"
    },
    {
      "commit": "9ade8c1ad59a40f1a2fdbe88074d05aa97a95aff",
      "tree": "623e47dbf6834ebe1f4c494c4d2a455cfb414ede",
      "parents": [
        "f89a2fdacb2ba907f180188dc79f9de81e3eb254",
        "2b3a8cd808a4013f43c881eca64a870ff0ea735b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Nov 08 01:14:58 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Nov 08 01:14:59 2014 +0000"
      },
      "message": "Merge \"Frameworks/base: Wall Werror in libs/storage\""
    },
    {
      "commit": "2b3a8cd808a4013f43c881eca64a870ff0ea735b",
      "tree": "f58f9532a61bcb7db87401d2a4eb65f2342e7b84",
      "parents": [
        "4cd671e4d27befdd576fa86051956c3cafad6808"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 21 23:38:52 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 22 08:15:54 2014 -0700"
      },
      "message": "Frameworks/base: Wall Werror in libs/storage\n\nTurn on -Wall -Werror in libs/storage.\n\nChange-Id: I314cb32d0a917f9261488f7709d9a78a07b10fea\n"
    },
    {
      "commit": "941a8ba1a6043cf84a7bf622e44a0b4f7abd0178",
      "tree": "c783987f68caaa4cc827b3c720f269bcc9d34667",
      "parents": [
        "7653a30ea0232ab8323ec51ddcba8d8054ca8a2f"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Aug 20 16:26:32 2014 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Aug 22 16:25:04 2014 -0700"
      },
      "message": "Installing splits into ASECs!\n\nSessions can now zero-copy data directly into pre-allocated ASEC\ncontainers.  Then at commit time, we compute the total size of the\nfinal app, including any inherited APKs and unpacked libraries, and\nresize the container in one step.\n\nThis supports both brand new ASEC installs and inheriting from\nexisting ASEC installs.  To keep things simple, it currently requires\ncopying any inherited ASEC contents, but this could be optimized in\nthe future.\n\nExpose new vold resize command, and allow read-write mounting of ASEC\ncontainers.  Move native library extraction into the installer flow,\nsince it needs to happen before ASEC is sealed.  Move multiArch flag\ninto NativeLibraryHelper, instead of making everyone pass it\naround.  Migrate size calculation to shared location.\n\nSeparate \"other\" package name in public API, provide a path to a\nstorage device when relevant, and add more docs.\n\nBug: 16514385\nChange-Id: I06c6ce588d312ee7e64cce02733895d640b88456\n"
    },
    {
      "commit": "4fbbda4cecb078bd3867f416b02cc75f5455284f",
      "tree": "e4d988ec4be9e86e7fa5a2cfb1e20ecb1342ce72",
      "parents": [
        "5e21bf934b2a71b595deb9856a2044eea4dbce86"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Sep 24 18:34:07 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Sep 25 17:34:48 2012 -0700"
      },
      "message": "Handle multi-user mountObb() requests.\n\nSince emulated external storage paths differ based on execution\ncontext, carefully fix up paths for various use-cases:\n\n1. When sending paths to DefaultContainerService, always scope\n   OBB paths as belonging to USER_OWNER.\n2. When sending paths to vold, always build emulated storage paths\n   visible to root.\n3. Always use the original untouched path when talking with apps.\n\nMount OBB containers using shared app GID, so that an app can read\nthe mount point across users.\n\nHandle legacy paths like \"/sdcard\" by resolving the canonical path\nbefore sending to MountService.  Move tests to servicestests, and\nadd tests for new path generation logic.\n\nBug: 7212801\nChange-Id: I078c52879cd08d9c8a52cc8c83ac7ced1e8035e7\n"
    },
    {
      "commit": "5bcbfcec4bc49a141341dd333aed2d0d774d04a0",
      "tree": "f995770d6649629f57f913f55407812d8eec2b5b",
      "parents": [
        "1558294582b6a4897fea7c8dafafb188ce5ec939"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Fri Apr 06 16:33:11 2012 -0700"
      },
      "committer": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Fri Apr 06 16:33:11 2012 -0700"
      },
      "message": "You don\u0027t need LOCAL_STATIC_LIBRARIES when building static library.\n\nand there is no target static library with name libutils.\n\nChange-Id: Ifec34e1b484d749d3fcd11abe610f192a3213767\n"
    },
    {
      "commit": "5baa3a62a97544669fba6d65a11c07f252e654dd",
      "tree": "109755e1595b438873d34b981e31f84ea64bd2a5",
      "parents": [
        "173ab4d61077c49f115b82eff34f97fda5a7273a"
      ],
      "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": "13c7197da8a16f77f6398708a6314c80cb01e0d1",
      "tree": "092ded9f3fd6a3d59b4840f640f2cf4abb4ff45c",
      "parents": [
        "920d06db8dd2d6380a437fd03cb54b8caac92cee"
      ],
      "author": {
        "name": "Ben Komalo",
        "email": "benkomalo@google.com",
        "time": "Wed Sep 07 16:35:56 2011 -0700"
      },
      "committer": {
        "name": "Ben Komalo",
        "email": "benkomalo@google.com",
        "time": "Fri Sep 09 14:44:40 2011 -0700"
      },
      "message": "Revert encryption mapping for device wipes.\n\nExternal storage volumes that were emulated+encrypted needed to have\ntheir encryption mapping removed so that it doesn\u0027t try to encrypt the\nvolume after formatting them.\n\nThis just wires through an argument through vold, and assumes that vold\nwill do the right thing even if there is no encryption mapping set.\n\nBug: 5017638\nChange-Id: I858fae3d12cb415bc34637f520f71220ad9daaad\n"
    },
    {
      "commit": "bd882b1c8708686d373c56e07e6bb8b1cb6ffd9e",
      "tree": "b17fbae7a6ff475ab37be48046d0540d594f84fb",
      "parents": [
        "3f9dd287b99340efaaa257759e71a8f81b2ed113"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jul 11 22:12:16 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jul 11 22:12:16 2011 -0700"
      },
      "message": "Remove the simulator target from all makefiles.\nBug: 5010576\n\nChange-Id: I04d722f258951a3078fe07899f5bbe8aac02a8e8\n"
    },
    {
      "commit": "d6332552761fcce700adb465ff540d30a671403c",
      "tree": "b476c74c4e0872f9bf0531797da06a69c745de2f",
      "parents": [
        "a085ef3e35e986463567360b1d02a66c642ea603"
      ],
      "author": {
        "name": "Jason parks",
        "email": "jparks@google.com",
        "time": "Fri Jan 07 09:01:15 2011 -0600"
      },
      "committer": {
        "name": "Jason parks",
        "email": "jparks@google.com",
        "time": "Fri Jan 07 09:01:56 2011 -0600"
      },
      "message": "Add a method enable encryption.\n\nThis is for testing and needs to be cleaned up.\n\nChange-Id: I71cd5412f7096dc13d9ab61229ee9846c6f0006a\n"
    },
    {
      "commit": "5af0b916f850486cff4797355bf9e7dc3352fe00",
      "tree": "596919e498d72eadbc42b3307ac4f81542d34746",
      "parents": [
        "cf7775a88f8c88fc3a902799fc1d5100f6f7e0d6"
      ],
      "author": {
        "name": "Jason parks",
        "email": "jparks@google.com",
        "time": "Mon Nov 29 09:05:25 2010 -0600"
      },
      "committer": {
        "name": "Jason parks",
        "email": "jparks@google.com",
        "time": "Wed Jan 05 12:32:49 2011 -0600"
      },
      "message": "Add decryption support to MountService.\n\n* Implement the decryptStorage() method on the Mount Service.\n  This method makes the calls into vold to decrypt the encrypted\n  volumes and mount them.\n\nChange-Id: I4f6e07a111cf0b36611d590debf9f6579c5ac5f7"
    },
    {
      "commit": "fd14fb59584a3670a676ca014ba74f788734dfeb",
      "tree": "630302d285f4eb37b1a8c6ce64e51696ec9389ea",
      "parents": [
        "0a9b54e88b9cbb30748b5f0b331aec3f3ef8d639",
        "c30414329c381afba7bd23bdd0f1237fad0850a6"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Oct 13 15:58:59 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Oct 13 15:58:59 2010 -0700"
      },
      "message": "am c3041432: am de846ac6: Merge \"Change to new binder implementation for OBB\" into gingerbread\n\nMerge commit \u0027c30414329c381afba7bd23bdd0f1237fad0850a6\u0027\n\n* commit \u0027c30414329c381afba7bd23bdd0f1237fad0850a6\u0027:\n  Change to new binder implementation for OBB\n"
    },
    {
      "commit": "0a9b54e88b9cbb30748b5f0b331aec3f3ef8d639",
      "tree": "22ff1466c777067596537ccb085cd64ed0bc3bc5",
      "parents": [
        "0726fd9e835579019f6b23ab50d7b45401e11dbe",
        "8bb7a1dfbb43dda49fb3c4f86181bcd7f969a832"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Oct 13 15:43:35 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Oct 13 15:43:51 2010 -0700"
      },
      "message": "resolved conflicts for merge of 8bb7a1df to master\n\nChange-Id: Ieec036f494a54eab74a27b954d1423bf981dd3f9\n"
    },
    {
      "commit": "e1ff214e32ed5c546a7603b07b054908c4d93312",
      "tree": "d61485a78a33eaedf4494cbdf21e48225d49b4e7",
      "parents": [
        "84e8827a477cdf3d8c2b67e370395b22ec1963ad"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Oct 12 11:20:01 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Oct 12 11:30:56 2010 -0700"
      },
      "message": "Add API to check for emulated external storage\n\nWhen the storage is emulated, we don\u0027t want to install ASEC containers\nto it. This adds the API to check when the external storage is emulated\nand uses it to check whether or not to install packages to the external\nstorage in an ASEC container.\n\nBug: 3024387\nChange-Id: Ia0318aca9e4938a4897deaada5603a4c7c1d0f48\n"
    },
    {
      "commit": "4a99ed897796bec95039496a66ed1be066b6294c",
      "tree": "d329f79f97a6513f25236eef8d70fa48cd9c27d0",
      "parents": [
        "af9d667ccf3e24058214cf4cc0a8aa8bc5100e3c"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Oct 11 17:38:51 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Oct 11 17:38:51 2010 -0700"
      },
      "message": "Change to new binder implementation for OBB\n\nChange-Id: I3282df361a11fc37e94bc5ba4bd5860ae62a10e4\n"
    },
    {
      "commit": "af9d667ccf3e24058214cf4cc0a8aa8bc5100e3c",
      "tree": "c59adbe6d27cf236d6920f689dd237a115fef3f9",
      "parents": [
        "ce2f1909c74a1b90995f06a865d21260b062300b"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Oct 08 09:21:39 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Oct 11 17:22:03 2010 -0700"
      },
      "message": "OBB: rearrange to be entirely asynchronous\n\nRearrange structure of MountService handling of OBBs to be entirely\nasynchronous so we don\u0027t rely on locking as much. We still need the\nlocking to support dumpsys which has been improved to output all the\ndata structures for OBBs.\n\nAdded more tests to cover more of the error return codes.\n\nOh and fix a logic inversion bug.\n\nChange-Id: I34f541192dbbb1903b24825889b8fa8f43e6e2a9\n"
    },
    {
      "commit": "05105f7abe02b2dff91d6260b3628c8b97816bab",
      "tree": "f42676d818548d76b2c55045a1bcc4866d6feec1",
      "parents": [
        "ea2cf2f936b03f1720bc43863e41c89ea2a7903a"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Sep 22 17:29:43 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Sep 28 17:23:26 2010 -0700"
      },
      "message": "Update OBB API to include callbacks\n\nAdd a callback for users of the StorageManager API to be able to receive\nnotifications when the requested operation completes for mountObb and\nunmountObb.\n\nAdd NDK API to get to ObbInfo like the Java API has.\n\nAlso update the docs for the API and remove the \"STOPSHIP\" comments.\n\nChange-Id: I23a4409c7f8b74d3169614beba920b4d667990a4\n"
    },
    {
      "commit": "be857d42849eaaa554d4772dbba7755f8a0f3547",
      "tree": "e6fa28c1620c2908a00b035db8d7a5da68095eae",
      "parents": [
        "6be237120e9673e3cfc5243da5bbca287effcf09"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Aug 18 15:59:25 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Aug 20 13:17:12 2010 -0700"
      },
      "message": "Reorganize MountService IPC\n\nRemove auto-generated AIDL files and replace them with manually edited\n.java and .cpp/.h files so that binder calls can be made from either\nJava or C++.\n\nUpdate the makefiles to not attempt to generate the AIDL files and also\nremove the old auto-generated .java files.\n\nPut all the storage-related C++ things in libstorage so that we don\u0027t\npollute other libraries.\n\nChange-Id: I82d1631295452709f12ff1270f36c3100e652806\n"
    }
  ]
}
