)]}'
{
  "log": [
    {
      "commit": "a17d454fd0d20d14cf1fbc09f0f296cb6cbb870b",
      "tree": "e7ecaa5d516248aee80cf5887f50c5b75e91a0f4",
      "parents": [
        "ae5df05f2246515a652f0c935c6deb85a0bdee01"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Thu Jul 21 15:10:22 2011 -0700"
      },
      "committer": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Mon Jul 25 16:09:58 2011 -0700"
      },
      "message": "Fix for bug 4371230.\n- Generate unique ID for each DrmManagerClient in native side\n- Fix the bug where multiple clients could use the same ID\n- Return the correct unique ID back to Java\n- Add a flag in the unique ID to separate native client and Java client\n\nChange-Id: Ia4574b6b0a526f2335a65380975dc62f9a6e7f9b\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": "3f0341cbbdeee248e71814f7071233c823b44f74",
      "tree": "00df7db5e10b08f378d3dd2af1c045ff683941e0",
      "parents": [
        "a8965da9886496952c6f97a402c4682ee1e37c81"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Sun Apr 24 12:38:35 2011 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Sun Apr 24 12:40:16 2011 -0700"
      },
      "message": "Fix memory leak from retrieval of getSupportedDrmInfo.\n\nChange-Id: Ic2192a9791c0a3c5e5357b4367a2d8bfb15af20c\n"
    },
    {
      "commit": "0e5e2e2b2bb3d6c3a0216181df29e6bfdc71256f",
      "tree": "fa2438bdf9db0b794cf09ea70fab05bf8f3f22e6",
      "parents": [
        "d4a9bb569e6d23294dae5be21023f3182e7586a1",
        "5c96c65f692f8c2297d213c88450dd601d2b5c1f"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Tue Mar 15 14:10:30 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 15 14:10:30 2011 -0700"
      },
      "message": "Merge \"Bug fixes of DRM framework.\""
    },
    {
      "commit": "e5eb43b5d9dfd02890dc7f729a4892b518c30570",
      "tree": "599c6804f1d32844c6241354f8f36e450151d2f7",
      "parents": [
        "7896f1bd551a466168144f58b6b5a9932cafa749",
        "7d7dcb5ea891ad4c3252ed832ebd06accc96153d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 15 13:51:17 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Mar 15 13:51:17 2011 -0700"
      },
      "message": "am 7d7dcb5e: am 4528a7db: Merge \"Bug 4016329 do full string comparisons\" into honeycomb-mr1\n\n* commit \u00277d7dcb5ea891ad4c3252ed832ebd06accc96153d\u0027:\n  Bug 4016329 do full string comparisons\n"
    },
    {
      "commit": "5c96c65f692f8c2297d213c88450dd601d2b5c1f",
      "tree": "feacc3cf000a8c991d5759a5e1c4ed2db301c995",
      "parents": [
        "6f3a75e13b86a3f40fe34e3ebd17b118791a73a4"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Tue Mar 15 10:52:28 2011 -0700"
      },
      "committer": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Tue Mar 15 11:17:22 2011 -0700"
      },
      "message": "Bug fixes of DRM framework.\n\n- Add death listener to clean-up drmserver appropriately\n  when drmserver died.\n- Remove \"static\" declaration of mUniqueIdVector because it was not\n  needed to be static variable.\n- Remove \"class DrmContentIds;\" because the class does not exist.\n- contentPath in saveRights() could be empty because\n  it is not required by some DRM schemes.\n- Fix naming convention to use sXXX for static variables.\n- Fix typo\n\nChange-Id: I7d440488fc074c200f1009d1bafafeffebd690b2\n"
    },
    {
      "commit": "ed73246b32a725d00b0b7d7e171e5817d9f27a80",
      "tree": "fbece72e18da95325bc6022714633f242474724b",
      "parents": [
        "75a1ef8d14de25850a171ee80fc7f9a5b70611b5"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Mar 14 17:01:38 2011 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Mar 14 18:48:19 2011 -0700"
      },
      "message": "Add memory leak tracking/debugging code to drm server\n\nbug - 4099038\n\nChange-Id: I6c048eaf3d7f34bc144b8daaa5fdef1ed474af66\n"
    },
    {
      "commit": "f8a1842e07d5c018b33762a72a1b1b5117947579",
      "tree": "38a13589cc1a40364e8a8b3bcc3ccd0c797ef47d",
      "parents": [
        "e21110f8b1e4aa884f7a4e2164ae90dab8d5f3fa"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 14 11:32:29 2011 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 14 17:59:51 2011 -0700"
      },
      "message": "Bug 4016329 do full string comparisons\n\nUse full string comparisons instead of partial for\n  file extension and MIME type.\nDo case-insensitive comparison of MIME type and file extensions.\nFix error in comment for String8::getPathExtension.\nRemove dead code -- StringTokenizer is unused.\n\nChange-Id: I322be6235abbdaab5f7eafa48926dbb2cf46dc29\n"
    },
    {
      "commit": "192b591cdca78f258dd3260e41d7217f6fc6e36c",
      "tree": "f3aa953280c335f8122080dc112b0dadcee78781",
      "parents": [
        "0eb7b697b7c180660647b5cd0cd7dd067f6b6abb"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Fri Mar 11 14:07:21 2011 -0800"
      },
      "committer": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Fri Mar 11 14:54:23 2011 -0800"
      },
      "message": "- Some change on the DrmManager in order to support feature request 4082089.\n    In DrmManager, we currently lock both processDrmInfo() and onInfo() which is\n    ok for now since processDrmInfo() is async call, and it will return without\n    waiting for onInfo() call. However, if we send an event in processDrmInfo(),\n    we will got deadlock here because we need to invoke onInf() which will wait\n    for processDrmInfo() to release the lock. Use different lock for onInfo().\n- Remove some redundent mutex lock.\n\nChange-Id: I59c794f95ba1693425723224114fa975cf9b235f\n"
    },
    {
      "commit": "2ef2d49aa3c19e99e2a753dac2dfb51fc87b5328",
      "tree": "ad7a072618a7d0e5f736444c1df652358513f678",
      "parents": [
        "d7e80b9d5046603ac4a36ea74e204a2ad70a4dca"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Fri Mar 04 14:45:03 2011 -0800"
      },
      "committer": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Wed Mar 09 15:51:46 2011 -0800"
      },
      "message": "- Change level of some LOGs from LOGE to LOGV because those logs\n  are not error logs from non-DRMed content\u0027s point of view.\n- Add more mutex lock to avoid crash by multi-thread calls.\n- Fix for bug 4050039\n\nChange-Id: I52fed22069f0cda6c4ac6a5363469168c797a33b\n"
    },
    {
      "commit": "289401b7566384570de86e9ad6ab3c572e358675",
      "tree": "0ba122530f6a5efdd8ded1cd9e8b68570f190a4a",
      "parents": [
        "0528bc77948e49bd75cfd4082fb8fef3a7238626"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Wed Mar 02 12:33:00 2011 -0800"
      },
      "committer": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Wed Mar 02 12:33:00 2011 -0800"
      },
      "message": "To support DRM files without file extension\n\nChange-Id: Ie7701048d0dbd51bf358364014a1b41c894b664c\n"
    },
    {
      "commit": "70e8d9cb554702802a6bcf7ef5e466bbd0fc30f1",
      "tree": "4715d1e1c7ac47a047eea5030d2687326087dd4f",
      "parents": [
        "89b911194ede10e36d394cdee932ff998133d070",
        "cbba720a460f49a9d16afcc7e85c4564d7d945a1"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 12 09:31:46 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 12 09:31:46 2011 -0800"
      },
      "message": "Merge \"Bug 3229711\""
    },
    {
      "commit": "cbba720a460f49a9d16afcc7e85c4564d7d945a1",
      "tree": "c22bc8229eed33dd045f4508f2221c6e9bb4bbec",
      "parents": [
        "d342ca5a5e2164a116a92dbd615bda74ddd05b97"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 11 17:15:49 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 11 17:15:49 2011 -0800"
      },
      "message": "Bug 3229711\n\nChange-Id: I3a4d41597cb92a1526417a622390dbb93dc71e99\n"
    },
    {
      "commit": "3b7983cfea8885e394e7d625a31cbd0ae71e8edb",
      "tree": "11c78be0e9a99d1c13f3e1c145519c92cc80df31",
      "parents": [
        "e15c4e4d63841af70538ae9f1988b53d1bbd15e4",
        "9e0bb6d5eef5dfe2da60c50f3aaa39512307d11d"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Tue Jan 11 14:55:56 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jan 11 14:55:56 2011 -0800"
      },
      "message": "am 9e0bb6d5: am 0544d059: Merge \"DRM Framework bug fixes.\"\n\n* commit \u00279e0bb6d5eef5dfe2da60c50f3aaa39512307d11d\u0027:\n  DRM Framework bug fixes.\n"
    },
    {
      "commit": "f05913aaa0cc96eab32be3431de1a80d405527a1",
      "tree": "808fc1b7a3fd2bdb3e88723fe4d4f457d1217f8f",
      "parents": [
        "f0f6c54b13831b11bd7a3bd7a01dc49b7505e56e"
      ],
      "author": {
        "name": "Takeshi Aimi",
        "email": "aimitakeshi@gmail.com",
        "time": "Tue Nov 30 16:27:42 2010 +0900"
      },
      "committer": {
        "name": "Takeshi Aimi",
        "email": "aimitakeshi@gmail.com",
        "time": "Tue Nov 30 16:27:42 2010 +0900"
      },
      "message": "DRM Framework bug fixes.\n\n- Make sure to clean-up obsolete listeners.\n- Close cursor after using it.\n- Add virtual destructor to the base class of OnInfoListener.\n\nChanges are made by SEMC and Sony.\n\nChange-Id: Ibb6dd625ef48e3597188f0d7c90f9d4c780b6139\n"
    },
    {
      "commit": "35f2d3997efe62ce7660ac558578ac5ca834f357",
      "tree": "9f6031e2e4bb9665e619bc881839477c14898a21",
      "parents": [
        "c0ec802e96788c3002b737b02707875049758f98",
        "24a90c2674270fee0783bafa54fd5d845bdf0c18"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Mon Nov 22 21:29:08 2010 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Nov 22 21:29:08 2010 -0800"
      },
      "message": "am 24a90c26: am d9334934: Merge \"Update of DRM Framework.\"\n\n* commit \u002724a90c2674270fee0783bafa54fd5d845bdf0c18\u0027:\n  Update of DRM Framework.\n"
    },
    {
      "commit": "5fc3edb13edb058f14e6550d295ce3e50e5ebf8c",
      "tree": "e6f75eb8cbed46e3368ec25e684ca0429f520260",
      "parents": [
        "a3326781352888ff80fcf920cf93fd738bb69e66"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Fri Nov 19 15:19:36 2010 -0800"
      },
      "committer": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Fri Nov 19 15:52:32 2010 -0800"
      },
      "message": "64-bit file size/offset support for DRM framework\n\nChange-Id: I0ba7147607825234df9fa28732e1bba344e82e79\n"
    },
    {
      "commit": "dc91865622e3cc9ff0bb33b83f1d3b38cd7a6d7a",
      "tree": "910ec95f6e2716cf6911da7247eaee49dc149933",
      "parents": [
        "14ac9546367d4df37eead55f6762b944b49f33b2"
      ],
      "author": {
        "name": "Takeshi Aimi",
        "email": "aimitakeshi@gmail.com",
        "time": "Tue Nov 16 13:56:11 2010 +0900"
      },
      "committer": {
        "name": "Takeshi Aimi",
        "email": "aimitakeshi@gmail.com",
        "time": "Fri Nov 19 22:02:51 2010 +0900"
      },
      "message": "Update of DRM Framework.\n\n-Access permission handling\n  Introduce an internal function which allows the desired process to\n  access decryption flow. This new function is just for reference and\n  each OEM manufacturer should implement/replace with their solutions.\n-New API, getMetadata()\n  This API is for retrieving media metadata from container-based DRM,\n  such as OMA forward-lock content. This API asks DRM agent to retrieve\n  media metadata hiddein inside of DRM special container.\n-New API, acquireRights()\n  This API wraps acquireDrmInfo() and processDrmInfo().\n  If DRM agent has valid implementation of both APIs,\n  Application can acquire DrmRights only by calling this API.\n-Bug fix in event loop of OnInfoListener.\n  Separate OnInfo event loop from mail thread loop so as to avoid\n  the issue that message is not dispatched when mail thread is busy.\n\nChanges are made by SEMC and Sony.\n\nChange-Id: I04ee3e0988152a71e221f2256d83253749a29da0\n"
    },
    {
      "commit": "e3afc288ddddeda4e771be71f15b166f8aaa01e1",
      "tree": "9cfd8dce0f49fc1f89049847fddec28746e7c9b0",
      "parents": [
        "cc82f3ae3cef7e5dac7992a10aeb8e147e12eb27",
        "a8d7b7477d99dd2671e6232e157da9954bf4699f"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Wed Nov 03 11:39:04 2010 -0700"
      },
      "committer": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Wed Nov 03 11:39:04 2010 -0700"
      },
      "message": "resolved conflicts for merge of a8d7b747 to master\n\nChange-Id: I8a4b72c9f9a10de8bbc285e00e2dd5cb9f498349\n"
    },
    {
      "commit": "1b42e92decd815c72ecc83d11f5c0c37f035c696",
      "tree": "f896ae9656c920a21a36ed689f4a32529194d111",
      "parents": [
        "6831524a497d0a46da7db8f8f60d13946d0aee1a"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Tue Nov 02 15:02:48 2010 -0700"
      },
      "committer": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Tue Nov 02 15:09:43 2010 -0700"
      },
      "message": "Disable some logs\n\nChange-Id: I05fcf6869916504367814fd2abd2b1af88619f5b\n"
    },
    {
      "commit": "c7b3ccc564448cb4b918728421f9402bc18278c5",
      "tree": "7d97c647cef5ae086048f62636bad3343f193459",
      "parents": [
        "5b4d0e84d314bd58efb9dcf4e7f23f0d0e3fc630"
      ],
      "author": {
        "name": "Takeshi Aimi",
        "email": "aimitakeshi@gmail.com",
        "time": "Fri Oct 08 23:05:49 2010 +0900"
      },
      "committer": {
        "name": "Takeshi Aimi",
        "email": "aimitakeshi@gmail.com",
        "time": "Tue Nov 02 08:06:06 2010 +0900"
      },
      "message": "Update of DRM framework\n\n - Overload openDecryptSession() with uri parameter\n   in order to accept URI of DRM content,\n   Following API is added,\n       DecryptHandle*openDecryptSession(const char* uri);.\n - Unify texisting three event types of processDrmInfo()\n   so that caller of DRM framework does not have to handle many event types.\n - Let DrmManagerService call load/unload plugins API so that\n   client of DRM framework does not have to manage plug-in load/unload.\n - Trivial fix in DrmManagerClient.java is also incorporated.\n\nChanges are made by Sony Corporation.\n\nChange-Id: If62b47fa0360718fdc943e6e6143671d7db26adc\n"
    },
    {
      "commit": "a784d4ed25e632661e2549db8efd87eeaf78eac1",
      "tree": "c67a0b7939a5ce86f20a64055613f9c3646727e8",
      "parents": [
        "48c9daac20dcae18bf45e528fd073612bc0122e1"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Tue Oct 26 12:11:55 2010 -0700"
      },
      "committer": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Tue Oct 26 12:11:55 2010 -0700"
      },
      "message": "Do not create drm directory here. Fix for bug 3134576.\n\nChange-Id: I1e26ff32b1c2d97464d544c2455eab0a726e3294\n"
    },
    {
      "commit": "dc549d60f98d809f626c99de614960409a847054",
      "tree": "bb40a8371811f1c591cc22afa331e57b3d091c9e",
      "parents": [
        "7d9c73fb6f6f79f7f92b77482a0edbd7b89f2564"
      ],
      "author": {
        "name": "Takeshi Aimi",
        "email": "aimitakeshi@gmail.com",
        "time": "Mon Sep 20 23:40:41 2010 +0900"
      },
      "committer": {
        "name": "Takeshi Aimi",
        "email": "aimitakeshi@gmail.com",
        "time": "Mon Oct 04 22:14:53 2010 +0900"
      },
      "message": "Update of DRM framework.\n\n  - Change \"void\" type of return value to \"int\" for returning status.\n  - Add some of overloaded Java APIs which accept database Uri as input.\n  - Add asynchronous APIs\n  - Add OnEventListener and OnErrorListener for asynchronous APIs\n  - Disable debug log\n  - Change decrypt() API to accept an optional buffer needed by some of DRM schemes\n\nChanges are incorporated by Sony Corporation.\n\nChange-Id: I414a165e22cc79be6ea7cd28041788aa2b6b8f7c\n"
    },
    {
      "commit": "3802949f5cfe500b8bc41371ff99c82c9ed5d9c3",
      "tree": "ff5467eba4a12341705c599f3475db1abe88be06",
      "parents": [
        "89fef4183a3c58aebbbf66e894bbdc1ae9f634e9"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Sep 10 12:46:57 2010 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Sep 10 12:46:57 2010 -0700"
      },
      "message": "Make DRM libraries optional\n\nChange-Id: I0b591b75a035bc6d8049c85b595966845fedaa15\n"
    },
    {
      "commit": "7547b8eac6a4011683a93f51fdabf5a978e1f18c",
      "tree": "ca0e34ab6517cc50ca353671ca3e0cad3c2b0dd2",
      "parents": [
        "93548db645dd4fd2b9c1dd270421ac0b38de720e"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Sep 09 16:02:22 2010 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Sep 09 16:02:22 2010 -0700"
      },
      "message": "fix build\n\nChange-Id: I4aba42eabb2f959b5301bfd16f65fa6141d86ddc\n"
    },
    {
      "commit": "d074e30ce44b9e33da43b67a4515b8986ca72b26",
      "tree": "cea9a809ad3b678713d10b938eb21f0d792a89d8",
      "parents": [
        "f470ed8630e9e648727443b065b9f1c69fee34d6"
      ],
      "author": {
        "name": "aimitakeshi",
        "email": "aimitakeshi@gmail.com",
        "time": "Thu Jul 29 10:12:27 2010 +0900"
      },
      "committer": {
        "name": "aimitakeshi",
        "email": "aimitakeshi@gmail.com",
        "time": "Wed Sep 01 15:40:00 2010 +0900"
      },
      "message": "  Initial contribution from Sony Corporation.\n\n  Add DRM Framework to support DRM content playback\n  together with StageFright.\n\n  - DRM Framework code is added\n     - include/drm\n     - drm\n  - api/current.xml is updated to include DRM Framework Java APIs\n  - cmds/servicemanager/service_manager.c is modified\n    to add drmManager and drmIOService.\n\nChange-Id: I6d7bc9c7067362b500e530988a9ce241761866fb\n"
    }
  ]
}
