)]}'
{
  "log": [
    {
      "commit": "87718e283a62660eaa0e39fd780c97a290da988f",
      "tree": "23c2899a0c1228fb19d7a12fc875fac204b4e0c6",
      "parents": [
        "278050ed4e63a2d68547336f8ecd5501ed29eddb"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Thu Jan 11 16:16:26 2018 -0800"
      },
      "committer": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Mon Jan 15 20:41:08 2018 -0800"
      },
      "message": "Gauge metric e2e test\n\nTest: new test passed\nChange-Id: I6a8bceb43fbb6e7b82f47951e71b5620779f2ceb\n"
    },
    {
      "commit": "079cea9a7e1e7a7c6f819adf51428e6b172d480f",
      "tree": "feff761344b62733715f18984c3cf78413b06b2d",
      "parents": [
        "69799885f382a9813256526d54f03af5bf672edb"
      ],
      "author": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Fri Jan 12 00:00:15 2018 -0800"
      },
      "committer": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Fri Jan 12 13:51:48 2018 -0800"
      },
      "message": "Create /data/misc/stats-data/ and /data/misc/stats-service/ in statsd.rc\nrather than during the runtime of statsd\n\nThe purpose of this change is to prevent causing selinux violation by\ntrying to mkdir to /data/misc/ directory when statsd doesn\u0027t have\npermission to do so.\n\nBug: 71537285\nTest: manually tested to make sure that there\u0027s no sepolicy violation\n\nChange-Id: I9c4ccecc416f41923c9b24dd44a388d135fecc07\n"
    },
    {
      "commit": "964be9ab42083f38c7cad8d1f5f6e6ef816f53a6",
      "tree": "96ddb168e454fdfe0ac4d45a9be1a95aba110db3",
      "parents": [
        "c3188fd767bdbdb46b569243ae13032aa973a381",
        "1ee9b7413c526b8e5fd3b5f11bfd6674693c0892"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 12 00:54:34 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 12 00:54:34 2018 +0000"
      },
      "message": "Merge \"pull absolute value for cpu time per frequency.\""
    },
    {
      "commit": "1ee851410124459b850736ac044183580ada74d2",
      "tree": "59f41a51b0f41f8988bc6fe275c79c299797b0b0",
      "parents": [
        "3d1e313809574c4e61da3d25184b2890b7c9561c",
        "afad8c6b439c5d4ae466290af19fc70e0ea15283"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 11 21:57:40 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 11 21:57:40 2018 +0000"
      },
      "message": "Merge \"Log attribution to statsd for pushed atoms.\""
    },
    {
      "commit": "0f2171041ef0615fcf10fdf95b8e096fef99d955",
      "tree": "658a7399b544cb716abe50bdf23596bdeffc173b",
      "parents": [
        "422a67987f2157cf709c07cb9132bdd775ebfc96"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Tue Jan 09 10:33:15 2018 -0800"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Thu Jan 11 11:58:10 2018 -0800"
      },
      "message": "make statsd run in its own uid\n\n+ Assign permission android.permission.STATSCOMPANION to statsd\n+ Fixes in StatsCompanionService to allow statsd to get uid mapping\n\nTest: manual\nChange-Id: I3e6ca79eefed7f93a4588578c156321c4c278fd3\n"
    },
    {
      "commit": "fdb4c48cb2f38611010cd24f926365c36b84cf12",
      "tree": "0c324b78158c04bbe7c29d19af721883870a0ab4",
      "parents": [
        "b1e9df92899c95b839af0adc53556b85e9aeef9b",
        "b19dc2467ba36b75696a7900a907d96a0d35d3e2"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 11 18:33:30 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 11 18:33:30 2018 +0000"
      },
      "message": "Merge \"Update statsd\u0027s user/group from root to system to avoid selinux policy violation\""
    },
    {
      "commit": "afad8c6b439c5d4ae466290af19fc70e0ea15283",
      "tree": "ef7997de7a34d0be390fa43ad7a66d72efeea8d1",
      "parents": [
        "22d5e0c2e168df6541f959137b6e08181bd3c0e7"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Fri Jan 05 22:30:49 2018 -0800"
      },
      "committer": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Thu Jan 11 09:33:13 2018 -0800"
      },
      "message": "Log attribution to statsd for pushed atoms.\n\nWill avoid allocating temp objects in a following CL after the new StatsLog API is in.\n\nTest: all statsd unit test passed.\nChange-Id: Id5f6a908d9d42732d83d9985b1b34b29230a7f20\n"
    },
    {
      "commit": "1ee9b7413c526b8e5fd3b5f11bfd6674693c0892",
      "tree": "642fc610b307527af01a764c3828aefd879b58cd",
      "parents": [
        "11954f5060c12299041ec1efbb02411833322e1d"
      ],
      "author": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Wed Jan 10 16:02:57 2018 -0800"
      },
      "committer": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Thu Jan 11 09:27:28 2018 -0800"
      },
      "message": "pull absolute value for cpu time per frequency.\n\nTest: cts test\nChange-Id: I519616905ed8ec6afdaa7e1a0743e279009aa0e5\n"
    },
    {
      "commit": "b19dc2467ba36b75696a7900a907d96a0d35d3e2",
      "tree": "8f898d88172b5583070c52040cf3bddee36eea0c",
      "parents": [
        "d5a6d9b8dd7f099ae208749f6b2fa8f1c9be8624"
      ],
      "author": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Wed Jan 10 22:24:41 2018 -0800"
      },
      "committer": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Wed Jan 10 22:26:30 2018 -0800"
      },
      "message": "Update statsd\u0027s user/group from root to system to avoid selinux policy\nviolation\n\nBug: 71537285\nBug: 69853944\nTest: manual verification to check there\u0027s no sepolicy violation\n\nChange-Id: I639cf5c9f4ac6c434c3122c4f42fdf8bdac721f6\n"
    },
    {
      "commit": "6b00b9a0deeaf5249ae5c0e08e5440c18c1af60f",
      "tree": "ee9bc9bfa49e2533e6e5918612f839afd54c4171",
      "parents": [
        "dd9828e62fade644d7459fa1328bb22b2f2021a6",
        "47c186ca325965825021dccba0b5f1ec3410da12"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 11 05:44:52 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 11 05:44:52 2018 +0000"
      },
      "message": "Merge \"More adjustments to the loadtest app.\""
    },
    {
      "commit": "7a2c9d9859593c2f1fc2aede432514f1855ab0a1",
      "tree": "a8a547ddd118c87b007781a0d1fd6f51d0b6a6cd",
      "parents": [
        "1b3adf9470a8516966bcb38fa45459c4cae830e9",
        "30789db28c7dce452fdab11f03d2e904f9934305"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 11 00:18:09 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 11 00:18:09 2018 +0000"
      },
      "message": "Merge \"make incidentd run in its own uid under log group for reading logs.\""
    },
    {
      "commit": "30789db28c7dce452fdab11f03d2e904f9934305",
      "tree": "c1964cb96029f592af060f2f650c7d0e0b5bc557",
      "parents": [
        "df86ddb3f9612444e1f08d751845f835958beb9c"
      ],
      "author": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Tue Jan 09 11:29:38 2018 -0800"
      },
      "committer": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Wed Jan 10 13:20:14 2018 -0800"
      },
      "message": "make incidentd run in its own uid under log group for reading logs.\n\nTest: manual\nChange-Id: I7106614c0bed1e862fbc80e42a87b43efc063145\n"
    },
    {
      "commit": "5d74343545fe7ca7b6d11c7324cf6da353ac0ede",
      "tree": "fedd623cb133436f2545e96a183599089ea8df3f",
      "parents": [
        "20c1e5f342cc49acfbf813930d82161ac07b6f6f",
        "d40053eb8bcb19c7c3b080a36714566bb4e4a748"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 10 18:50:55 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 10 18:50:55 2018 +0000"
      },
      "message": "Merge \"Map isolated uid to host uid when processing log event in statsD.\""
    },
    {
      "commit": "47c186ca325965825021dccba0b5f1ec3410da12",
      "tree": "6b0e1570fa5933b911fd5f1d33815bd3802cd225",
      "parents": [
        "a7afd1311a51ae81c4c7d98abd74d4d338b4ce9c"
      ],
      "author": {
        "name": "Stefan Lafon",
        "email": "stlafon@google.com",
        "time": "Sat Jan 06 08:56:39 2018 -0800"
      },
      "committer": {
        "name": "Stefan Lafon",
        "email": "stlafon@google.com",
        "time": "Wed Jan 10 09:27:38 2018 -0800"
      },
      "message": "More adjustments to the loadtest app.\n\n- Add ability to set the replication factor by intent.\n- Add shell script to automate the loadtesting.\n\nTest: Loadtest app works.\n\nChange-Id: I7263a3c23049f3ed20144e4e15b6a54ac5fddcc8\n"
    },
    {
      "commit": "d40053eb8bcb19c7c3b080a36714566bb4e4a748",
      "tree": "5df9cf4070508f1526ea1dbfcf19251a7af41dda",
      "parents": [
        "d6808dc0c00ba45fd589449647f792daf9fa8126"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Tue Jan 09 16:29:22 2018 -0800"
      },
      "committer": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Tue Jan 09 21:45:46 2018 -0800"
      },
      "message": "Map isolated uid to host uid when processing log event in statsD.\n\nTest: added test case for isolated uid in Attribution e2e test.\nChange-Id: I63d16ebee3e611b1ef0c910e5154cf27766cb330\n"
    },
    {
      "commit": "8f66b9eb29ff0e43afec356bd661f01509c16a76",
      "tree": "4e1491e3b6e1a1c47424e38a840b06a4facd3099",
      "parents": [
        "d4031658b0beb96e24037d485c2c30e4fea6c7bc",
        "30b9adfad1c5055044f0b585782b10f764e0ddf9"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Wed Jan 10 01:30:03 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 10 01:30:03 2018 +0000"
      },
      "message": "Merge \"Add setScreenUnlockedFunctions method to UsbManager\""
    },
    {
      "commit": "d6808dc0c00ba45fd589449647f792daf9fa8126",
      "tree": "e0437e8d8ac2e63f4f9b0502825921a569703942",
      "parents": [
        "032626a7edd3f76a8f21540fbf3bc86104beeee1",
        "b5bc74122fb95c81bedad625160fb8d144a863cd"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 10 00:22:45 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 10 00:22:45 2018 +0000"
      },
      "message": "Merge \"E2e test: attribution matching and slicing by attribution.\""
    },
    {
      "commit": "30b9adfad1c5055044f0b585782b10f764e0ddf9",
      "tree": "2501d4b4057bb311aede24739f1f5fdf95107cfa",
      "parents": [
        "03033385afd531807c5f96a577f76f12a9a08431"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Thu Nov 30 19:10:55 2017 -0800"
      },
      "committer": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Tue Jan 09 15:36:35 2018 -0800"
      },
      "message": "Add setScreenUnlockedFunctions method to UsbManager\n\nThe screen unlocked functions save effort on setting\nthe usb config during each connection. These\nfunctions persist between connections and between\nboots. When the screen is unlocked and these\nfunctions are set, the current functions will\nbe automatically set to the screen unlocked functions.\n\nAlso added svc command for this so it can be\nused and tested while the UI is worked on.\n\nBug: 62876645\nTest: svc usb setScreenUnlockedFunctions mtp\nTest: Test functions with locking, unlocking, and\ndisconnecting, with no lockscreen, swipe, and pattern\n\nChange-Id: Ia05e095917166d25398c4d310b02971e3a1bb12a\n"
    },
    {
      "commit": "1bf94382d036fa8d61258205c5f4e18cd53cb61d",
      "tree": "2a376b76bc68439756cc4a0941c819efb4b76971",
      "parents": [
        "26d5b41fdbb5fe9f42dd33d78ccafd2ea8e38aff"
      ],
      "author": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Thu Jan 04 11:43:20 2018 -0800"
      },
      "committer": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Tue Jan 09 11:29:41 2018 -0800"
      },
      "message": "Anomaly detection is per dimension\n\nAnomalies are now detected and declared per dimension. This means that\ndeclareAnomaly now gets access to the key that is responsible for the\nanomaly. Moreover, the refractory period is per dimension, not overall.\nSo a second anomaly for the same metric but a different dimension can\nfire within the first dimension\u0027s refractory period. Thus, if app A\nmisbehaves and app B misbehaves shortly thereafter, they will both be\ndetected.\n\nEventually this key will be passed to the subscribers, although this cl\ndoesn\u0027t do anything with it.\n\nTest: adb shell data/nativetest64/statsd_test/statsd_test\nChange-Id: Id76856dc44fe9ecf91ac81a423e84f97c81d30ab\n"
    },
    {
      "commit": "26d5b41fdbb5fe9f42dd33d78ccafd2ea8e38aff",
      "tree": "4bc5a496c129ad9a14dab457d7f26391054887df",
      "parents": [
        "627eaae547616ea4928e23436ecc43bcbce5167f",
        "f6723dfcf08e388adaa9b12a2e6ea8ee54b74d14"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jan 09 17:03:17 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 09 17:03:17 2018 +0000"
      },
      "message": "Merge \"Cap the size of ice box in StatsdStats.\""
    },
    {
      "commit": "aed7f12d4ade664b34fea020d54b0423347435ed",
      "tree": "0584572e39bb4ab2139ff4f5bdf214f20a7d3c56",
      "parents": [
        "33487775e6752532330da1da7f6fc1eafa462c83"
      ],
      "author": {
        "name": "Olivier Gaillard",
        "email": "gaillard@google.com",
        "time": "Tue Dec 12 14:26:22 2017 +0000"
      },
      "committer": {
        "name": "Olivier Gaillard",
        "email": "gaillard@google.com",
        "time": "Tue Jan 09 14:33:55 2018 +0000"
      },
      "message": "Add atoms for app startup time.\n\nThese atoms match exactly what we currently send through Tron.\n\nTest: manual\nChange-Id: I36809417c8d5c62d60035be696ddf506243ee2a9\n"
    },
    {
      "commit": "c131a9297b4acadce2127c950e3ffec5a7e40973",
      "tree": "ec91a3fbe18d1abcf1851e992f0eb9167819ed04",
      "parents": [
        "0b921eacb59d5683f08c7759049c4fb235ce9a9f",
        "b0d0628a2915449db2c4ec071bea0cdeff3af210"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jan 09 10:03:01 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 09 10:03:01 2018 +0000"
      },
      "message": "Merge changes Ibe8c8d3c,I4a475d6f\n\n* changes:\n  Thread-safety at log processor level.\n  Handle null string in jni and c++ stats-log-api interfaces.\n"
    },
    {
      "commit": "c99dea0a4b9dd8dc847d233b932edaec2d22bda9",
      "tree": "8ec068dee3a36b72453a8e71c9fb94ef37a55a67",
      "parents": [
        "a2fe748e7a24fcb631daa3e228564eca81f8a670",
        "44ed76eb9f2ae712fc08c1ab94a9e473a1c8827a"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jan 09 03:28:11 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 09 03:28:11 2018 +0000"
      },
      "message": "Merge \"Revert \"Enable incidentd, it will just be idle while no one triggers it.\"\""
    },
    {
      "commit": "44ed76eb9f2ae712fc08c1ab94a9e473a1c8827a",
      "tree": "9112192924596e63c6f07788555e24edc4c56a6a",
      "parents": [
        "d612df381e7867780266f0a1161b817e089c3bb6"
      ],
      "author": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Tue Jan 09 01:44:47 2018 +0000"
      },
      "committer": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Tue Jan 09 01:44:47 2018 +0000"
      },
      "message": "Revert \"Enable incidentd, it will just be idle while no one triggers it.\"\n\nThis reverts commit d612df381e7867780266f0a1161b817e089c3bb6.\n\nReason for revert: Selinux denials, see b/71591707 for more details.\n\nChange-Id: I864cd74e7ba57d67e2ed8328a7df9c5ff335508c\n"
    },
    {
      "commit": "9761f47e8469627934ef2bea5560d4433153b913",
      "tree": "f10ca58e86e1c1f614f38365818f128cc0d94bf3",
      "parents": [
        "985cdcb88a262a905ddcc90b20177f2be292198b",
        "d59a6589faeb8a1b7b3c23e5ac95671bda736cdd"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jan 08 23:42:26 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 08 23:42:26 2018 +0000"
      },
      "message": "Merge \"Some fixes in duration metrics\""
    },
    {
      "commit": "f6723dfcf08e388adaa9b12a2e6ea8ee54b74d14",
      "tree": "41efaab42de7c0f5216c0db9754f2ff21c3cc5c9",
      "parents": [
        "c7dca1bddf49cbe4219258cbd71f4cabc4388543"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Mon Jan 08 15:11:58 2018 -0800"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Mon Jan 08 15:18:00 2018 -0800"
      },
      "message": "Cap the size of ice box in StatsdStats.\n\n+ only keep the last 20 old config stats.\n\nTest: statsd_test\nChange-Id: I5bff68299bb9e4def7f7b54aa1d347133bc7a768\n"
    },
    {
      "commit": "b0d0628a2915449db2c4ec071bea0cdeff3af210",
      "tree": "84e7ce65a57bfd5b2b0f1711c574f457debef1a2",
      "parents": [
        "20ac944ea00dbef78574b37e490ebe66c9190c13"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Fri Jan 05 15:44:07 2018 -0800"
      },
      "committer": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Mon Jan 08 14:59:42 2018 -0800"
      },
      "message": "Thread-safety at log processor level.\n\nTest: statsd unit test passed.\n\nChange-Id: Ibe8c8d3cc8297875b16ee385c077b71c87353147\n"
    },
    {
      "commit": "fbef27ab4a9dc463d38f031c55bef7d45f517cfe",
      "tree": "1d99b1e2c7fd0be48ec2f6fa575290a6805ab19b",
      "parents": [
        "09d9ac5819a37d397cfedbb185695992d85f8454",
        "3c034c987e1eeb49660fb62d3426c292a01412c9"
      ],
      "author": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Mon Jan 08 20:52:54 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 08 20:52:54 2018 +0000"
      },
      "message": "Merge \"Implement a new type of section which reads from logd and dumps proto.\""
    },
    {
      "commit": "d59a6589faeb8a1b7b3c23e5ac95671bda736cdd",
      "tree": "f69cf30239cbe29ebad1a1061471b907bc94c4df",
      "parents": [
        "c7dca1bddf49cbe4219258cbd71f4cabc4388543"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Mon Jan 08 11:17:11 2018 -0800"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Mon Jan 08 11:17:11 2018 -0800"
      },
      "message": "Some fixes in duration metrics\n\n+ Don\u0027t need to keep the condition key if the condition is not sliced.\n+ Whiten the hash before returning.\n\nTest: statsd_test\nChange-Id: Ie0bcb14b3adc4a15b79ba3be050431a672a68c28\n"
    },
    {
      "commit": "b5bc74122fb95c81bedad625160fb8d144a863cd",
      "tree": "c495593b360600c599e46003f954ba69319915f6",
      "parents": [
        "102f5632fb02fe9ef440410edf8b28e6612e1c72"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Sat Jan 06 23:17:45 2018 -0800"
      },
      "committer": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Sat Jan 06 23:23:19 2018 -0800"
      },
      "message": "E2e test: attribution matching and slicing by attribution.\n\nTest: statsd unit tests passed.\nChange-Id: I05875b80a9a1ab5f87a478d1f63543f9798254a5\n"
    },
    {
      "commit": "3c034c987e1eeb49660fb62d3426c292a01412c9",
      "tree": "168d3f0040e3e74ac1b2741f91d2dbfcee166535",
      "parents": [
        "a598c05d632d303a49ba06fe306136e0039c785d"
      ],
      "author": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Fri Dec 22 17:36:47 2017 -0800"
      },
      "committer": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Sat Jan 06 20:33:14 2018 -0800"
      },
      "message": "Implement a new type of section which reads from logd and dumps proto.\n\nAnd implement a file section which reads from event-log-tags for\ndecoding binary logs.\n\nBug: 70936599\nTest: atest incidentd_test \u0026\u0026 atest incident_helper_test and flush on\ndevice and test log sections and event_log_tag_map\nChange-Id: Ib3d35e317f355de69f01ded012482486e9a43da6\n"
    },
    {
      "commit": "a7afd1311a51ae81c4c7d98abd74d4d338b4ce9c",
      "tree": "e4f1e3d2cc4dca31edb88959aad1c2725b90f310",
      "parents": [
        "4e04edf57b66b3c03b9e1db5acfa31bbb8720c58",
        "c6f2fa2700c12b44ef7b28d42c513125bc9476ae"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Jan 06 04:37:59 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Jan 06 04:37:59 2018 +0000"
      },
      "message": "Merge \"Fix a few things with the loadtest app.\""
    },
    {
      "commit": "c6f2fa2700c12b44ef7b28d42c513125bc9476ae",
      "tree": "109f9dcaeb2a7597e9a9379f84a7de8adc6f8c25",
      "parents": [
        "a070b6a40c95df5b64d195aba1386815fec5d5b7"
      ],
      "author": {
        "name": "Stefan Lafon",
        "email": "stlafon@google.com",
        "time": "Thu Jan 04 22:03:29 2018 -0800"
      },
      "committer": {
        "name": "Stefan Lafon",
        "email": "stlafon@google.com",
        "time": "Fri Jan 05 17:02:56 2018 -0800"
      },
      "message": "Fix a few things with the loadtest app.\n\nTest: Loadtest app is running fine.\n\nChange-Id: I834f6c618f5a6b0b17ecd5592e2ab2209ce7b94a\n"
    },
    {
      "commit": "b038b709566c191164bd23539175df8aadeb2f94",
      "tree": "34b70e11d0d17a5c7a01fce548e7ccfbef764a58",
      "parents": [
        "6041a4a24005576ba9dbaa496b33fb96c7472f57"
      ],
      "author": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Mon Dec 18 15:15:34 2017 -0800"
      },
      "committer": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Fri Jan 05 15:49:59 2018 -0800"
      },
      "message": "pullers now cache data to throttle frequent pull requests.\nall pullers have a default 1s cool down before next pull.\nWe can adjust these later.\nAlso add puller stats in StatsdStats\n\nTest: unit test\nChange-Id: I71894a24c41e059d841591312dbb852f54387b7d\n"
    },
    {
      "commit": "4735b97d846dbee5ba6544dfcec156d9b2f329d4",
      "tree": "ea02f4a5ece663c11fb348b8bb0ea3e8a95c3199",
      "parents": [
        "172bb616568cfa44da6f30885080269f5405e688",
        "6e3e6cbe07e7e4795ad49b7a6947af026dd0d059"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 05 18:44:54 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 05 18:44:54 2018 +0000"
      },
      "message": "Merge \"Updates atoms.proto for statsd.\""
    },
    {
      "commit": "a068cd68c03b09c1a49f6c50d8c305e6cbf0287b",
      "tree": "73c0e5015f08928fc66fb41b0944f870978d0375",
      "parents": [
        "61823f3a23750d672947ba7b5bb6dd4f1ff5503f",
        "fa51853ae56ed74a0c854c01851cb1435453005f"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 05 18:21:53 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 05 18:21:53 2018 +0000"
      },
      "message": "Merge \"Binding on-demand #8: Miscellaneous usages\""
    },
    {
      "commit": "fa51853ae56ed74a0c854c01851cb1435453005f",
      "tree": "d9ae04564295053eb2b8621f55fa2f64b63bb1a3",
      "parents": [
        "dc4cb146315240441fc8d9c05fe8dd63370a7c57"
      ],
      "author": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Tue Jan 02 16:01:53 2018 +0000"
      },
      "committer": {
        "name": "Bernardo Rufino",
        "email": "brufino@google.com",
        "time": "Fri Jan 05 16:33:33 2018 +0000"
      },
      "message": "Binding on-demand #8: Miscellaneous usages\n\nMigrate usages of the transport binder to binding on-demand:\n* getDestinationString()\n* isAppEligibleForBackup()\n* dump()\n\nFor getDestinationString() we\u0027ll be introducing an invisible bug for\npeople that haven\u0027t updated GMSCore to include the usage of\nupdateTransportAttributes() API introduced in earlier CL. The bug is\nthat that text won\u0027t change, it\u0027ll remain constant. It\u0027s invisible\nbecause currently only place that uses that method is Settings in some\ncircumstances that depend on the transport, and those circunstances\ndon\u0027t happen with our transports. Check http://ag/1831025.\n\nFor isAppEligibleForBackup(), a new filterAppsEligibleForBackup() is\ncreated and there we bind on-demand.\n\nChange-Id: Idc9e31f0e8eda8531e204c05a84fafdaf0247d08\nRef: http://go/br-binding-on-demand\nBug: 17140907\nTest: adb shell dumpsys backup, observe destination of transports\nTest: adb shell bmgr backupnow --all, observe only eligible apps got backed-up\nTest: Force-loaded settings screen and observed destination string\nTest: m -j RunFrameworksServicesRoboTests\n"
    },
    {
      "commit": "7266e82cf856a063edca77c22d16333990700ce9",
      "tree": "09f7b80986487a3a10342f8387893350e6444a1a",
      "parents": [
        "a070b6a40c95df5b64d195aba1386815fec5d5b7",
        "469cd8084088bc5d3dcacba657c8796cfcc87d9f"
      ],
      "author": {
        "name": "Howard Ro",
        "email": "yro@google.com",
        "time": "Fri Jan 05 06:44:38 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 05 06:44:38 2018 +0000"
      },
      "message": "Merge \"Use the configs from disk after reboot and separate out ConfigManager startup for unit test to avoid reading configs for tests\""
    },
    {
      "commit": "a070b6a40c95df5b64d195aba1386815fec5d5b7",
      "tree": "bbd5c822dba0558723f6a024446aca705765fa6f",
      "parents": [
        "c9cbc3e5fcb1c3b9683c617df0c3b645d6516b02"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Thu Jan 04 13:28:38 2018 -0800"
      },
      "committer": {
        "name": "Yang Lu",
        "email": "yanglu@google.com",
        "time": "Fri Jan 05 04:34:49 2018 +0000"
      },
      "message": "Bug fix: gauge metric producer does not need the atom id parameter.\n\nTest: statsd unit test passed\nChange-Id: Ifd1e2f7a05a03886eb227ac1ae0e30b884e49f0c\n"
    },
    {
      "commit": "c9cbc3e5fcb1c3b9683c617df0c3b645d6516b02",
      "tree": "db1546ca1f4b1cc8d87ceb3d29dd20bc37c7f63b",
      "parents": [
        "cc74ecb26ceb3139745bd520c5deab383b069f3e",
        "8eb783b21e38b15e41a8268d6b08f24bc62bc21f"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@google.com",
        "time": "Fri Jan 05 03:53:56 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 05 03:53:56 2018 +0000"
      },
      "message": "Merge \"FBE devices now fully support adoptable storage.\""
    },
    {
      "commit": "8eb783b21e38b15e41a8268d6b08f24bc62bc21f",
      "tree": "6c5e0a5de3a9e10ed610b682e23b042a9c8677ce",
      "parents": [
        "f262c7f2e00b9239e0c333b81f1ccb1953713ab1"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Jan 04 16:46:48 2018 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Jan 04 18:50:14 2018 -0700"
      },
      "message": "FBE devices now fully support adoptable storage.\n\nWe\u0027ve finished all the underlying work to support adoptable storage\non FBE devices, so remove the code that was disabling it by default.\n\nIntroduce feature flag to make it easier to detect devices that\nsupport adoptable storage.\n\nTest: cts-tradefed run commandAndExit cts-dev -m CtsAppSecurityHostTestCases -t android.appsecurity.cts.AdoptableHostTest\nBug: 29923055, 25861755, 33252673, 37289651\nChange-Id: I3630d690c9e66c7e41e316a4263ea2eb1e752ad3\n"
    },
    {
      "commit": "d19bcae42df300c080415a1a91df53c4e28ea4d5",
      "tree": "dce4d66d4c89a2fcb352b14fee76a7ef5701e350",
      "parents": [
        "a598c05d632d303a49ba06fe306136e0039c785d"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Thu Jan 04 15:43:39 2018 -0800"
      },
      "committer": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Thu Jan 04 16:39:52 2018 -0800"
      },
      "message": "Move Field proto out of stats_log.proto to keep it clean.\n\nTest: statsd unit test passed.\n\nChange-Id: I31ffea40cf1b82c16bf37c706969bfb159639c7b\n"
    },
    {
      "commit": "469cd8084088bc5d3dcacba657c8796cfcc87d9f",
      "tree": "0d32b60b046965e4a1b4d248aff6af8149b6f6a6",
      "parents": [
        "cbc43ed9dfed3ee3d32ff433fd3bd51caa04f9f4"
      ],
      "author": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Thu Jan 04 14:57:45 2018 -0800"
      },
      "committer": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Thu Jan 04 15:00:48 2018 -0800"
      },
      "message": "Use the configs from disk after reboot and separate out ConfigManager\nstartup for unit test to avoid reading configs for tests\n\nBug: 70667694\nTest: manual testing conducted, statsd, statsd_test\nChange-Id: I49cb82d2b1d7c178b7a4c30c089d8d93e7902faa\n"
    },
    {
      "commit": "efc331b287e8e227ec4aca7459f04a951f5b81c3",
      "tree": "6f1b20707986d4bdf9a88660d5c4aef23d04d95a",
      "parents": [
        "5d8307186f589d764de34ed9f4a5456a1de6a35d",
        "b814481ad1f8d0e429d799b1571a6272e1a7f6c5"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 04 22:53:29 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 04 22:53:29 2018 +0000"
      },
      "message": "Merge \"Use TimeUnit enum to specify the bucket size.\""
    },
    {
      "commit": "b814481ad1f8d0e429d799b1571a6272e1a7f6c5",
      "tree": "705222cc3054f6e86ceae24b6a7590c3cc2a223a",
      "parents": [
        "ec397abf931a39ed1c3d36f0af4ee9a68b883b07"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Thu Jan 04 10:56:23 2018 -0800"
      },
      "committer": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Thu Jan 04 13:01:14 2018 -0800"
      },
      "message": "Use TimeUnit enum to specify the bucket size.\n\nTest: all statsd unit test passed\n\nChange-Id: I4f6b80ba2f8c984b06e46e6de6df3e546e99a968\n"
    },
    {
      "commit": "147ce6027880d05286f051f1501100a4ce2b52e8",
      "tree": "661aa199cb8a9c74a8577a26a941c056160707e4",
      "parents": [
        "ec397abf931a39ed1c3d36f0af4ee9a68b883b07"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Fri Dec 22 14:35:34 2017 -0800"
      },
      "committer": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Thu Jan 04 09:57:03 2018 -0800"
      },
      "message": "use only string type in the log source whitelist.\n\n+ predefined \"AID_X\" will be provided as string type to statsd, and we will translate\n  to integer uid using the static map.\n\nTest: statsd_test\n\nChange-Id: Ie47d8481e0c456457e6881ebb9cb4ce008e772b8\n"
    },
    {
      "commit": "64d467ec0946d81bce182451838bbf4ca2e87616",
      "tree": "b5b6e5174b822d75d92cf64f44b86b3c2869190b",
      "parents": [
        "41bbed87e928261ccf2e276fe715b7b85df74a73",
        "a7fb12d2d285a3a62f5e8956d1bacfa0e15e9d0f"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 04 11:19:42 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 04 11:19:42 2018 +0000"
      },
      "message": "Merge \"1/ Use FieldMatcher to specify the value fields in value metric. 2/ rename number_of_buckets as num_buckets 3/ use double for the Alert\u0027s threshold\""
    },
    {
      "commit": "a7fb12d2d285a3a62f5e8956d1bacfa0e15e9d0f",
      "tree": "bc7a9387a4308bbf665a4a6e8c93670e35f1a1a6",
      "parents": [
        "478b6caa48ee001aa9273e36efe1b754dca87d7e"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Wed Jan 03 17:17:20 2018 -0800"
      },
      "committer": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Wed Jan 03 23:49:36 2018 -0800"
      },
      "message": "1/ Use FieldMatcher to specify the value fields in value metric.\n2/ rename number_of_buckets as num_buckets\n3/ use double for the Alert\u0027s threshold\n\nTest: statsd unit tests passed.\nChange-Id: Id1f55f14d3712eddee561681e3cd77343f086c7a\n"
    },
    {
      "commit": "e85fac24db74ab2bd6d5c3e550d34f90d65c8d91",
      "tree": "c6db383e4e75cc72446e7bc42095a81ab60871c9",
      "parents": [
        "b6c8769ee463d71c6fdac6bd58ed94e1cf25fd88",
        "d612df381e7867780266f0a1161b817e089c3bb6"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 04 01:40:41 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 04 01:40:41 2018 +0000"
      },
      "message": "Merge \"Enable incidentd, it will just be idle while no one triggers it.\""
    },
    {
      "commit": "6e3e6cbe07e7e4795ad49b7a6947af026dd0d059",
      "tree": "932559ca8ab6b736c107bd93bc9e40ff075ad8ec",
      "parents": [
        "dc4cb146315240441fc8d9c05fe8dd63370a7c57"
      ],
      "author": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Wed Jan 03 16:14:06 2018 -0800"
      },
      "committer": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Wed Jan 03 17:20:14 2018 -0800"
      },
      "message": "Updates atoms.proto for statsd.\n\nUpdates numbering for pulled atoms to start at 10,000 so we have more\nroom to add more pushed atoms. Also fixes definition for dropbox\nerror added to more efficiently encode -1, and include the package\nname when it\u0027s available.\n\nTest: Tested the dropbox atom is logged without crashing on marlin.\nChange-Id: I096911e3fe134320f2b1c6f545b0f479c7199612\n"
    },
    {
      "commit": "48989c2744dcaaba4d4a23d9ca19b41c88c483bf",
      "tree": "769108f97e8f415fdbf69e0074b18dc549b392e4",
      "parents": [
        "5e798fe27900ace578f15867d69c8f9211cdb933",
        "94e197cceb2ba7df13ff8de04f60bfeec64015d9"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 03 23:36:21 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 03 23:36:21 2018 +0000"
      },
      "message": "Merge \"1/ Change all \"name\" to id in statsD. 2/ Handle Subscription for alert. 3/ Support no_report_metric\""
    },
    {
      "commit": "94e197cceb2ba7df13ff8de04f60bfeec64015d9",
      "tree": "2f73f292c6f73304e39b6127b5eeec4166f34cd2",
      "parents": [
        "c77bb380ae281d0100b9e8c73f5d71822af6977b"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Tue Jan 02 16:03:03 2018 -0800"
      },
      "committer": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Wed Jan 03 15:34:00 2018 -0800"
      },
      "message": "1/ Change all \"name\" to id in statsD.\n2/ Handle Subscription for alert.\n3/ Support no_report_metric\n\nBug: 69522276\nTest: all statsd unit tests passed.\nChange-Id: I851b235f2d149b8602b0cad632d5bf541962f40a\n"
    },
    {
      "commit": "d612df381e7867780266f0a1161b817e089c3bb6",
      "tree": "3d37dc0b6c4ab05781d25cc35b47fedf6aeb24b0",
      "parents": [
        "8abf129f1f581cdbbb38acf3938c213dba4f3356"
      ],
      "author": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Wed Jan 03 15:21:10 2018 -0800"
      },
      "committer": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Wed Jan 03 15:22:18 2018 -0800"
      },
      "message": "Enable incidentd, it will just be idle while no one triggers it.\n\nTest: N/A\nChange-Id: I169108f0d61fc1fffea629eb2e862bfa7aad65f9\n"
    },
    {
      "commit": "5459651bf6cd645e4595363f649f1140b1f1a38a",
      "tree": "aed6a7013e5eea28699dd80fe99e0f44072b5315",
      "parents": [
        "2ca03a5fa8211f8329fea13e60bdcc756bcadc2f",
        "daa9f3a6798421d9db7a96837ff6383e1a9818b1"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 03 20:43:48 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 03 20:43:48 2018 +0000"
      },
      "message": "Merge \"Checks in statsd that fields are within range.\""
    },
    {
      "commit": "f5cc5759d55f803cd230c7a595e89e634c3c36ee",
      "tree": "7632d267b45d11c144fc54e411f2151e71671176",
      "parents": [
        "b944bc86078146c523d58d2b70d56044be3bf216"
      ],
      "author": {
        "name": "Kweku Adams",
        "email": "kwekua@google.com",
        "time": "Wed Dec 20 17:59:17 2017 -0800"
      },
      "committer": {
        "name": "Kweku Adams",
        "email": "kwekua@google.com",
        "time": "Tue Jan 02 15:49:23 2018 -0800"
      },
      "message": "incidentd: parsing ps dump into proto.\n\nAlso changing from execv to execvp so that we don\u0027t have to specify the full command path.\n\nBug: 65750831\nTest: atest incident_helper_test\nChange-Id: I92191afff4e7f9a6d08ea22ecfc2de5623d3bde5\n"
    },
    {
      "commit": "b944bc86078146c523d58d2b70d56044be3bf216",
      "tree": "d4b567290452a506edc206348438b07365318840",
      "parents": [
        "acaee9645b965b32d86a901769308bf5befcfe6b",
        "59e6fd792deb31512027548342b66af25056e237"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jan 02 23:33:44 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 02 23:33:44 2018 +0000"
      },
      "message": "Merge \"incidentd: Parsing battery_type data to proto.\""
    },
    {
      "commit": "ea713a3882d11675ca067ad63ab01a664d012f3b",
      "tree": "d3783efeb23b44c82c9a4f0ab86f51a74e52ef75",
      "parents": [
        "2087716f2bdca90c7c3034d556ac12911bd8018e",
        "e0ee5cefd68b778c5ad1d38878ca81d07b5c5a8e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jan 01 20:59:22 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 01 20:59:22 2018 +0000"
      },
      "message": "Merge \"Add \"write\" comment to content tool.\""
    },
    {
      "commit": "e0ee5cefd68b778c5ad1d38878ca81d07b5c5a8e",
      "tree": "55d01d91d26b8d80b2c64e428f17de4b1fa18be3",
      "parents": [
        "28bc987f61400b2862174149486e9f032c386a5f"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Jan 01 12:28:27 2018 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Jan 01 12:29:58 2018 -0700"
      },
      "message": "Add \"write\" comment to content tool.\n\nThis gives developers an easy way to push temporary testing\nconfiguration data into their apps.  We also now have symmetry with\nthe existing \"read\" command.\n\nTest: builds, boots, example commands work\nBug: 64672411\nChange-Id: I7bf6360915e1e4eb0d6ceaaec674f09931e28c6c\n"
    },
    {
      "commit": "2087716f2bdca90c7c3034d556ac12911bd8018e",
      "tree": "448895d8ce6f40644aa184b15fe024385d26d3c1",
      "parents": [
        "28bc987f61400b2862174149486e9f032c386a5f"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Fri Dec 22 17:19:39 2017 -0800"
      },
      "committer": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Mon Jan 01 10:01:36 2018 -0800"
      },
      "message": "1/ Support nested message and repeated fields in statsd.\n2/ Filter gauge fields by FieldMatcher.\n3/ Wire up wakelock attribution chain.\n4/ e2e test: wakelock duration metric with aggregated predicate dimensions.\n5/ e2e test: count metric with multiple metric condition links for 2 predicates and 1 non-sliced predicate.\n\nTest: statsd unit test passed.\n\nChange-Id: I89db31cb068184a54e0a892fad710966d3127bc9\n"
    },
    {
      "commit": "303f84faa40ab22a5016633ca33a940a1b02d982",
      "tree": "82ffc861dcc89c9dfddb27e163987464fdd48601",
      "parents": [
        "8b3a0d2a6e1c3b51f871f8622e853412a8d35cf4",
        "857aaa520804d846a050e1eeb85d82977c983666"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Dec 29 05:18:41 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 29 05:18:41 2017 +0000"
      },
      "message": "Merge \"Splits AnomalyTracker into two files\""
    },
    {
      "commit": "daa9f3a6798421d9db7a96837ff6383e1a9818b1",
      "tree": "ea846e379f1091040f983cbd01ac1b14f007896a",
      "parents": [
        "cb37da8b13a8f70942d253ac56a9ad3ae3cbf7ba"
      ],
      "author": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Thu Dec 28 16:52:22 2017 -0800"
      },
      "committer": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Thu Dec 28 17:01:49 2017 -0800"
      },
      "message": "Checks in statsd that fields are within range.\n\nWe check that both the developer-chosen label and the state fields\nare within the expected ranges.\n\nTest: Test that statsd still builds.\n\nChange-Id: I9f76dfbf16edc4540b28a778385f416cb1306d4e\n"
    },
    {
      "commit": "59e6fd792deb31512027548342b66af25056e237",
      "tree": "10de89905f5d49ca9354c492d35b22e10636e1ba",
      "parents": [
        "cb37da8b13a8f70942d253ac56a9ad3ae3cbf7ba"
      ],
      "author": {
        "name": "Kweku Adams",
        "email": "kwekua@google.com",
        "time": "Wed Dec 27 15:48:14 2017 -0800"
      },
      "committer": {
        "name": "Kweku Adams",
        "email": "kwekua@google.com",
        "time": "Wed Dec 27 15:48:14 2017 -0800"
      },
      "message": "incidentd: Parsing battery_type data to proto.\n\nBug: 65750835\nTest: atest incident_helper_test\nChange-Id: I3afefcfbd68924f8b6bd384cf1c7a41daeb243e3\n"
    },
    {
      "commit": "7d8aa4ded5af280930418045edfb4450b455d2c8",
      "tree": "8164df63d1e648fa0f3759eadcd020ea4e79ee3b",
      "parents": [
        "cb37da8b13a8f70942d253ac56a9ad3ae3cbf7ba"
      ],
      "author": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Wed Dec 27 13:37:01 2017 -0800"
      },
      "committer": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Wed Dec 27 13:37:01 2017 -0800"
      },
      "message": "Small fix to addconfig in statsd.\n\nAddConfiguration now returns false if the incoming byte array can\u0027t\neven be parsed into the expected proto format. Unfortunately, we\ncan\u0027t fully evaluate if this configuration is valid. Still, this\ngives the caller a chance to know that the parameters it sent can\u0027t\neven be parsed.\n\nTest: Tested that statsd still builds.\nChange-Id: I7ba7c64adc4bc77549d5e9133e212a4870645786\n"
    },
    {
      "commit": "857aaa520804d846a050e1eeb85d82977c983666",
      "tree": "7e2e8b8e22c50b243ed320e1e92e588176dd3a19",
      "parents": [
        "dc40b9082a11f6819b2a0dd174371c4a11da46c6"
      ],
      "author": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Tue Dec 19 15:29:06 2017 -0800"
      },
      "committer": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Fri Dec 22 15:05:31 2017 -0800"
      },
      "message": "Splits AnomalyTracker into two files\n\nSplits out DurationAnomalyTracker-specific functions into their own\nsubclass.\n\nTest: the unit tests and CTS tests\nChange-Id: Id6eb74d232b4a9c3a932d805d1ba3f0ba43a88b1\n"
    },
    {
      "commit": "25f5d01738442db65904577a2b2d71853052130e",
      "tree": "081069b8ff9ef9a00e0158e273ce6a796dace275",
      "parents": [
        "bd8d1a533054bddcd86e21b9b926671128576fe0",
        "0d7d4d4f306c5102c73fa5ee88069a64ecd2b70d"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Dec 22 18:44:21 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 22 18:44:21 2017 +0000"
      },
      "message": "Merge \"Modify Loadtest app to be able to exclude certain metric types.\""
    },
    {
      "commit": "0d7d4d4f306c5102c73fa5ee88069a64ecd2b70d",
      "tree": "a4c460ac0e45d2976ab79a29b4460b8ba8107af5",
      "parents": [
        "b1bd89a87704aa2c3b47b85f49f63af01f9af5ac"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Thu Dec 21 13:00:59 2017 -0800"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Fri Dec 22 09:13:37 2017 -0800"
      },
      "message": "Modify Loadtest app to be able to exclude certain metric types.\n\nTest: manual\nChange-Id: Iba025e4d6cd7c15a231550d382768aa7661ccc86\n"
    },
    {
      "commit": "382ac3757de12397bd9fd19804195f1069cbc508",
      "tree": "d0186621510fb4e0dd2d4da2a6c6a16b8e560cc0",
      "parents": [
        "9b62258fb3578d6c74389c4b9af1312804af7b89",
        "526aa056bd555fb3e21201088f94fcdff22b1eac"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Dec 21 22:41:33 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 21 22:41:33 2017 +0000"
      },
      "message": "Merge \"Modify system properties proto\""
    },
    {
      "commit": "526aa056bd555fb3e21201088f94fcdff22b1eac",
      "tree": "e3f42b876f455471640a6b1992be62ba4a7160c5",
      "parents": [
        "107f7cc4c4adfc01402dc5a52dc39976b75abbe2"
      ],
      "author": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Thu Dec 21 10:35:34 2017 -0800"
      },
      "committer": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Thu Dec 21 12:57:08 2017 -0800"
      },
      "message": "Modify system properties proto\n\nTest: atest incident_helper_test\nChange-Id: Id81922e7f4412090e3b72b3a0fc1151995635885\n"
    },
    {
      "commit": "d5aa01b3716e07463019fa772f07a40613f9e39e",
      "tree": "bc3b08795c7c22ae0fb9b6077cdc8850bdb4d885",
      "parents": [
        "d10f7b1c7bdb1c66aa04148945cae9733ee4cadf"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Tue Dec 19 16:46:36 2017 -0800"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Wed Dec 20 18:45:43 2017 -0800"
      },
      "message": "Remove the hacky HashableDimensionKey.\n\n+ Add a real HashableDimensionKey as a wrapper of the dimension.\nSo we can get rid of the maps that we kept.\n\nPay down technical debt and reduce memory usage.\n\nTest: statsd_test \u0026 manual\nChange-Id: I233280cf1e2ce93da6a8cd4e8514abb066f4016d\n"
    },
    {
      "commit": "d10f7b1c7bdb1c66aa04148945cae9733ee4cadf",
      "tree": "a914badb372ba8663bddf2c6ea833819901c4e40",
      "parents": [
        "247791f9ceaed13e639587aa4d046078252e2c7a"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Mon Dec 18 12:53:50 2017 -0800"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Wed Dec 20 18:45:43 2017 -0800"
      },
      "message": "Add log source filtering in statsd to filter out spams.\n\n+ Add log source whitelist in StatsdConfig\n+ Some changes in UidMap API. Listener needs to be wp instead of sp.\n+ Update dogfood app config to have log source\n+ Increase the stats service thread pool size to 10 (9+1).\n\nTODO: add unit tests(b/70805664). This unit test takes some time to write.\n\nTest: statsd_test \u0026 manual\n\nChange-Id: I129b1cc13db5114db7417580962bd7cc4438519d\n"
    },
    {
      "commit": "b80dcf259f52bdc4fb90b448c132cb3e8cafd5f0",
      "tree": "34520c5713faa2c42d5d53e9c89dd59ca070da33",
      "parents": [
        "ab53b1c232b9c38997c9a53f2cac6ac90718e27c",
        "9df9a7f78d78d422b366336ec3969eb2fd328b56"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Dec 20 17:50:24 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 20 17:50:24 2017 +0000"
      },
      "message": "Merge \"1/ index app name. 2/ fix a bug in app update.\""
    },
    {
      "commit": "4e102f07b6a9ab77421cd7696d712417df4c386f",
      "tree": "7583324c5a17f4738a8bf1847d9fd38cb2549376",
      "parents": [
        "6a1afe3733575589a1b8682640aa05c61a6a8caa",
        "8fcd09a3e9b5af98fcef31ba0de8765c0e7e2ed8"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Dec 19 07:28:27 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 19 07:28:27 2017 +0000"
      },
      "message": "Merge \"Statsd anomaly detection atom\""
    },
    {
      "commit": "8fcd09a3e9b5af98fcef31ba0de8765c0e7e2ed8",
      "tree": "3929a3571c6608132500e4ea83b0bf677fef7850",
      "parents": [
        "112d5f09ce2c72262f5fc6ea4563f6495f2fb56c"
      ],
      "author": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Mon Dec 18 13:01:10 2017 -0800"
      },
      "committer": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Mon Dec 18 15:59:41 2017 -0800"
      },
      "message": "Statsd anomaly detection atom\n\nCreates an atom to represent when statsd\u0027s anomaly detection alert\nfires, so that statsd can log when it detects an anomaly (in the output\nand for any further processing).\n\nTest: manually confirmed that atom was logged\nChange-Id: I3376e4038bdc3402a536aab7cebad24b104a9aee\n"
    },
    {
      "commit": "2b4fc9d657feaafb654a38096ec46622dcdb37bc",
      "tree": "549f237af249ea46ff4f8b7ecaccdc24710c1935",
      "parents": [
        "4561b431acd3806b579fe7643e6bf8e74f67e509"
      ],
      "author": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Mon Dec 18 15:20:00 2017 -0800"
      },
      "committer": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Mon Dec 18 15:53:18 2017 -0800"
      },
      "message": "align metrics start time to the previous 5 min start, instead\nof the next 5 min start. Also refactor config check condition\nto be more readable.\n\nTest: unit test\nChange-Id: Iaa6b4a59d27c52996723862d92080d90c9e794cb\n"
    },
    {
      "commit": "9df9a7f78d78d422b366336ec3969eb2fd328b56",
      "tree": "65e1d9abd05729ba3e12cb673eb177e1e34deddb",
      "parents": [
        "c5f607cee93ebf0ba072f80fc0e9c4cfa14ec318"
      ],
      "author": {
        "name": "Yangster",
        "email": "yanglu@google.com",
        "time": "Mon Dec 18 13:33:05 2017 -0800"
      },
      "committer": {
        "name": "Yangster",
        "email": "yanglu@google.com",
        "time": "Mon Dec 18 14:48:35 2017 -0800"
      },
      "message": "1/ index app name.\n2/ fix a bug in app update.\n\nTest: statsd unit tests passed.\nChange-Id: I0a1c82411d89705ceaa0a2badfdd4bbb9859df3a\n"
    },
    {
      "commit": "b5c1fe39c06bcba345df6c637a46fa9b370f25ce",
      "tree": "68e25647be8c0eee10c354758b35d9807b22f009",
      "parents": [
        "6d3348451a37541ec07ba43d94dfc44fe5b24a9a",
        "31d14d72dc4f66b96fc486fef81b9df3c5ef3194"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Dec 18 16:41:15 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Dec 18 16:41:15 2017 +0000"
      },
      "message": "Merge \"rename pulled atoms to shorter names\""
    },
    {
      "commit": "e6abcbed993c81562cddb4122235fc2bcffff8e8",
      "tree": "4f3a70c7cba0f60d65587e536d5710ae6599a51e",
      "parents": [
        "dc4e426a17044f799ad1d7bd8a363022e8044619",
        "3c0b95ceb520c6b23871da90c23f89c55b76b560"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sun Dec 17 17:01:36 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Dec 17 17:01:36 2017 +0000"
      },
      "message": "Merge \"Turn off verbose logging, remove the fake config.\""
    },
    {
      "commit": "dc4e426a17044f799ad1d7bd8a363022e8044619",
      "tree": "2df2ed4889e462cbea977118053257179f8e0f80",
      "parents": [
        "8a3138d56ad238fd86d60f0d5643fb86f8775fd5",
        "d9dfda76e0aa8b8aa4d2562a7ff4259f4500e355"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sun Dec 17 16:58:46 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Dec 17 16:58:46 2017 +0000"
      },
      "message": "Merge \"add feature: GaugeMetricProducer now takes repeated list of fields bug fix: GaugeMetricProducer now works better with pulled events. unit test also includes GaugeMetricProducer_test\""
    },
    {
      "commit": "31d14d72dc4f66b96fc486fef81b9df3c5ef3194",
      "tree": "d2898cd1ecec45350d5f582a5a00e6773819731e",
      "parents": [
        "418875d9ac7d8031287da40b553e73c08a256efa"
      ],
      "author": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Tue Dec 12 17:54:33 2017 -0800"
      },
      "committer": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Sat Dec 16 20:33:09 2017 -0800"
      },
      "message": "rename pulled atoms to shorter names\n\nTest: unit test\nChange-Id: I337341dc69ea658f5972cd9962c536a1f11d77f9\n"
    },
    {
      "commit": "d6815d74dd051c0881cbbfa9fb68a8f91a6634bd",
      "tree": "74e2c342da98390369910590d39d81cb1cfbfa9e",
      "parents": [
        "13dbdde43d59cc497b18be755945d3881422fff3",
        "85ed8387135849f256cecb4429c75938ad91cd55"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sun Dec 17 03:14:27 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Dec 17 03:14:27 2017 +0000"
      },
      "message": "Merge \"align metrics to 5min bundary We use one alarm clock for all pulled atoms. If metrics from different configs are not aligned, the clock will be set to repeat at higher and higher frequency, and consume a lot of battery. Current implementation assumes a 5min minimum bucket size. New metric start time is set to be aligned to the start time of statsd in the next 5min. So it will ignore events up to 5min.\""
    },
    {
      "commit": "d9dfda76e0aa8b8aa4d2562a7ff4259f4500e355",
      "tree": "6d107b412a6aaeb49beaebd012d235f6ae431a4d",
      "parents": [
        "418875d9ac7d8031287da40b553e73c08a256efa"
      ],
      "author": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Mon Dec 11 17:41:20 2017 -0800"
      },
      "committer": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Sat Dec 16 17:12:45 2017 -0800"
      },
      "message": "add feature: GaugeMetricProducer now takes repeated list of fields\nbug fix: GaugeMetricProducer now works better with pulled events.\nunit test also includes GaugeMetricProducer_test\n\nTest: unit test\nChange-Id: Ic60f09342d14cfb107be2130d445b323a56909e0\n"
    },
    {
      "commit": "85ed8387135849f256cecb4429c75938ad91cd55",
      "tree": "ec014988fa0c5d4a500b3e4a93c00d4e14b3c0e2",
      "parents": [
        "14b1f3ede6e40606733156c431792b390cac5d17"
      ],
      "author": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Thu Dec 14 16:48:54 2017 -0800"
      },
      "committer": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Sat Dec 16 17:08:46 2017 -0800"
      },
      "message": "align metrics to 5min bundary\nWe use one alarm clock for all pulled atoms.\nIf metrics from different configs are not aligned,\nthe clock will be set to repeat at higher and higher\nfrequency, and consume a lot of battery.\nCurrent implementation assumes a 5min minimum bucket\nsize. New metric start time is set to be aligned to\nthe start time of statsd in the next 5min.\nSo it will ignore events up to 5min.\n\nalign puller alarm to minute bundary\n\nTest: unit test\nChange-Id: I77ffa3c13de363c780b1000181b9a9b780dd0846\n"
    },
    {
      "commit": "3c0b95ceb520c6b23871da90c23f89c55b76b560",
      "tree": "e3c2a1f38626d262fede788a2240f9679e7bd509",
      "parents": [
        "1beb268423054b362b3c6114cab449b4b890fb4f"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Sat Dec 16 14:34:20 2017 -0800"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Sat Dec 16 14:34:20 2017 -0800"
      },
      "message": "Turn off verbose logging, remove the fake config.\n\nTest: statsd_test \u0026 manual\nChange-Id: I43068c8db006cbbeccacaa9d8426ab4d0394313a\n"
    },
    {
      "commit": "58a6cf6afe21d7e068ae736135634e15cb138b52",
      "tree": "fb5c7d748ce9626f25e009bce793cde9da5b70a2",
      "parents": [
        "f6c6ea262d8f041704746aade185e279f3b51fa0",
        "7604aeaf99b0ee14c1f9df95db0fc1d4e75b1baa"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Dec 16 04:15:11 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Dec 16 04:15:11 2017 +0000"
      },
      "message": "Merge \"Stats log api for attribution chain.\""
    },
    {
      "commit": "f6c6ea262d8f041704746aade185e279f3b51fa0",
      "tree": "3a81d6dbfb178845e3d15b5f6a4089dd932458bc",
      "parents": [
        "7221ed9a67312a71145cbfaf396aae143e2acb21",
        "cac977204bd70cd74f437383b448cc30a656c5b8"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Dec 16 03:40:10 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Dec 16 03:40:10 2017 +0000"
      },
      "message": "Merge \"Map \"shell ime\" to \"shell cmd input_method ime\"\""
    },
    {
      "commit": "7604aeaf99b0ee14c1f9df95db0fc1d4e75b1baa",
      "tree": "aea4849d1b8ba16d2b470fa85749a2153f29e92c",
      "parents": [
        "8cf5b695cea4b197284097ec93912426c311438c"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Mon Dec 11 22:55:49 2017 -0800"
      },
      "committer": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Fri Dec 15 16:53:29 2017 -0800"
      },
      "message": "Stats log api for attribution chain.\n\nTest: all unit test passed.\nChange-Id: I628d409e517f4f95c8da1d0c7fd4d514c1d9196d\n"
    },
    {
      "commit": "cac977204bd70cd74f437383b448cc30a656c5b8",
      "tree": "32369f3c15ef9f7b3e8b8712db8404ba35e440e3",
      "parents": [
        "41b745ca0d117c07419f9255485b8ca5094c653d"
      ],
      "author": {
        "name": "Yohei Yukawa",
        "email": "yukawa@google.com",
        "time": "Fri Dec 15 16:52:05 2017 -0800"
      },
      "committer": {
        "name": "Yohei Yukawa",
        "email": "yukawa@google.com",
        "time": "Fri Dec 15 16:52:05 2017 -0800"
      },
      "message": "Map \"shell ime\" to \"shell cmd input_method ime\"\n\nThis is a follow up CL to my following CLs:\n * Use IBinder#shellCommand() for \u0027adb shell ime\u0027 [1]\n * Add a shell command to reset selected/enabled IMEs [2]\n\nPreviously\n  adb shell ime \u003ccommand\u003e\nwas an alias of\n  adb shell cmd input_method \u003ccommand\u003e\n\nWith this CL,\n  adb shell ime \u003ccommand\u003e\nis now an alias of\n  adb shell cmd input_method ime \u003ccommand\u003e\n\nThis allows us to rename a sub command \"reset-ime\" to \"reset\" without\nworrying about ambiguity about what will be reset.\n\nNote also that the built-in \"dump\" command now works only as\n  shell cmd input_method dump\n\n [1]: I9a2dbbf1d4494addbe22c82e2c416eedc4d585f2\n      926488d70d09baefee0489537b2915602deaeebf\n [2]: I1e27aa1c9edf5d9a6d529c469ad42fd1e42b13b1\n      cc97ebd031b4d4be6f69e3163c362bce6878baf1\n\nBug: 70475949\nFixes: 70731324\nTest: Manually tested as follows.\n  1. make -j SoftKeyboard\n  2. adb install -r $OUT/system/app/SoftKeyboard/SoftKeyboard.apk\n  3. adb shell ime enable com.example.android.softkeyboard/.SoftKeyboard\n  4. adb shell ime set com.example.android.softkeyboard/.SoftKeyboard\n  5. Make sure that SoftKeyboard is enabled and selected\n  6. adb shell ime reset\n  7. Make sure that SoftKeyboard is no longer enabled and selected\nChange-Id: I2a325dcd6108e357420d47880e4cbd9f81670ec9\n"
    },
    {
      "commit": "6831a2646f8d25eb8ce33653e4d3ac0020fecae9",
      "tree": "ab4b3dbfa5f82b2f76c2a67926cc32e18d4c07b9",
      "parents": [
        "73617b0cc04e82a79721a77b73daefe5a93c223f",
        "0a368b2c391dd3ebaf6b8917c16c41b65c1d5ab7"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Dec 16 00:03:53 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Dec 16 00:03:53 2017 +0000"
      },
      "message": "Merge \"Adds API for apps to push events to statsd.\""
    },
    {
      "commit": "cc1b3e0e89c738503f99a4fe23de1712425c67e4",
      "tree": "5108497edb21f746ce8c199e0bdd7afa686e73a1",
      "parents": [
        "41b745ca0d117c07419f9255485b8ca5094c653d",
        "e451de10d666d4422d27f3c26ec30aee5bf6e0d9"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Dec 15 23:47:40 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 15 23:47:40 2017 +0000"
      },
      "message": "Merge \"Add android.test.base/stubs dependency\""
    },
    {
      "commit": "de1b5562c8a6fdad1e9d2f409c7aa35a23181d34",
      "tree": "87bc8c7ed5635151bfb398cf38a308e73365cf80",
      "parents": [
        "e1080cfceb241be88698262a2fada6ac7e6693f6"
      ],
      "author": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Thu Dec 14 18:38:27 2017 -0800"
      },
      "committer": {
        "name": "Adam Bookatz",
        "email": "bookatz@google.com",
        "time": "Fri Dec 15 18:10:10 2017 +0000"
      },
      "message": "Statsd value metric anomaly detection\n\nAdd anomly detection to Value metric in statsd.\n\nTest: make statsd_test \u0026\u0026 adb sync data \u0026\u0026 adb shell data/nativetest64/statsd_test/statsd_test\nTest: run cts-dev -m CtsStatsdHostTestCases -t android.cts.statsd.HostAtomTests#testValueAnomalyDetection\nFixes: 70240042\nChange-Id: I05cf36495cdfd0ac7aa1a922f0e253a60fda1787\n"
    },
    {
      "commit": "793fdca682c5f0a2aacc55b0e2e74a93190a1547",
      "tree": "6bdcddb7b5fa581018d1f379bb954835e1ba39e5",
      "parents": [
        "648aee9407fe39a08c814543a231374baac75d11",
        "5c3296af2d2b9717065b632c1848a45b514540a2"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Dec 15 10:00:26 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 15 10:00:26 2017 +0000"
      },
      "message": "Merge \"Improve testibility of applicatin switches.\""
    },
    {
      "commit": "e451de10d666d4422d27f3c26ec30aee5bf6e0d9",
      "tree": "16c7dbe80557b7b23e241fd7ce3306f559b6d485",
      "parents": [
        "1895f2e5bb3c07b2dc85ed6267848e820d6c39b0"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Fri Dec 15 07:22:37 2017 +0000"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Fri Dec 15 07:37:51 2017 +0000"
      },
      "message": "Add android.test.base/stubs dependency\n\nIn preparation for the removal of the non-junit classes in the\nandroid.test.base library from the android.jar this adds a dependency\non android.test.base/stubs to ensure this code will continue to\ncompile.\n\nThe following change descriptions were generated automatically and so\nmay be a little repetitive. They are provided to give the reviewer\nenough information to check the comments match what has actually been\nchanged and check the reasoning behind the changes.\n\n* cmds/uiautomator/instrumentation/Android.mk\n    Added \u0027android.test.base.stubs\u0027 to LOCAL_JAVA_LIBRARIES because\n    uiautomator-instrumentation\u0027s will need them in order to compile\n    once its classes are removed from the current SDK on which it\n    currently depends.\n\n* core/tests/hosttests/test-apps/ExternalSharedPerms/Android.mk\n    Added \u0027android.test.base.stubs\u0027 to LOCAL_JAVA_LIBRARIES because\n    ExternalSharedPermsTestApp\u0027s will need them in order to compile\n    once its classes are removed from the current SDK on which it\n    currently depends.\n\n* core/tests/hosttests/test-apps/ExternalSharedPermsBT/Android.mk\n    Added \u0027android.test.base.stubs\u0027 to LOCAL_JAVA_LIBRARIES because\n    ExternalSharedPermsBTTestApp\u0027s will need them in order to compile\n    once its classes are removed from the current SDK on which it\n    currently depends.\n\n* core/tests/hosttests/test-apps/ExternalSharedPermsDiffKey/Android.mk\n    Added \u0027android.test.base.stubs\u0027 to LOCAL_JAVA_LIBRARIES because\n    ExternalSharedPermsDiffKeyTestApp\u0027s will need them in order to\n    compile once its classes are removed from the current SDK on which\n    it currently depends.\n\n* core/tests/hosttests/test-apps/ExternalSharedPermsFL/Android.mk\n    Added \u0027android.test.base.stubs\u0027 to LOCAL_JAVA_LIBRARIES because\n    ExternalSharedPermsFLTestApp\u0027s will need them in order to compile\n    once its classes are removed from the current SDK on which it\n    currently depends.\n\n* nfc-extras/tests/Android.mk\n    Added \u0027android.test.base.stubs\u0027 to LOCAL_JAVA_LIBRARIES because\n    NfcExtrasTests\u0027s will need them in order to compile once its\n    classes are removed from the current SDK on which it currently\n    depends.\n\n* tests/SurfaceComposition/Android.mk\n    Added \u0027android.test.base.stubs\u0027 to LOCAL_JAVA_LIBRARIES because\n    SurfaceComposition\u0027s will need them in order to compile once its\n    classes are removed from the current SDK on which it currently\n    depends.\n\n* tests/WindowAnimationJank/Android.mk\n    Added \u0027android.test.base.stubs\u0027 to LOCAL_JAVA_LIBRARIES because\n    WindowAnimationJank\u0027s will need them in order to compile once its\n    classes are removed from the current SDK on which it currently\n    depends.\n\nBug: 30188076\nTest: make dist\nChange-Id: I92b3ff3e5fede3d8d8ecefb0b2e1ee93c5ca9875\n"
    },
    {
      "commit": "0a368b2c391dd3ebaf6b8917c16c41b65c1d5ab7",
      "tree": "4ef577b9c57a137be83329a37037c0310c152650",
      "parents": [
        "b669be1dcca1fb131934fa6322de77f5e0c6eb7b"
      ],
      "author": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Wed Dec 06 16:28:16 2017 -0800"
      },
      "committer": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Thu Dec 14 16:19:29 2017 -0800"
      },
      "message": "Adds API for apps to push events to statsd.\n\nThis API allows app to construct custom metrics based on labels\nchosen by the app developers. Also added some buttons to manually\ntest this functionality in the dogfood app.\n\nTest: Verified that Android can be built and tested with custom app.\nBug: 69522276\nChange-Id: Ifb7abea4c1d62fb435a9cb6f32df12bc2234d82f\n"
    },
    {
      "commit": "5c3296af2d2b9717065b632c1848a45b514540a2",
      "tree": "2e122dd84b80e74d3cb3ba9c9d74e797ea38c1cb",
      "parents": [
        "0ff7a642dae1c3a0d4116fff591860b1cbcd788a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Dec 13 17:52:26 2017 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Dec 14 15:29:21 2017 -0800"
      },
      "message": "Improve testibility of applicatin switches.\n\nThings can be flaky, because window focus changes are\ndispatched to the window on a separate path from input events,\nand the window will drop events if it gets them before it sees\nthe focus change.  I am trying to mitigate this some by noting\nASAP what the next upcoming focus state will be, so we can check\nthat and dispatch it before dispatching a key event if needed.\n\nThis definitely makes things better, but not perfect.  ctate\nsuggested that maybe we should be dispatching window focus events\nthrough the input system, which at a glance sounds like a really\nreally good idea to me...  so maybe we can look at that later.\n\nAlso changed the wm command to just be a shell wrapper around\nall of the implementation that is now in WindowManagerShellCommand.\n\nAnd fixed a few places where we write debug info to streams that\nwould trigger strict mode violations that we really don\u0027t care\nabout.\n\nTest: manual\nChange-Id: I5235653bcec5522ab84c7f2e1de96d86f2f59326\n"
    },
    {
      "commit": "f09569f848ca0b81a21a74e9f4dd8bd9a886151a",
      "tree": "f952554217c69df0fce243fc0d011e5043020307",
      "parents": [
        "14b1f3ede6e40606733156c431792b390cac5d17"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Wed Dec 13 17:00:51 2017 -0800"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Thu Dec 14 09:07:54 2017 -0800"
      },
      "message": "Further reduce statsd memory usage.\n\n+ Remove the protobuf *Metric object from MetricProducers\n   -- This saves ~150 bytes per metric.\n+ Remove the StatsdConfig from ConfigManager\n   -- This saves us xKB per config.\n+ Also remove alerts from fake config to avoid crash (Bug: 70627390)\n+ Other misc fixes too.\n\nTest: statsd_test \u0026 manual\nChange-Id: Ied4eb3fa31c50599817b3a5e1caf5077c487fad2\n"
    },
    {
      "commit": "14b1f3ede6e40606733156c431792b390cac5d17",
      "tree": "4db3f04e4b4e157615c79cf754133162ecc8918b",
      "parents": [
        "4c59b32dd52f54f5c89b0a3c603f742eb2da95c8",
        "a7259abde4e89fd91404b14b4845113cd313d1ec"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Dec 14 17:05:20 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 14 17:05:20 2017 +0000"
      },
      "message": "Merge \"use running sum for ValueMetricProducer bucket simplify ValueMetricProducer logic for pulled data\""
    },
    {
      "commit": "4c59b32dd52f54f5c89b0a3c603f742eb2da95c8",
      "tree": "9a6b5b75f59c6a23131b267a16a67a8cb62981ad",
      "parents": [
        "289d960dde0f4868e200e15b8a02ae3f91c646c2",
        "b5a913cce3b7e5ba8296c7ce60d72b49fe1f8552"
      ],
      "author": {
        "name": "gaoshang",
        "email": "gaoshang@xiaomi.com",
        "time": "Thu Dec 14 16:55:21 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Dec 14 16:55:21 2017 +0000"
      },
      "message": "Merge \"input cmds: fix keyevent not support sources parameter\" am: 11ec2eb118 am: 4f697fe574\nam: b5a913cce3\n\nChange-Id: Idcaa642e763284dfde7b52f2f87e28796675b127\n"
    },
    {
      "commit": "65a885c3acb0f397fd53866150b3b10ec3e6932b",
      "tree": "bfabca4db7103e6e80a53ba3969d74bd2e290352",
      "parents": [
        "64c24880563ecbfb41ee4e77617c1c793927a7d0"
      ],
      "author": {
        "name": "gaoshang",
        "email": "gaoshang@xiaomi.com",
        "time": "Thu Dec 14 17:52:23 2017 +0800"
      },
      "committer": {
        "name": "gaoshang",
        "email": "gaoshang250@gmail.com",
        "time": "Thu Dec 14 10:09:05 2017 +0000"
      },
      "message": "input cmds: fix keyevent not support sources parameter\n\nreused args.length repalce length.\n\nhttps://issuetracker.google.com/issues/70654695\nTest: input cmds\n\nChange-Id: Ifd8600d66d1647ae677add6b9d95b1d6831d6edb\nSigned-off-by: gaoshang \u003cgaoshang@xiaomi.com\u003e\n"
    },
    {
      "commit": "a7259abde4e89fd91404b14b4845113cd313d1ec",
      "tree": "480c24621cf02d53f0200c290e6df9d024f866da",
      "parents": [
        "c9f1a9e3dd214b167a49ac4560382e2e98084ff6"
      ],
      "author": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Sun Dec 10 08:31:05 2017 -0800"
      },
      "committer": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Wed Dec 13 22:32:23 2017 -0800"
      },
      "message": "use running sum for ValueMetricProducer bucket\nsimplify ValueMetricProducer logic for pulled data\n\nTest: unit test\nChange-Id: Ic0a21a543166cc5c34c1fa505dba08d1fc2f510a\n"
    },
    {
      "commit": "c9f1a9e3dd214b167a49ac4560382e2e98084ff6",
      "tree": "9414ba21245f5e8aba454e7dbc142761fb0ec708",
      "parents": [
        "d46ac28a6f893d11375318df774bf94a97ed11fd",
        "62c220b20b3fc431c27feac29a71d040fc8e2626"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Thu Dec 14 05:33:33 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 14 05:33:33 2017 +0000"
      },
      "message": "Merge \"Fix how we build the statsd protos.\""
    }
  ],
  "next": "d46ac28a6f893d11375318df774bf94a97ed11fd"
}
