)]}'
{
  "log": [
    {
      "commit": "13aa1a4b6630a05fc3e48824b911009ecbb33284",
      "tree": "506fa3026d84685c2621157b9b668155c31ae0ec",
      "parents": [
        "e3cdab3c40cb71284a0e186d7d5a82257e7d34a1"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Sep 27 10:21:55 2019 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Sep 30 14:04:37 2019 -0700"
      },
      "message": "Remove libmediadrm symlinks\n\nTest: build\nChange-Id: I53d703b6d34226926437b0207a2b3d51dff6881a\n"
    },
    {
      "commit": "641cf39651b4e1a34bce760d53a7f460acf93fdf",
      "tree": "d8a3f8c4550537669a5165af71b0f3af20bd0c31",
      "parents": [
        "f06897b16eb529f79955b12bb34109667a2ffd60"
      ],
      "author": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Tue Sep 10 18:00:42 2019 -0700"
      },
      "committer": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Tue Sep 10 18:00:42 2019 -0700"
      },
      "message": "NdkMediaDrm: properly check null listeners\n\nBug: 140456613\nTest: NativeMediaDrmClearkeyTest\nChange-Id: Id3bfaa3da4a73d1607f191d2ad44dce47ae7f4a0\n"
    },
    {
      "commit": "9c4e0fa92912a1fdd7235cd7ae108ad32fe5ea0f",
      "tree": "adb3d730bf0556913f249772caca6afd35900d0f",
      "parents": [
        "f95c698108b608e6ebf86e7450a9a2464e3ae264"
      ],
      "author": {
        "name": "John W. Bruce",
        "email": "juce@google.com",
        "time": "Fri May 03 17:12:44 2019 -0700"
      },
      "committer": {
        "name": "John Bruce",
        "email": "juce@google.com",
        "time": "Wed May 08 01:08:07 2019 +0000"
      },
      "message": "Do Not Pass Blank App Package Name to MediaDrm Plugins\n\nPreviously, the NDK has always passed a blank app package name to the\nMediaDrm plugins. However, some DRM systems need this value to be filled\nin to operate correctly.\n\nUnfortunately, since supplying or not supplying this value can\ninvalidate existing DRM licenses, we cannot start passing it in for\ndevices that might have previously run without it. As such, passing it\nis only supported on devices for which Q is their first Android release.\n\nBug: 65680731\nTest: CTS NativeMediaDrmClearkeyTest\nChange-Id: Icccde9708766a86ccd352c82be25285fc9f8ebca\n"
    },
    {
      "commit": "db3fa5f9ff069697b70f2a702177f1db83a6d5b7",
      "tree": "5ac815ae62bcb6e6fea949385afe2c53508db0f7",
      "parents": [
        "8ce16d8609ee14dfbfafeecfb3cb5d1ebb94f1f2"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Jan 25 22:56:56 2019 -0800"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Jan 30 07:09:41 2019 +0000"
      },
      "message": "Throw exception on mismatched system vs vendor\n\nWhen the system partition is a later version than vendor,\nnew MediaDrm APIs will not have HAL implementations. In\nthis case throw java.lang.UnsupportedOperationException.\n\nbug:110701831\nbug:123375769\n\ntest: cts media test cases, gts media tests\nChange-Id: Ib631bf4d4d245d857e61bd3fe0e5808e430a034d\n"
    },
    {
      "commit": "99dbfa822e277956799e987c106d4ec1b7984f1b",
      "tree": "d5ab50d0657b41554e0594ebb9a30f058ca3d1e3",
      "parents": [
        "701768e80731da3df0edac97fb8fc442ffbbd33f"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Thu Jan 17 17:27:06 2019 -0800"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Tue Jan 22 23:27:10 2019 +0000"
      },
      "message": "Add securityLevel to MediaDrm isCryptoSchemeSupported API\n\nbug:110701831\ntest: cts media test cases, widevine integration tests\n\nChange-Id: Ia4308a27a11a279db1fb127c51d752ecaa86dfcb\n"
    },
    {
      "commit": "c7822ef90d1ddda3ef63b7d3c1a3498203e49568",
      "tree": "28bf4bedbf66432e7914ed0b357d4194b21eac7b",
      "parents": [
        "5e0659c82240821cfa6766d33cca438a5f09ef32"
      ],
      "author": {
        "name": "Praveen Chavan",
        "email": "pchavan@codeaurora.org",
        "time": "Thu Oct 04 10:39:33 2018 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Tue Oct 09 16:57:25 2018 -0700"
      },
      "message": "Fix AMediaDrm_setPropertyByteArray\n\nAlso extend clearkey plugin to allow testing\nof this change.\n\nAuthor: Lubin Yin \u003clubiny@codeaurora.org\u003e\n\nChange-Id: Ie9b9fcd8920a6c843845700e7bba01ffc20a9507\n"
    },
    {
      "commit": "ad02cc6c4091a44fb60c475731c8f4cac9a55ab0",
      "tree": "feb915fc8d4ab255bb8dc71985acd8df2f18f3b3",
      "parents": [
        "15530ac49cc9af87ab0141e0875f23f8bd6b4264"
      ],
      "author": {
        "name": "Edwin Wong",
        "email": "edwinwong@google.com",
        "time": "Thu Aug 23 13:48:27 2018 -0700"
      },
      "committer": {
        "name": "Edwin Wong",
        "email": "edwinwong@google.com",
        "time": "Thu Aug 30 15:39:58 2018 -0700"
      },
      "message": "Add onExpirationUpdate and onKeyStatusChange listeners.\n\nWe must only create one DrmListener instance.\nWe then process different listeners in DrmListener::notify.\n\nTo facilitate testing, we call the listeners from clearkey plugin\u0027s\nprovideKeyResponse function. We have previously tested\nEventType::VENDOR_DEFINED in the same manner.\n\nbug: 77712870\n\nTest: native CTS test testClearKeyPlaybackCenc\nTest: CTS MediaDrmMockTest\nChange-Id: Ie15e3012a4068824f72371a66e9fca2ee27180f8\n"
    },
    {
      "commit": "b5c8f21eeb64b5d802c7953083104abefa02716b",
      "tree": "871b8348f67d6daf19ca839654e80f2414cb28bb",
      "parents": [
        "908c7d77355ae2c63a179a4ebfce69b7a6d31e3f"
      ],
      "author": {
        "name": "Edwin Wong",
        "email": "edwinwong@google.com",
        "time": "Fri Jul 06 17:29:24 2018 -0700"
      },
      "committer": {
        "name": "Edwin Wong",
        "email": "edwinwong@google.com",
        "time": "Fri Jul 06 17:29:24 2018 -0700"
      },
      "message": "Fixed AMediaDrm_getKeyRequest returning both new and old requests.\n\nIf multiple key requests are made through AMediaDrm_getKeyRequest,\n(e.g. Service Certification + key request in private mode), the\nnew request will be appended to the old request/s.\n\nAMediaDrm_getKeyRequest should just return the most recent request.\n\nTest: CTS test\n  Modify testQueryKeyStatus to make two back to back queries. The test\n  should pass.\n\nTest: CTS test\n  ANDROID_BUILD_TOP\u003d ./android-cts/toolsefed run cts-dev --module CtsMediaTestCases\n  -t android.media.cts.NativeMediaDrmClearkeyTest#testQueryKeyStatus\n\nbug: 77713912\nChange-Id: I21a30572fedc67cdf1d813ea36b92d2a67b4ebb4\n"
    },
    {
      "commit": "c5f013fb5d0557a9188f8d09b13eca970a31790f",
      "tree": "120f7c5b4844a09d5589c8ab342e336cc0271d1a",
      "parents": [
        "e641294b59e2a0792d894139d739228f182409b4"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Apr 05 10:28:27 2017 -0700"
      },
      "committer": {
        "name": "Edwin Wong",
        "email": "edwinwong@google.com",
        "time": "Tue May 01 18:22:13 2018 +0000"
      },
      "message": "Fix ndk findId\n\n|findId| should search by |id| value, rather than\noriginal memory address\n\nbug:35227555\nChange-Id: I53257d0fa833f61258a26b7e905879eeceab6b26\n"
    },
    {
      "commit": "41d279a7f3bc55a63b510d4dce07e18964cda152",
      "tree": "5d2c1f4a1ddabe93b57e6e3b0e616cab1f871645",
      "parents": [
        "c23849a8ea5d7e2939e9d8a0aa8b6da9c08ee625"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Sun Feb 11 19:52:08 2018 +0000"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Sun Feb 11 12:51:19 2018 -0800"
      },
      "message": "Revert \"Revert \"Fix MediaDrm security level APIs\"\"\n\nThis reverts commit 5f5e43fa83551a3636b92871bd2ad6b260a8815b.\n\nChange-Id: I72d585fd3768730eef6ad9effdbda81b32418dea\n"
    },
    {
      "commit": "5f5e43fa83551a3636b92871bd2ad6b260a8815b",
      "tree": "e6010dce1f091847db51b7464c566af774a98f74",
      "parents": [
        "56134cc9e790f39b3b10a18b701b0607c20b6154"
      ],
      "author": {
        "name": "Tobias Thierer",
        "email": "tobiast@google.com",
        "time": "Sun Feb 11 15:00:57 2018 +0000"
      },
      "committer": {
        "name": "Tobias Thierer",
        "email": "tobiast@google.com",
        "time": "Sun Feb 11 15:04:10 2018 +0000"
      },
      "message": "Revert \"Fix MediaDrm security level APIs\"\n\nThis reverts commit 56134cc9e790f39b3b10a18b701b0607c20b6154.\n\nReason for revert: Build cop here. The CL topic that I\u0027m reverting broke several builds: Drm.h\u0027s openSession(Vector\u003cuint8_t\u003e \u0026sessionId) hides overloaded virtual function openSession(DrmPlugin::SecurityLevel securityLevel, ..) from IDrm.h.\n\nhttps://android-build.googleplex.com/builds/submitted/4598692/full-eng/latest/view/logs/build_error.log\n\nChange-Id: I0de7738748ab793249df68bcbf18232d6a2d120a\n"
    },
    {
      "commit": "56134cc9e790f39b3b10a18b701b0607c20b6154",
      "tree": "51d3279074ad852d1c8ce03cb5f2f024542f1267",
      "parents": [
        "1bfabb36f5d6f09d87e9d52778b5a1cca9512722"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Mon Feb 05 13:09:23 2018 -0800"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Tue Feb 06 10:27:45 2018 -0800"
      },
      "message": "Fix MediaDrm security level APIs\n\nVendors implementing the newly added MediaDrm.setSecurityLevel\nHAL found that it was difficult to implement properly. Also the\nsemantics are somewhat ambiguous from the Java platform API\nlevel. This CL binds the security level assignment to openSession\nwhich clarifies the API for apps as well as making it more\nnatural to implement in HAL modules.\n\nbug:72831697\nbug:64001680\n\ntest: VtsHalDrmV1_1TargetTest, GTS media tests\nChange-Id: Iaa07727be86ec2bc92be907d5a48c92136dc2014\n"
    },
    {
      "commit": "815c9259d86b862c298db44d1a7f4f3c6a3b1dcd",
      "tree": "2edb860d4f8dc46a26cf0a81dd5b80ab07b293ff",
      "parents": [
        "faf18c58baf4db501c9707a30fd811a4c9386a26"
      ],
      "author": {
        "name": "Edwin Wong",
        "email": "edwinwong@google.com",
        "time": "Wed Aug 30 17:47:20 2017 -0700"
      },
      "committer": {
        "name": "Edwin Wong",
        "email": "edwinwong@google.com",
        "time": "Thu Sep 07 02:53:54 2017 +0000"
      },
      "message": "Fix AMediaDrm_queryKeyStatus returns key:key instead key:value pair.\n\nImplement queryKeyStatus in Clearkey plugin for testing.\n\nAdd CTS testQueryKeyStatus in ClearKeySystemTest and\nNativeClearKeySystemTest in a separate CL.\n\nTest: CTS - ClearSystemTests\n  ANDROID_BUILD_droid-cts/tools/cts-tradefed run cts -m\n  CtsMediaTestCases --test android.media.cts.ClearKeySystemTest\n\nTest: CTS - NativeClearSystemTests\n  ANDROID_BUILD_droid-cts/tools/cts-tradefed run cts -m\n  CtsMediaTestCases --test android.media.cts.NativeClearKeySystemTest\n\nbug: 64938501\nChange-Id: I8371a3b871e90762f1e7c8453dd6002c31f7eb13\n"
    },
    {
      "commit": "7e8d4ba5887affda749978d787b898bf31fda729",
      "tree": "50f55dd31df7fe969fc901b791a2b8c3a694d856",
      "parents": [
        "ab37fbfcdc197429d59f6926ba970b3e68bbbadf"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu May 04 16:17:42 2017 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu May 04 17:55:07 2017 -0700"
      },
      "message": "Move libmediandk and libcamera2ndk headers\n\nMove libmediandk and libcamera2ndk headers into their module\nand export them from there.  Also move them to the same path\nrelative to the export as used in the NDK, media/ for\nlibmediandk and camera/ for libcamera2ndk.\n\nTest: builds\nChange-Id: I0b424e0e48bfb5e2b762694a97d799de08f5dda3\n"
    },
    {
      "commit": "68b3d9f49e68a11af5225175dc9e60ce88819e84",
      "tree": "750d8fe493c2ec45542968192ecfe52d83133a02",
      "parents": [
        "9b088162cb9cdeb542f106a45d06a1f802e91e6e"
      ],
      "author": {
        "name": "Edwin Wong",
        "email": "edwinwong@google.com",
        "time": "Fri Jan 06 19:07:54 2017 -0800"
      },
      "committer": {
        "name": "Edwin Wong",
        "email": "edwinwong@google.com",
        "time": "Mon Jan 30 15:26:51 2017 -0800"
      },
      "message": "Pass application packagename to drm plugin.\n\nPass application package name to createPlugin and createDrmPlugin.\nThe application packagename will be used as part of a unique\nidentifier for drm plugin.\n\nTest: Play Movies.\n\nTest: ANDROID_BUILD_TOP\u003d ./android-gts/tools/gts-tradefed run gts -m\nGtsMediaTestCases --test\ncom.google.android.media.gts.WidevineH264PlaybackTests#testL1With480P60\n\nVerify the application\u0027s packagename is reachable in the drm plugin\u0027s\ndebug log.\n\nbug: 27101531\n\nChange-Id: I84fb09b591a7af63f6e20004e910112a4ce6ebac\n"
    },
    {
      "commit": "2103044be5c8fefbd97da410bbca47239fd3348d",
      "tree": "bdc90edb1f985308a27c4115aac76e2ee3478f55",
      "parents": [
        "5874853970818cc7fe039a4a8724da4ef8fc6d61"
      ],
      "author": {
        "name": "Edwin Wong",
        "email": "edwinwong@google.com",
        "time": "Tue Oct 18 12:34:05 2016 -0700"
      },
      "committer": {
        "name": "Edwin Wong",
        "email": "edwinwong@google.com",
        "time": "Tue Oct 18 13:30:25 2016 -0700"
      },
      "message": "Fix findId spinning if session id is not found.\n\nIf session id is not found, the iterator is not incremented\nso the end() condition is reached.\n\nThe Test:\nHow is this bug discovered:\nCalling AMediaDrm_closeSession() after AMediaDrm_provideKeyResponse()\nresults in spinning.\n\nThis cl is tested on nyc-mr1-dev branch using a NativeClearKeySystemTest\nthat is not yet checked in. This test will be ported to master soon.\nAfter testing in nyc-mr1-dev, the source in both branches is compared.\n\nTest: ANDROID_BUILD_TOP\u003d ./android-cts/tools/cts-tradefed run cts -m CtsMediaTestCases --test android.media.cts.NativeClearKeySystemTest#testClearKeyPlaybackCenc\n\nbug: 32235473\nChange-Id: I58c495d7499f70b7e85cab43911323b143a9d8fd\n"
    },
    {
      "commit": "b636524376b7620926fdb64751bfa9b28e362593",
      "tree": "9e2e0161d6cba8a0e2ceffdb3fd782ba4c6e4ad5",
      "parents": [
        "7c5593b35fa51fe78d4e7b6e12e60424c5da8a90"
      ],
      "author": {
        "name": "Greg Kaiser",
        "email": "gkaiser@google.com",
        "time": "Thu Aug 11 11:01:37 2016 -0700"
      },
      "committer": {
        "name": "Greg Kaiser",
        "email": "gkaiser@google.com",
        "time": "Thu Aug 11 11:01:37 2016 -0700"
      },
      "message": "DrmListener: Don\u0027t leak memory in error case.\n\nChange-Id: If4dc869e468f52997be732d03dc010f89551cd87\n"
    },
    {
      "commit": "3003807fcfa96c9cbfea18d643f47108aa116cd5",
      "tree": "a3f7b454cdf3973b6fd716ee44f4295e6c100bb5",
      "parents": [
        "c3c06c4fe329d07bd7d442206bc9eb63e92bf5bd"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Mon Apr 25 13:41:35 2016 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Tue Apr 26 20:46:17 2016 -0700"
      },
      "message": "Remove MediaDrm stack from mediaserver\n\nPart of media security hardening\n\nMediaDrm was temporarily allowed to\nrun in either mediaserver or mediadrmserver\nwhile all nexus devices were implementing\nsupport for the native_handle representation\nof secure buffers.  Now that all nexus\ndevices support native_handle, the MediaDrm\nstack can be removed from mediaserver.\n\nb/22990512\n\nChange-Id: Ie5d83bfeb4c4a824e1d0edb4c9452c782d6fd386\n"
    },
    {
      "commit": "214c833fcde68833691cc54d2a4cd995d7eb0e16",
      "tree": "890ef2a323af056ab73727b827d46f1376ec89f6",
      "parents": [
        "eafe1f9734af31730790b0abaf8c6aae01bfee77"
      ],
      "author": {
        "name": "Aurimas Liutikas",
        "email": "aurimas@google.com",
        "time": "Fri Feb 19 14:48:23 2016 -0800"
      },
      "committer": {
        "name": "Aurimas Liutikas",
        "email": "aurimas@google.com",
        "time": "Thu Mar 03 18:41:31 2016 +0000"
      },
      "message": "Fix compiler warnings in frameworks/av/media/ndk.\n\nBug: 26936282\nChange-Id: I86b32ef5a7e6b18974cbe4a885291acec2b2eb5f\n"
    },
    {
      "commit": "a69729dc76b97c44387088d351480d5d0701517e",
      "tree": "b08b8fc059f8a5fac2037b8ed7c0904cc3107416",
      "parents": [
        "9129c06770340395fe88d08e586b599b8e2a44f9"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Feb 12 08:47:00 2016 -0800"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Feb 12 21:03:53 2016 -0800"
      },
      "message": "Add mediadrm service\n\nPart of media security hardening\n\nThis is an intermediate step toward moving\nmediadrm to a new service separate from mediaserver.\nThis first step allows mediadrmservice to run based\non the system property media.mediadrmservice.enable\nso it can be selectively enabled on devices that\nsupport using native_handles for secure buffers.\n\nbug: 22990512\nChange-Id: I70320f0c4b7861cdba26fbc24c20bce54e5749a4\n"
    },
    {
      "commit": "d072c909d87f8150433860f6de4c11df6e09e2f9",
      "tree": "57ddf1e47d3ce322e10214991e01b509aeeb1155",
      "parents": [
        "eb0ee0e842d3b8294aa6c0b797eaf7aff3fd2f89"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Mon Mar 16 13:39:29 2015 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Mon Mar 16 15:39:03 2015 -0700"
      },
      "message": "Report key request message type for unprefixed EME\n\nbug: 19771299\nChange-Id: I02f0a4532b5ea8a7e680d71f45ac0da06879f3d6\n"
    },
    {
      "commit": "c7a11b2208aa8f1e6a39eb70a136fbc0dafd3260",
      "tree": "2dbc503f0b0b3a80a2186f94a85c4498600be82a",
      "parents": [
        "798ce934571bc7eb5715bf1c03cbe5436a1220e3"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri May 30 10:13:25 2014 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri May 30 10:13:25 2014 -0700"
      },
      "message": "Disable verbose logging\n\nChange-Id: If9c87615707ed67f209258f9207d56f671cd0f08\n"
    },
    {
      "commit": "18a1b5904b352cedef29b95169a1226140d38576",
      "tree": "dfe1ad0c7c743e3810dca41a2daadf56c712a40f",
      "parents": [
        "93c6fa7508cd0f5bb0ec80ea29ef8bfab4a6015f"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue May 20 08:45:18 2014 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue May 20 08:45:18 2014 -0700"
      },
      "message": "Use pointers instead of references because C\n\nChange-Id: I5c84469e5ff977bf8bb91be2cc6c38a0c7f08609\n"
    },
    {
      "commit": "7c96d53a65085f42ac2b6d416cbc16fd36ed72ff",
      "tree": "892a5dee6e6c62dd923aa817bafa6b3fe4a951cd",
      "parents": [
        "5362ba070797c52a18d3cb5558cd41d1a72c74c5"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu May 15 15:26:14 2014 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu May 15 15:26:14 2014 -0700"
      },
      "message": "Fix build.\n\nChange-Id: I2b0a3049c81b99ba233d5945e16dcddd975aa4f9\n"
    },
    {
      "commit": "5362ba070797c52a18d3cb5558cd41d1a72c74c5",
      "tree": "fddfcdb07fcc5499c3b026fe4c42b217fef21c7a",
      "parents": [
        "16a25c150c49c730d206167012a24cbd9eb3a082",
        "e419d7cd5c62b4b5866a45d59c5770bb470193c1"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu May 15 21:58:36 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 15 21:58:36 2014 +0000"
      },
      "message": "Merge \"Unify error/status codes\""
    },
    {
      "commit": "e419d7cd5c62b4b5866a45d59c5770bb470193c1",
      "tree": "eaabdbe6d72e7be1ceb0b1907784083db848c674",
      "parents": [
        "3425fd5a55dd31e261d2f2a9590c762d6d0a6b79"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu May 15 14:17:25 2014 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu May 15 14:41:20 2014 -0700"
      },
      "message": "Unify error/status codes\n\nChange-Id: Ib90cc2f2adc07ff146256931c92c0ec4becb86f5\n"
    },
    {
      "commit": "3305b99ec3804c740aecd2ab6d1edd5c6137b7c6",
      "tree": "c0d2835a1f17306f2912447fdbf50d3ee191adcf",
      "parents": [
        "3425fd5a55dd31e261d2f2a9590c762d6d0a6b79"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed May 14 18:39:25 2014 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Thu May 15 09:24:35 2014 -0700"
      },
      "message": "Hook up event handling in NDK MediaDrm API\n\nChange-Id: I48ac1d3ca5405c5909454c7a553917b31b9a50e5\n"
    },
    {
      "commit": "3425fd5a55dd31e261d2f2a9590c762d6d0a6b79",
      "tree": "efd531cb9f1ce0f44e41584f3f6e70d8ea566308",
      "parents": [
        "7edda7ac8b86f2493b7df945e9f63da947124288"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed May 14 11:12:46 2014 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed May 14 15:18:40 2014 -0700"
      },
      "message": "Only export necessary symbols\n\nChange-Id: I869d7124c8cc555f4b09801a898f4dd3ecb072ec\n"
    },
    {
      "commit": "497ca097bf373ac69405131bd257915c97b31dc0",
      "tree": "46d9aa653abe08c6200e5a43005c5ca656849cae",
      "parents": [
        "cbe6fddebe3ec84176037de7f9681d2407fa1113"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Tue May 13 09:31:15 2014 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Tue May 13 18:11:04 2014 -0700"
      },
      "message": "WIP: MediaDrm NDK APIs\n\nChange-Id: I3ac08a3b027135c3fd2a9e95c5e8b3fd722df019\nTODO: hooking up event handler, testing\n"
    }
  ]
}
