)]}'
{
  "log": [
    {
      "commit": "5b968dbe29d7d5cda5de650f6b2e410eb80c14c9",
      "tree": "8f8c03ff60df7a37fb1e04bf25f501c210060ad2",
      "parents": [
        "fb9ec66ef025fed04b12c90a0c279a8b0296cfb8",
        "d41c4220d06875cea2d19a7991c3227bd56ea611"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Nov 16 21:28:10 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 16 21:28:10 2017 +0000"
      },
      "message": "Merge \"Fix some bugs found in statsd\""
    },
    {
      "commit": "62462871b50480acc19ada846787ec7c3ee462bb",
      "tree": "37c5a48de7b28f99fc0d303281d211f76ca7fd51",
      "parents": [
        "a73e165c2ea0bb6499b89dd335d6ef878c92b8e9",
        "de4ca10e10463393bd5b4b11c30b795fc3998059"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Nov 16 18:01:22 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 16 18:01:22 2017 +0000"
      },
      "message": "Merge \"Update statsd proto comment\""
    },
    {
      "commit": "d41c4220d06875cea2d19a7991c3227bd56ea611",
      "tree": "b91a1a2185fd64a379e52be2e5352f542903e800",
      "parents": [
        "a786f00f069c33aab5171f615cb3e35ed1755ede"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Wed Nov 15 19:26:14 2017 -0800"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Thu Nov 16 09:25:53 2017 -0800"
      },
      "message": "Fix some bugs found in statsd\n\n+ in log matcher, condition tracker and duration metric\n\nTest: added unit test\nChange-Id: Id633e856ba5453842487321d7ddc0c64100e4bb8\n"
    },
    {
      "commit": "de4ca10e10463393bd5b4b11c30b795fc3998059",
      "tree": "d035e3f163c7bf4b2a07a809be40fa3f8ee207bc",
      "parents": [
        "1610206b04c16bccd0847b7af1faa2ece523850e"
      ],
      "author": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Wed Nov 15 22:57:24 2017 -0800"
      },
      "committer": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Wed Nov 15 22:58:01 2017 -0800"
      },
      "message": "Update statsd proto comment\n\nTest: not needed.\nChange-Id: I2f0c16f2e305624128eaca4658d5ccb9f2a20fe5\n"
    },
    {
      "commit": "42753a512e2719ca078851a62760a19890641e6f",
      "tree": "f61e3976b22ab4c4345765da7e0efaa3e184bd75",
      "parents": [
        "3c31b2f32a78a7944332e1d126df9917d04409af",
        "0feae94babf0518ac28b7c529b4e16762d48e6de"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Nov 16 03:34:55 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 16 03:34:55 2017 +0000"
      },
      "message": "Merge \"Fix AOSP copyright years in statsd\""
    },
    {
      "commit": "0feae94babf0518ac28b7c529b4e16762d48e6de",
      "tree": "e262d1057ceb7b7477430c21fbd3e84b0c8d6c74",
      "parents": [
        "1610206b04c16bccd0847b7af1faa2ece523850e"
      ],
      "author": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Wed Nov 15 14:38:48 2017 -0800"
      },
      "committer": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Wed Nov 15 14:39:22 2017 -0800"
      },
      "message": "Fix AOSP copyright years in statsd\n\nTest: no test needed\n\nChange-Id: I230b7d51eb00dafb16913d038475c3ac14b44096\n"
    },
    {
      "commit": "5c925ad04ffe959e8fb00253b20daf1f7128b8d6",
      "tree": "baeb11a79bc4c17186bd148b180a863231a69c15",
      "parents": [
        "a786f00f069c33aab5171f615cb3e35ed1755ede"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Wed Nov 15 14:15:46 2017 -0800"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Wed Nov 15 14:22:37 2017 -0800"
      },
      "message": "Sync the DurationMetric proto from google3.\n\nThere are other statsd_config changes for Anomaly detection, but requires\ncode change. So will sync later.\n\nTest: statsd_test\nChange-Id: I927e99bd0763cb949fe339993b232f53a4eefe7a\n"
    },
    {
      "commit": "c0c6ee6b6fb6dc8c818c7886756bb8de7a0042a5",
      "tree": "30853b2ba51f39df90a9b15459e64935a5004d43",
      "parents": [
        "4226a0c1541e442ead322d3b0aa5b6823b649ef9",
        "49a5838becae92fa3a07a488f4d1a814aa9cc570"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Nov 15 18:47:27 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 15 18:47:27 2017 +0000"
      },
      "message": "Merge changes from topic \"f2fs_gc\"\n\n* changes:\n  Run gc + fstrim for idle maintenance\n  Add \u0027idle-maint\u0027 command for use from shell\n  Add entry points to invoke idle maintenance from vold\n"
    },
    {
      "commit": "b1d9bd9c5d28413432cd071aa814ad9482764572",
      "tree": "851770cf7bb98e058afec9a3426a3962d7cc1c8f",
      "parents": [
        "a834309bd5c8ae276ae7b5e3aedffd47bb517b10",
        "0dfa752e67116940f04a988ca4a264f7140dd81f"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Nov 15 03:05:18 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 15 03:05:18 2017 +0000"
      },
      "message": "Merge \"Implement System Properties Section\""
    },
    {
      "commit": "52cd1c5717b6f3761307f26d433902f2ee6406f6",
      "tree": "b33e014f4bc97d10dcb7ea4fd74642862ced1ee3",
      "parents": [
        "a85b9919f5aa284347ea8d0bac4d1ec3242c208c"
      ],
      "author": {
        "name": "Jin Qian",
        "email": "jinqian@google.com",
        "time": "Tue Oct 17 15:51:50 2017 -0700"
      },
      "committer": {
        "name": "Jin Qian",
        "email": "jinqian@google.com",
        "time": "Tue Nov 14 15:02:53 2017 -0800"
      },
      "message": "Add \u0027idle-maint\u0027 command for use from shell\n\nTest: adb shell sm idle-maint [run|abort]\nBug: 67776637\nChange-Id: I5f20adc45aad29dc9267a70bf3eea6a1fa490688\n"
    },
    {
      "commit": "c783baca1e3062652dab2d7258df61dfa6a30d7b",
      "tree": "9fb945b6a5f256920cda0e4c8357b19ba3ed1d6d",
      "parents": [
        "ea0baebfb93806f9b1c5d90186b354872a82257c",
        "ae2df01aae2ee7076af875c04e991140f685f733"
      ],
      "author": {
        "name": "Stefan Lafon",
        "email": "stlafon@google.com",
        "time": "Tue Nov 14 22:03:54 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 14 22:03:54 2017 +0000"
      },
      "message": "Merge \"Rename \"stats_events\" as \"atom\".\""
    },
    {
      "commit": "341775bfefdbe24821dd80a4d5ea4b976f1bf051",
      "tree": "921c14a5e5e3608b2122c44a921e45a87556f766",
      "parents": [
        "fa361abde85b2bf6225f89d16e0cd9c2ca7a8a18",
        "adaf8b344e312853530e276ceff05783133ecf17"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Nov 14 20:25:09 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 14 20:25:09 2017 +0000"
      },
      "message": "Merge \"Adds client API for interacting with statsd.\""
    },
    {
      "commit": "ae2df01aae2ee7076af875c04e991140f685f733",
      "tree": "1c7d34d21d60444344cb8c1b153863702d9ae029",
      "parents": [
        "0253dd036468246b95161ae6ec1a87c7751d00a3"
      ],
      "author": {
        "name": "Stefan Lafon",
        "email": "stlafon@google.com",
        "time": "Tue Nov 14 09:17:21 2017 -0800"
      },
      "committer": {
        "name": "Stefan Lafon",
        "email": "stlafon@google.com",
        "time": "Tue Nov 14 11:56:05 2017 -0800"
      },
      "message": "Rename \"stats_events\" as \"atom\".\n\nAlso make atom WakelockStateChanged use the \"Type\" enum instead of int32.\n\nTest: Unittests are passing. Statsd is working.\n\nChange-Id: I0909e2d97297f78996a81366d66aae62d5bf5ce1\n"
    },
    {
      "commit": "0dfa752e67116940f04a988ca4a264f7140dd81f",
      "tree": "3aa662e1d9da3143bc0c3a05bf5711d346c58601",
      "parents": [
        "a379f499c8e27d2c18b7089feb18c7f0a44e0433"
      ],
      "author": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Mon Nov 06 17:43:47 2017 -0800"
      },
      "committer": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Tue Nov 14 10:54:24 2017 -0800"
      },
      "message": "Implement System Properties Section\n\nBug: 68774852\nTest: unit tested and on device tests\nChange-Id: I0d4aadf8d4203fe56e35bbfb77e5c532116fd27e\n"
    },
    {
      "commit": "d1815dc7b82f99259f6c41cfacc44972b867ef2d",
      "tree": "cfb6b2470b7c1197219ed3240d1e81d89057b2e3",
      "parents": [
        "0fbd9d163b22cc629047b5974be3bde265a51762"
      ],
      "author": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Mon Nov 13 21:43:15 2017 -0800"
      },
      "committer": {
        "name": "Yangster-mac",
        "email": "yanglu@google.com",
        "time": "Mon Nov 13 22:09:08 2017 -0800"
      },
      "message": "Sync statsd to the public proto changes:\n1/ use string id/name for all metrics/configs/matchers.\n2/ move alerts out of metric proto.\n\nTest: unit test passed.\nChange-Id: I08269f47be30f83f6dbadf873e7d62213449932b\n"
    },
    {
      "commit": "adaf8b344e312853530e276ceff05783133ecf17",
      "tree": "e650b5b1f29ba71f5eedbf16d57e4dad809fd1e6",
      "parents": [
        "2dd2cbcb12a21adccd3c349590a01e7ed009f679"
      ],
      "author": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Fri Nov 03 15:42:08 2017 -0700"
      },
      "committer": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Mon Nov 13 19:37:12 2017 -0800"
      },
      "message": "Adds client API for interacting with statsd.\n\nThis API will primarily be used by GmsCore to send updated configs.\nAlso, sending a config will implicitly notify the StatsD that this\nclient wants to know when it should request data for this config.\n\nWe send a broadcast so that all interested subscribers can know if\ndata needs to be pulled.\n\nTest: Manually tested that sending broadcast works via new adb\ncommand added in StatsService.\n\nChange-Id: I23cdd1df706036e14b32c3d01af30c3d4af819fa\n"
    },
    {
      "commit": "24cc5a807032cc49bdb60656116c8d0ce49d1e7d",
      "tree": "cf3eaf2a959a93805de2b6b8886a410e30a8a055",
      "parents": [
        "542bdb141084c4ac330cdcaf7a6919b671b3040c",
        "6736c893a73c567d3794d88ae0d17abab34b7a6f"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Nov 14 01:11:54 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 14 01:11:54 2017 +0000"
      },
      "message": "Merge \"Unit tests for ValueMetricProducer StatsPullerManager is refactored so that we can mock it. It may need more refactor pass to make is safer for longer runs.\""
    },
    {
      "commit": "6736c893a73c567d3794d88ae0d17abab34b7a6f",
      "tree": "710c2511205845b3406590524cbc7d7e18c25b00",
      "parents": [
        "e33bc3b967aef6f10df82e5b374e4b701ce6ca69"
      ],
      "author": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Thu Nov 09 10:50:09 2017 -0800"
      },
      "committer": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Mon Nov 13 13:42:17 2017 -0800"
      },
      "message": "Unit tests for ValueMetricProducer\nStatsPullerManager is refactored so that we can mock it.\nIt may need more refactor pass to make is safer for longer runs.\n\nTest: unit test\nChange-Id: Ief0c99710e4d06e1454678f8b749c9599467d114\n"
    },
    {
      "commit": "da3a2955cc91a7f960b3fdf4e95f57a512f1b7c6",
      "tree": "29c002dc36c81df6006d2976ce7cd5feb6f6f64b",
      "parents": [
        "630fc40aadf3f83671607bd6a651770958c16dfa"
      ],
      "author": {
        "name": "Mike Ma",
        "email": "yanmin@google.com",
        "time": "Mon Nov 13 12:06:45 2017 -0800"
      },
      "committer": {
        "name": "Mike Ma",
        "email": "yanmin@google.com",
        "time": "Mon Nov 13 12:16:22 2017 -0800"
      },
      "message": "Add instrumentation data to host proto lib\n\nAdd instrumentation data proto to host proto lib and add a few comment\nto am instrument.\nTest: no test needed\n\nChange-Id: Ibbb0394dcf0ad27b53d5c97104456798863ce82c\n"
    },
    {
      "commit": "e33bc3b967aef6f10df82e5b374e4b701ce6ca69",
      "tree": "b3b97072166e54b3e4666a5c4d2de1780b293404",
      "parents": [
        "7f8def9d5a71f4ccb1ecdd90637f7b3c162dcab8"
      ],
      "author": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Mon Nov 06 17:56:44 2017 -0800"
      },
      "committer": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Sat Nov 11 15:40:06 2017 -0800"
      },
      "message": "add CpuTimePerUidPuller and CpuTimePerUidFreqPuller\nNote: these pullers return monotonically increasing numbers.\nThe uids could include isolated uids that needs further translation in\nstatsd.\n\nTest: manually tested on device and check print outs\nChange-Id: I7097aec0417a3ac567b9b86149b757ac27cd58d8\n"
    },
    {
      "commit": "7f8def9d5a71f4ccb1ecdd90637f7b3c162dcab8",
      "tree": "c81c11d3db40892e16ec003968cec0b4282985ee",
      "parents": [
        "2888533e3cc288402aa0480e8aa56136b54f1c25"
      ],
      "author": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Fri Nov 03 09:33:15 2017 -0700"
      },
      "committer": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Sat Nov 11 10:49:56 2017 -0800"
      },
      "message": "pull cpu time per freq\nalso adjust lock for ValueMetricProducer.cpp\n\nTest: manual test\nChange-Id: Ib96e3011d7bcf44ac92346d880196c425623a86f\n"
    },
    {
      "commit": "2888533e3cc288402aa0480e8aa56136b54f1c25",
      "tree": "dedbde5950ce1d493bde1043f4dee4d6fccec909",
      "parents": [
        "4ae65c7a630c0a4c0684d4f9c35f74f5a637b35b",
        "e2f7f79d023f0b3ba2fee374492dde61f525ece6"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Nov 11 03:44:38 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Nov 11 03:44:38 2017 +0000"
      },
      "message": "Merge \"Implement Cpu Info Section\""
    },
    {
      "commit": "e2f7f79d023f0b3ba2fee374492dde61f525ece6",
      "tree": "8ea7efe3b552f1cb23c2f4c2ef379be6fb02f19b",
      "parents": [
        "9a753af26b2ce27c10ad215aa70cf1bcd44d7915"
      ],
      "author": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Wed Nov 01 17:08:27 2017 -0700"
      },
      "committer": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Fri Nov 10 17:34:07 2017 -0800"
      },
      "message": "Implement Cpu Info Section\n\nSupport carriage return in Read class, and add a new way to parse lines\nwhich is not able to split purly by delimiters\n\nBug: 65642861\nTest: unit test and on device test\nChange-Id: Ib82dd4e458bb7d2fa33462b23fbe11b828325916\n"
    },
    {
      "commit": "87244f1f550937dd006e6e07052b932d906f3a5d",
      "tree": "80aa6bca27836b19ca75964a3d09257185ca750e",
      "parents": [
        "01528f4f2b2d7ccec4b4c4c4ab73584880103975",
        "4e6364ac1cc272098c57c3e166a3518d1495a48e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Nov 11 01:03:59 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Nov 11 01:03:59 2017 +0000"
      },
      "message": "Merge \"make statsd less chatty.\""
    },
    {
      "commit": "01528f4f2b2d7ccec4b4c4c4ab73584880103975",
      "tree": "9ec372f2ef3838c828daca35c36cdd62be838722",
      "parents": [
        "88a1719fda177269152e5480d51eb6d85d06ad75",
        "b0378b093d9b937fe9a731a601d670d50f263078"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Nov 11 00:46:54 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Nov 11 00:46:54 2017 +0000"
      },
      "message": "Merge \"1. Add FIELD_COUNT_REPEATED bit masks to repeated fields that were previously missing 2. Resolve segfault when serializing proto into vector of uint8_t 3. Add a local byte size variable for EventMetric data as we cannot call size() of ProtoOutputStream before we finish writing. 4. Replace hardcoded conversion of second to nano second with NS_PER_SEC\""
    },
    {
      "commit": "4e6364ac1cc272098c57c3e166a3518d1495a48e",
      "tree": "226b3cc2cea2ead79ed20728864e958c23675c6e",
      "parents": [
        "8c07286d2c5b1a2cce6f1ce3fe48fe19cacdf61a"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Fri Nov 10 14:35:58 2017 -0800"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Fri Nov 10 14:35:58 2017 -0800"
      },
      "message": "make statsd less chatty.\n\nTest: builds and adb logcat\nChange-Id: I06ee9cce1844b21ed3960bbaf76262fca3357bf4\n"
    },
    {
      "commit": "885738ffbe7a10fa8fe195730b110aaaf7ad4a59",
      "tree": "f6ae635ec8a017e4db04167d511950276ac902f7",
      "parents": [
        "917bdb1b8fbb7df6f60ee5ff03c94af1c0827964",
        "254102d858942393482589b8f1e6102b33797b58"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Nov 10 19:14:43 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 10 19:14:43 2017 +0000"
      },
      "message": "Merge \"Remove unnecessary parameter WriteStringToFile\""
    },
    {
      "commit": "b0378b093d9b937fe9a731a601d670d50f263078",
      "tree": "e7ee98225da2cb458992f393fc4eaea5f475b416",
      "parents": [
        "c8e3c7c816a4d9de42579df11d9302e117070ea1"
      ],
      "author": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Thu Nov 09 20:36:25 2017 -0800"
      },
      "committer": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Fri Nov 10 11:09:20 2017 -0800"
      },
      "message": "1. Add FIELD_COUNT_REPEATED bit masks to repeated fields that were previously missing\n2. Resolve segfault when serializing proto into vector of uint8_t\n3. Add a local byte size variable for EventMetric data as we cannot call\nsize() of ProtoOutputStream before we finish writing.\n4. Replace hardcoded conversion of second to nano second with NS_PER_SEC\n\nTest: statsd, statsd_test\n\nChange-Id: I47a2ce2b05e6191c18596489682118edcb41e945\n"
    },
    {
      "commit": "51f29ce476ad4546b005b19645155a21c588aa51",
      "tree": "cfeb8788121c2a60cb728d7403c64cf11587124a",
      "parents": [
        "3f6d0dca224cc118d5526842cf9ac3a86eb4dbc3",
        "967b2051fe17fa3c38d248a556f8c4ff21a573a7"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Nov 10 18:32:57 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 10 18:32:57 2017 +0000"
      },
      "message": "Merge \"Make SimpleCondition satisfactorily complicated.\""
    },
    {
      "commit": "254102d858942393482589b8f1e6102b33797b58",
      "tree": "406b3d2a0049994d9b496770f7860536f48b566c",
      "parents": [
        "5bb66e73ec479a34ee58f06feccf1d7db4677f3e"
      ],
      "author": {
        "name": "Wei Wang",
        "email": "wvw@google.com",
        "time": "Thu Nov 09 21:45:29 2017 -0800"
      },
      "committer": {
        "name": "Wei Wang",
        "email": "wvw@google.com",
        "time": "Fri Nov 10 17:32:25 2017 +0000"
      },
      "message": "Remove unnecessary parameter WriteStringToFile\n\nBy default, WriteStringToFile will not follow link, the \u0027false\u0027\nparameter is unnecessary.\n\nTest: build\nChange-Id: Ied6dcbf2a85533108dc2f6d71a4571b44684e800\n"
    },
    {
      "commit": "967b2051fe17fa3c38d248a556f8c4ff21a573a7",
      "tree": "1027428b210f6a8e0926ad702d3345aa3eb81bdd",
      "parents": [
        "6ef8030a8e18cf7b25726dca9077727a031054cc"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Tue Nov 07 16:36:43 2017 -0800"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Fri Nov 10 08:49:05 2017 -0800"
      },
      "message": "Make SimpleCondition satisfactorily complicated.\n\n+ Support nested counting\n+ Support StopAll\n+ Added default_condition to SimpleCondition config\n+ Some refactoring/clean up\n+ Added unit tests\n\nTest: Added unit tests, statsd_test\nChange-Id: I6564ac2e068ce6810e8090c0818064c625c7847a\n"
    },
    {
      "commit": "570d4db0c9d46458b3bda68e5a44a8d1ea38cbe4",
      "tree": "9172d094b27a7a6926c9abe3f0c0b43b1480fe68",
      "parents": [
        "fd1c507884d9aa7d43e58de5814136dba16da6a9",
        "21582961d779ea7190bd35a07805b9e41b43b05c"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Nov 09 23:53:58 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 09 23:53:58 2017 +0000"
      },
      "message": "Merge \"Tracks isolated uid\u0027s and their parent uid.\""
    },
    {
      "commit": "78c059ffe28ad6e0b23471ffa7e77fc2b444f191",
      "tree": "99819388d71b5cff5f3e7b140f2051054fc51686",
      "parents": [
        "968dbf4c7fe98bf64e6c671164767c3d3cd814bd",
        "17adac9cf3e03ad95372eb8657b26909d0414ac0"
      ],
      "author": {
        "name": "Howard Ro",
        "email": "yro@google.com",
        "time": "Thu Nov 09 23:37:20 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 09 23:37:20 2017 +0000"
      },
      "message": "Merge \"Finish migrating to use ProtoOutputStream. This change will take the outputs of each MetricProducer\u0027s and merge the results into ConfigMetricsReport which holds ConfigKey, repeated field of StatsLogReport, and UidMap. The data will be represented as vector\u003cuint8_t\u003e which can be passed down to binder call for clients to pick up. Also, all unnecessary dependencies to stats_log proto have been removed.\""
    },
    {
      "commit": "21582961d779ea7190bd35a07805b9e41b43b05c",
      "tree": "16d577de6703e5f2f87957a5e753734be0e48240",
      "parents": [
        "69dde2ed8d626fecfef32790e324398dcb7f3cad"
      ],
      "author": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Wed Nov 01 17:32:46 2017 -0700"
      },
      "committer": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Thu Nov 09 13:39:43 2017 -0800"
      },
      "message": "Tracks isolated uid\u0027s and their parent uid.\n\nWe push events from BatteryStatsImpl if an isolated uid is added or\nremoved and we have a custom rule in statsd to use these events to\nupdate our uid map. In the future, we need to use this map to\nconvert all incoming uid\u0027s to their host uid.\n\nTest: Added unit-test to UidMap_test.\nChange-Id: I33c0451eb2c886161f22dd12e479d216fad0940d\n"
    },
    {
      "commit": "3eba62186592382ed3d97cecca0c547487e4b2e4",
      "tree": "c605ab8d08344c48441169e759c92e6d78a968d9",
      "parents": [
        "45a9600e68f3e356c5dbc34d7e9812a4e99279e7"
      ],
      "author": {
        "name": "Yang Lu",
        "email": "yanglu@google.com",
        "time": "Wed Oct 25 19:54:45 2017 -0700"
      },
      "committer": {
        "name": "Yangster",
        "email": "yanglu@google.com",
        "time": "Thu Nov 09 12:32:13 2017 -0800"
      },
      "message": "Update CountAnomalyTracker to handle slicing.\n\nRe-added CountAnomalyTracker (under the name DiscreteAnomalyDetector).\nIt is now able to handle dimensions.\n\nTest: unit test passed.\n\nChange-Id: I133fcf6db99b9e305756f7ee5891c25f0f276348\n"
    },
    {
      "commit": "17adac9cf3e03ad95372eb8657b26909d0414ac0",
      "tree": "e670fb86237e80349ac694dd19042323a3d90236",
      "parents": [
        "4a3d844742fca89c142ee24a469830d435d64689"
      ],
      "author": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Wed Nov 08 23:16:29 2017 -0800"
      },
      "committer": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Wed Nov 08 23:40:28 2017 -0800"
      },
      "message": "Finish migrating to use ProtoOutputStream. This change will take the\noutputs of each MetricProducer\u0027s and merge the results into\nConfigMetricsReport which holds ConfigKey, repeated field of\nStatsLogReport, and UidMap. The data will be represented as\nvector\u003cuint8_t\u003e which can be passed down to binder call for clients to\npick up. Also, all unnecessary dependencies to stats_log proto have been\nremoved.\n\nTest: statsd, statsd_test\nChange-Id: Ia69137cbc8613644a892e6be1e87b4858bd39fe3\n"
    },
    {
      "commit": "0a6e480d991764214169277621d364f77c93f4db",
      "tree": "75eef90db18ce30d0c5e43686f9b773fdcc8d531",
      "parents": [
        "0fcb56c9916a8edec6e5d8ff444f7cdb675d4a9f",
        "2b0f88678b2877a8e9f83cea60f097322b078367"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Nov 08 03:26:53 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 08 03:26:53 2017 +0000"
      },
      "message": "Merge \"Migrate all remaining MetricProducers to use ProtoOutputStream\""
    },
    {
      "commit": "2b0f88678b2877a8e9f83cea60f097322b078367",
      "tree": "69ed35bb538be0a426ffd9e1c4c2dbafd896585d",
      "parents": [
        "6c5c1d73461880b55c8f08f3b38197c290524560"
      ],
      "author": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Mon Nov 06 14:27:31 2017 -0800"
      },
      "committer": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Tue Nov 07 17:33:37 2017 -0800"
      },
      "message": "Migrate all remaining MetricProducers to use ProtoOutputStream\n\nTest: statsd, statsd_test\nChange-Id: I1087e1c1ffb372ca288dfc575cb7a372b11ce8c5\n"
    },
    {
      "commit": "508cce3f4a6b1644bd2bff72e52d44466cdd2da6",
      "tree": "bd986815a298da78e2733a484b4086b7dac9d49f",
      "parents": [
        "b54be8de65b09c85992b30dbb1d52032f0498b6d",
        "7e19f53f75386eab289a2ddf33dd6619775d6f21"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@google.com",
        "time": "Tue Nov 07 19:23:25 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 07 19:23:25 2017 +0000"
      },
      "message": "Merge \"Abort long-running benchmarks, report progress.\""
    },
    {
      "commit": "7e19f53f75386eab289a2ddf33dd6619775d6f21",
      "tree": "ff9dc83f1de638ecdc3450f587ed7d5903ab92d1",
      "parents": [
        "aa422681a68e8ec7cdfce7e543295548a528f289"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Nov 06 13:54:11 2017 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Nov 07 09:51:53 2017 -0700"
      },
      "message": "Abort long-running benchmarks, report progress.\n\nA typical storage device finishes the benchmark in under 10 seconds,\nbut some extremely slow devices can take minutes, resulting in a\nconfusing UX that looks like we\u0027ve frozen.  Even worse, we keep\nchurning through all that I/O even though we know the device will\nblow past our user-warning threshold.\n\nSo periodically check if we\u0027ve timed out, and also use that to report\nprogress up into the Settings UI.\n\nTest: manual\nBug: 62201209, 65639764, 67055204\nChange-Id: Id28e63a7ea1476d83184abab5aea737a1d193f3a\n"
    },
    {
      "commit": "93fe3a34a02c673eaee4a2d18565ba8df20685cb",
      "tree": "b23a79f6622f54662de9c77a42a0a4f126398824",
      "parents": [
        "d7f98747b37882c9e0821287d8dfa43f72e8c95f"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Thu Nov 02 13:52:59 2017 -0700"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Mon Nov 06 17:20:10 2017 -0800"
      },
      "message": "Add unit tests for CountMetricProducer, EventMetricProducer\n\nAnd other miscellaneous fixes.\n+ clang-format\n+ 2 bug fixes, one in dump-report command, one in ResourcePowerManagerPuller\n\nTest: statsd_test\n\nChange-Id: Ibd164d948ad62adcc529d813df1210781e38be47\n"
    },
    {
      "commit": "d7f98747b37882c9e0821287d8dfa43f72e8c95f",
      "tree": "00e5f5ec27554b1f1c42e81cc2134ce29beb5985",
      "parents": [
        "7811c6b89a31c6ce6bdc628adab8d9365eeb88d4",
        "4037fe04d2cd4a8ef8e8cb9fcc490d71a7adbeeb"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Mon Nov 06 23:56:54 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Nov 06 23:56:54 2017 +0000"
      },
      "message": "Merge \"cmds: add #!s\" am: 8911c35df3 am: 2c61e3de27\nam: 4037fe04d2\n\nChange-Id: If3ccdda50e4542c62a99021576a7717632e5dd40\n"
    },
    {
      "commit": "4037fe04d2cd4a8ef8e8cb9fcc490d71a7adbeeb",
      "tree": "7096e9e90ef0a3f15f23b88c8ec17de6ca9fb0ef",
      "parents": [
        "b567ea9ddad6a6486b585f6ed27317561425f2e8",
        "2c61e3de27d42c7ee5c24fad695804979df2fb55"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Mon Nov 06 23:45:01 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Nov 06 23:45:01 2017 +0000"
      },
      "message": "Merge \"cmds: add #!s\" am: 8911c35df3\nam: 2c61e3de27\n\nChange-Id: Ifb1e12b63312570b5451b0e548adf0a5d25c4010\n"
    },
    {
      "commit": "b64fad915126b0c9616ee0a6030844514bccfb11",
      "tree": "1870d863397a6d688c7d655aede464d85c298df1",
      "parents": [
        "d72e3a66daec08050cadec9be1d7671358db5e84",
        "8a0595f498c57b6ca2ad75ce649dc7ab60cc9f97"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Nov 06 21:37:41 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Nov 06 21:37:41 2017 +0000"
      },
      "message": "Merge \"Fix the nullptr bug after move operation.\""
    },
    {
      "commit": "8a0595f498c57b6ca2ad75ce649dc7ab60cc9f97",
      "tree": "7db8691cbe30365f2297242b9b58e710a91e7991",
      "parents": [
        "a7d81598b5cd7c12e97f64015c9f5e316eadaf13"
      ],
      "author": {
        "name": "Yangster",
        "email": "yanglu@google.com",
        "time": "Mon Nov 06 09:34:01 2017 -0800"
      },
      "committer": {
        "name": "Yangster",
        "email": "yanglu@google.com",
        "time": "Mon Nov 06 11:38:30 2017 -0800"
      },
      "message": "Fix the nullptr bug after move operation.\n\nTest: passed\nChange-Id: I1433b59ffe8fef1b26c424a535c30a4d1e15dff2\n"
    },
    {
      "commit": "6c1688850eb7b3ada9cd9e191bf31c4153ea01fd",
      "tree": "c441779f39476523ca38538a249ef8791daa531e",
      "parents": [
        "8f380ab29c8606bca861ba21eee52cedfbc99f46"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Sat Nov 04 15:58:58 2017 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Sun Nov 05 01:07:30 2017 -0700"
      },
      "message": "cmds: add #!s\n\nWithout this, exec()ing these fails.\n\nFound with `grep -L bin/sh $(grep -Rl Script)`\n\nBug: None\nTest: exec()ed each of these scripts; I no longer get \"exec format\nerror\" for any of them.\nChange-Id: I47db5007e5cc14ab91eb846b7bffecb925d37874\n"
    },
    {
      "commit": "1d4d686001b220e114df737154f143ffabc212f1",
      "tree": "114e010b3b76d3c4112518b811b967d7efbd6dba",
      "parents": [
        "f8a6f1da8f7aa9b782f20c3dd0246534e90d34d6"
      ],
      "author": {
        "name": "Yangster",
        "email": "yanglu@google.com",
        "time": "Tue Oct 31 12:58:51 2017 -0700"
      },
      "committer": {
        "name": "Yangster",
        "email": "yanglu@google.com",
        "time": "Fri Nov 03 16:42:43 2017 -0700"
      },
      "message": "Gauge metric producer.\n\nTest: manual tests passed for pushed device temperature.\nChange-Id: I7592a4c04666606b745cdb41db8f9d8a96a966da\n"
    },
    {
      "commit": "896b6e4b9001f51cede73b7e3b681c01e3c82e75",
      "tree": "d1f5114a3a18bfc6575f60e283456ff0f181f483",
      "parents": [
        "bbea453b33e4cda0e435438344aabc523471830b",
        "5305e1ddc22bfe9ad941cb2550987aaba8de234c"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Nov 03 01:54:40 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 03 01:54:40 2017 +0000"
      },
      "message": "Merge \"pull resource power manager stats into statsd\""
    },
    {
      "commit": "6462f4564e3e5aff44f23686a65baa1a5b4057a5",
      "tree": "5b70fe7510a8e68d69094d8e0b5b64acca0a1dcc",
      "parents": [
        "9d6cad5a4aa6f9dd717b1e4d6ab0b7294e44094c",
        "24809bdb45c28244aeaa9c1795581d685780645c"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Nov 02 22:35:54 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 02 22:35:54 2017 +0000"
      },
      "message": "Merge \"1. Enable FIELD_TYPE IDs defined in ProtoOutputStream 2. Migrate CountMetricProducer to use ProtoOutputStream\""
    },
    {
      "commit": "5305e1ddc22bfe9ad941cb2550987aaba8de234c",
      "tree": "6327d37eec07224d85b1e91f67dd2cfc582c7a92",
      "parents": [
        "36e94d071c5c590d70a552dd4daed1d39a0e83f9"
      ],
      "author": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Tue Oct 31 13:49:36 2017 -0700"
      },
      "committer": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Thu Nov 02 14:34:05 2017 -0700"
      },
      "message": "pull resource power manager stats into statsd\n\nTest: tested on device and check output\nChange-Id: I65932a5527d6099e12546b6928a24f3616e54e16\n"
    },
    {
      "commit": "9cc9ad632b25e7ebbb680654dcc4561b02f088cb",
      "tree": "46ffc3c1982a143915035dadab5b5775f9a9d485",
      "parents": [
        "0d16870b691611b983c49f68fb293b7082f0b5d8",
        "be6de3017b2045926424dcbc8b65ce63376963a2"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Nov 02 18:19:37 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 02 18:19:37 2017 +0000"
      },
      "message": "Merge \"Enable Window Dumpsys Section\""
    },
    {
      "commit": "24809bdb45c28244aeaa9c1795581d685780645c",
      "tree": "39298182a6d42155607aed884087cd1903c711c4",
      "parents": [
        "afbacda2a520a55dc7f0fce2bd33bf462d5dc6bc"
      ],
      "author": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Tue Oct 31 23:06:53 2017 -0700"
      },
      "committer": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Thu Nov 02 11:13:18 2017 -0700"
      },
      "message": "1. Enable FIELD_TYPE IDs defined in ProtoOutputStream\n2. Migrate CountMetricProducer to use ProtoOutputStream\n\nTest: statsd, statsd_test\nChange-Id: I33a1ea77a49b045818a48923b2263cb594ab0013\n"
    },
    {
      "commit": "0978e7f592c5e665ffad88b56a4e6495e56962c0",
      "tree": "20b3b0668d05a17dd5bb3c56f8ff00d7eee255f1",
      "parents": [
        "ac32a352dafaa03851b52d6bfe63058d64333269",
        "c8a4324855ff31f605fe28342673945dbf413e8d"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Nov 02 10:11:05 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 02 10:11:05 2017 +0000"
      },
      "message": "Merge \"Adds pulling for network bytes for statsd.\""
    },
    {
      "commit": "6ca5c8495aaa5d24d4651e6e13fe4a883dcd11a7",
      "tree": "a6347b8aa15eca87ef68aed364d383480df52e85",
      "parents": [
        "afbacda2a520a55dc7f0fce2bd33bf462d5dc6bc",
        "a3bf0509e01c6b32a13cfd16060e4a537706f231"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Nov 02 08:26:49 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 02 08:26:49 2017 +0000"
      },
      "message": "Merge \"Fixes LogEvent constructor to use reference.\""
    },
    {
      "commit": "c8a4324855ff31f605fe28342673945dbf413e8d",
      "tree": "fa6b2c3b43032c2a61db338b2eed487b2989f205",
      "parents": [
        "afbacda2a520a55dc7f0fce2bd33bf462d5dc6bc"
      ],
      "author": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Tue Oct 17 16:23:28 2017 -0700"
      },
      "committer": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Thu Nov 02 00:41:51 2017 -0700"
      },
      "message": "Adds pulling for network bytes for statsd.\n\nAdds atoms to collect network bytes transmitted and received via wifi\nand mobile data. We need to get the list of correct ifaces from\nBatteryStats since NetworkStatsService only tracks the mobile ifaces.\nWe split the atoms so that we can also capture metrics sliced on\nforeground and background since they are available from the kernel.\nAlso adds an atom for the Kernel Wakelocks.\n\nTest: Manually tested with adb shell cmd stats pull-source after\nmodifying the StatsPullerManager.cpp\n\nChange-Id: I9467afad799c6d97560e868f8625fefae5c2b5e1\n"
    },
    {
      "commit": "3d4f604a402544d9ce11965a80fdff2cacda16a7",
      "tree": "7927e06f4ef0eba44c61cef4811259fbfcc91085",
      "parents": [
        "c76ca48825cf82eabe65ec2acb538b028993480e"
      ],
      "author": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Fri Oct 27 15:39:34 2017 -0700"
      },
      "committer": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Wed Nov 01 21:05:40 2017 -0700"
      },
      "message": "Log when app move to foreground or background.\n\nTogether with screen state change, we will have appusage info.\n\nTest: manually test on device\nChange-Id: Ie9cfe0376cf0d6339be5e8e96f7b360c3f0771d6\n"
    },
    {
      "commit": "e6c492bf562d70ad96c1721138682283b987ee9a",
      "tree": "ffe39abb720b0b6b4fa839b101553730c4a04a67",
      "parents": [
        "5e96c6c0dbd2e2ebe3df761c98ac429d0b1d5ccd",
        "d2239828d608a936e8a92319ce9c2b415998acb8"
      ],
      "author": {
        "name": "Mike Ma",
        "email": "yanmin@google.com",
        "time": "Thu Nov 02 03:00:07 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 02 03:00:07 2017 +0000"
      },
      "message": "Merge \"Record proto to file in am instrument\""
    },
    {
      "commit": "be6de3017b2045926424dcbc8b65ce63376963a2",
      "tree": "c4d89ef04122743902ff5b64cc7825cb466c7584",
      "parents": [
        "6b0ea8ae9334f2aab85fe470690133844dc0e8ee"
      ],
      "author": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Tue Oct 24 12:30:24 2017 -0700"
      },
      "committer": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Wed Nov 01 18:24:57 2017 -0700"
      },
      "message": "Enable Window Dumpsys Section\n\nProtobuf defines classes, which can have self recursive message\ndefinitions and cause a bug in generating privacy flags.\nSolve the problem here. The details is in incident_section_gen/main.cpp.\nThe logic is a bit complicated to address more than one level of self\nrecursion proto message definition.\n\nAlso solve a bug when PrivacyBuffer strips fields.\nModify PRIVACY_POLICY_LIST to be type Privacy** in order to allow\ninitialization by a method.\n\nBug: 68162512\nTest: unit tested and on device tests\nChange-Id: I1d0b79f6813e5fd66c4cf5823d0fa17efc57bb1d\n"
    },
    {
      "commit": "a3bf0509e01c6b32a13cfd16060e4a537706f231",
      "tree": "2a1b8780d41e1178d368aeffd49554bcc771ad13",
      "parents": [
        "1b7c2e9f575fca61fb8854df5dbe3f6bd9e4aa59"
      ],
      "author": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Wed Nov 01 16:57:43 2017 -0700"
      },
      "committer": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Wed Nov 01 17:02:33 2017 -0700"
      },
      "message": "Fixes LogEvent constructor to use reference.\n\nPreviously when fixing LogEvent missing strings because of pointer\nlifetime issues, I had the constructor for LogEvent pass log_msg by\nvalue. This fixes log_msg to pass by reference again so that we avoid\nwasting memory.\n\nTest: Checked statsd unit-tests still pass.\nChange-Id: I94ac4d1bed19fec19d44e27fe94e07ab30383363\n"
    },
    {
      "commit": "b3dda41a5a48ddfa44dc8fa939ab495926a0195d",
      "tree": "452181236dd41eae227390d496ae691599cd29d7",
      "parents": [
        "34961873947d64896cd392af81b57ffa393f7175"
      ],
      "author": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Tue Oct 24 13:41:59 2017 -0700"
      },
      "committer": {
        "name": "Chenjie Yu",
        "email": "cjyu@google.com",
        "time": "Wed Nov 01 15:58:45 2017 -0700"
      },
      "message": "reretry ValueMetric implementation and pulling mechanism\n\nNote:\nThis is for value metric. The default operations is sum the diffs.\nThe test uses kernel wake lock, which also needs dimension by kernel\nwake lock name.\n\nThe test is a bit cumbersome as it needs StatsCompanionService to do\nthe alarm, which is not exact alarm.\n\nThe internal state of a slice of bucket would look something like this:\n\n4:ipc0000005e_727_android.hardwar\n0      0\n4:SensorService_wakelock\n40      64\n4:ipc0000005c_727_android.hardwar\n...\n\nTest: manual test on device.\nChange-Id: I2ed0ac7d3c5fcba8b7611d46f38a38ffd8bdc92a\n"
    },
    {
      "commit": "d2239828d608a936e8a92319ce9c2b415998acb8",
      "tree": "853e1ee7885b54411e32bdefb933655c2c16c661",
      "parents": [
        "f8a9169949c589755d300530f7b2390e687a9f8b"
      ],
      "author": {
        "name": "Mike Ma",
        "email": "yanmin@google.com",
        "time": "Tue Oct 31 12:30:42 2017 -0700"
      },
      "committer": {
        "name": "Mike Ma",
        "email": "yanmin@google.com",
        "time": "Wed Nov 01 14:20:31 2017 -0700"
      },
      "message": "Record proto to file in am instrument\n\nAdd an option -f to record instrumentdata proto produced by am instrument\nto a file in addition to printing to stdout. Default path is\n/sdcard/instrument-logs/log-yyyyMMdd-hhmmss-SSS.instrumentation_data_proto.\nIf the file exits, it will be deleted before writing. Path can be changed\nvia optional \u003cFILE\u003e argument after -f.\nIf -f and -m are both present, proto will be written to a file and print\nto stdout.\n\nTest: build, flash and run:\nbit -bi FrameworksCoreTests\nadb shell am instrument -w -r -f tmp/tmp.log \\\n-e class com.android.internal.os.BatteryStatsNoteTest \\\ncom.android.frameworks.coretests/android.support.test.runner.AndroidJUnitRunner\n\nChange-Id: Iabc320c066d5995eee842c26416623eeb3d403f4\n"
    },
    {
      "commit": "53f801163c3df707d846de8875cf92974d5400a8",
      "tree": "4d36b957366c46e4ac08494cf544eec87882cbe3",
      "parents": [
        "71da71e44571009fdb2ab3d3e65b1aee6eac4c05",
        "5154a379303ab90a2b2914676a4441917a329b5d"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Nov 01 19:27:56 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 01 19:27:56 2017 +0000"
      },
      "message": "Merge \"Adding multi layer aggregation in DurationMetric\""
    },
    {
      "commit": "f8a9169949c589755d300530f7b2390e687a9f8b",
      "tree": "e0f2383103f318159b74b3be543bce8bc472920b",
      "parents": [
        "3dd0c6680eaa8fc8e126432ded945b306c0d4bbe",
        "c28b2bbb00b62aa1919fe63989480d21cc605c25"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Nov 01 17:41:22 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 01 17:41:22 2017 +0000"
      },
      "message": "Merge \"Adds logging to push settings changed to statsd.\""
    },
    {
      "commit": "3dd0c6680eaa8fc8e126432ded945b306c0d4bbe",
      "tree": "4840f398b1870751248b729cd5084faeb5ddb344",
      "parents": [
        "6b0ea8ae9334f2aab85fe470690133844dc0e8ee",
        "d6896898912eb1fc2c8976dce4340ab8d4e8d22f"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Nov 01 17:40:10 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 01 17:40:10 2017 +0000"
      },
      "message": "Merge \"Updates uidmap to update snapshots and upload.\""
    },
    {
      "commit": "5154a379303ab90a2b2914676a4441917a329b5d",
      "tree": "eed7f5ea48e8f21770acd545faa1a03171c42de6",
      "parents": [
        "473b3345a763d45ee93214322f8d984ed4dd60af"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Mon Oct 30 22:57:06 2017 -0700"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Wed Nov 01 10:07:21 2017 -0700"
      },
      "message": "Adding multi layer aggregation in DurationMetric\n\nNewly supported metrics examples:\n\n1) Compute [Total|Max] duration of [an app] holding [ANY] wake lock while [this app] is in\n   [background] and [screen off], bucket size 30seconds, and slice output by uid.\n\n2) Compute [Total|Max] duration of [ANY app] holding [ANY] wake lock while [this app] is in\n   [background] and [screen off], bucket size 30 seconds.\n\n+ DurationMetric proto has a \"what\" which is a SimpleCondition. It defines the atom level start\n  and stop of the duration timer, and it has its atom dimension. e.g., for wake locks, the atom\n  dimensions wil be uid and wl name.\n\n+ Now dimension is explicitly specified in SimpleCondition proto instead of inferred from the \"link\"\n\n+ Added support for \"Or\" and \"Max\" through 2 layers of aggregation.\n\nTODO: (1) The way we track slicedCondition in duration metric is not efficient. optimize!\n      (2) The output dimension should all use int32 instead of KeyMatcher. Fix in a future cl.\n\nTest: Added some unit tests using gmock. Will add more unit tests.\n\nChange-Id: I58a827624f01f9a54fcb80709c4de4ff94a8bc67\n"
    },
    {
      "commit": "c28b2bbb00b62aa1919fe63989480d21cc605c25",
      "tree": "089c258713a9145b7a428e8a71562bcde8ddb14d",
      "parents": [
        "aaad26df79cecad92e343746e300ed168dafe440"
      ],
      "author": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Tue Oct 24 12:52:52 2017 -0700"
      },
      "committer": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Tue Oct 31 18:30:57 2017 -0700"
      },
      "message": "Adds logging to push settings changed to statsd.\n\nIntroduces atom and logging for every time a setting is updated.\nWe also include the previous value to validate our logging\ndata quality. We need to add the INTERACT_ACROSS_USERS_FULL\npermission to prevent a security exception during testing; since the\nlogging occurs from system_server uid, this security exception should\nnot occur normally.\n\nTest: Manual by inspecting the statsd output while toggling settings.\nChange-Id: I92ca2afa596e54e61936e22611d749bb60ccb364\n"
    },
    {
      "commit": "04625ad4886a478bf74bbfc13937c10fa63eb272",
      "tree": "ba39988adb170b2e6e744ab304de7f8846a4d444",
      "parents": [
        "eb7d335641ec1b9c91c1609a94cb1cbdba1d3987"
      ],
      "author": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Tue Oct 17 18:29:33 2017 -0700"
      },
      "committer": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Tue Oct 31 16:54:38 2017 -0700"
      },
      "message": "Refactor incident_helper to use protoutil and cppstream plugin.\n\n1. Split the parsers to its own file to prevent all the parsers in one\ngaint file.\n\n2. Completely get rid of protobuf-cpp-full in incident_helper, use\nProtoOutputStream and cppstream instead, the incident_helper binary is\nreduced from ~500K to ~113K.\n\n3. Write data to protobuf even its values are zero/default, the reason\nis for example we have a repeated int32 orders \u003d 1; and people\nexplicitly append 0 so the total repeated field has 10 values, if zero\nis not written to serialized data, this repeated field will only have 9\nvalues which is not what we want at first place. This also aligns with\nthe default protobuf serialization behavior in incident_helper_test.\n\n4. Use Android.bp for protoutil lib since it is not able to depend on\nlibs compiled by .mk file, it works the other way.\n\n5. Add a new custom message option for streaming_proto, if specified,\nthe cppstream will create extra metadata to get field ids by field name.\nA Table class is created in incident_helper to use it.\n\nBug: 67860303\nTest: unit tested as well as on device test\nChange-Id: I8e136fd15f343a4a623d20910ec64b622b478a3e\n"
    },
    {
      "commit": "d6896898912eb1fc2c8976dce4340ab8d4e8d22f",
      "tree": "f1c78fef4d5b739458cac7542b04465985e3bb1f",
      "parents": [
        "2141c451711664892a105009f3a3b60e4cad1452"
      ],
      "author": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Wed Oct 25 11:49:03 2017 -0700"
      },
      "committer": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Tue Oct 31 16:20:53 2017 -0700"
      },
      "message": "Updates uidmap to update snapshots and upload.\n\nWe send a snapshot of all installed apps with their uids every time\na user is added or removed and when statsd is started.\nWe keep track of the latest timestamp when a config key has retrieved\nthe UID map data. This allows us to remove older data when we\u0027re\nguaranteed that all config sources have retrieved the old data.\n\nTest: Added more unit tests to UidMap_test and passed on marlin-eng.\nChange-Id: I34a3d61e75eedec44b98d896d7f6db0bc383f46a\n"
    },
    {
      "commit": "ad5570f58d40b7997afeba337f83dda4ae9a5476",
      "tree": "ca1554d5bbe6466c6b0f3d0383c73bbed6515b78",
      "parents": [
        "81c671da60a1d27407846039308642e71ab16c13",
        "ca3872ce36c94090ae18519dc7fe0cf39d834c4a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Oct 31 19:55:42 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 31 19:55:42 2017 +0000"
      },
      "message": "Merge \"Fully implement \"install\" and \"install-write\" in PackageManagerShellCommand.\""
    },
    {
      "commit": "ca3872ce36c94090ae18519dc7fe0cf39d834c4a",
      "tree": "26361b8a308121902da16e035851489e11af38c9",
      "parents": [
        "362e983accb269b07a95ef563fe37ed325145035"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Oct 30 14:19:32 2017 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Oct 31 10:54:31 2017 -0700"
      },
      "message": "Fully implement \"install\" and \"install-write\" in PackageManagerShellCommand.\n\nWe can use the new mechanism to ask the calling shell to open\na file in order to implement the rest of these commands, allowing\nyou to give the path to an apk to install.  That API is thus\nextended to allow you to open readable files, not just opening\nfile for writing.\n\nDoing this however means we no longer can pass a file path to\nAssetManager for the apk to parse, we only have an already open\nfd for that.  Extending AssetManager to allow adding apks from\nfds is not that hard, however, since the underlying zip library\nalready supports this.\n\nThis main thing this changes is in AssetManager.cpp where we\nretrieve the open zip file for a particular apk that has been\nadded.  This used to look up the zip file by path every time\nit was needed, but that won\u0027t work anymore now that we can have\nthings added by fd.  Instead, we keep track of each opened zip\nin the AssetManager, so we can just directly retrieve it from\nthe asset_path representing the item that was added.  As a\nside-effect, this means for normal paths we no longer need to\nlook up by name, but just have the opened zip file directly\naccessible.  (This is probably good, but it does mean that we\nno longer run the logic of seeing if the zip file\u0027s timestamp\nhas changed and re-opening it if it has.  We probably shouldn\u0027t\nbe relying on that for an active AssetManager anyway, and maybe\nit is even good that we don\u0027t allow the zip file to change\nunder it?)\n\nA follow-up change will finally remove the Pm.java implementation\nand turn the pm \"command\" into a simple shell script that runs\ncmd package.\n\nTest: manual\n\nChange-Id: Ie103e3bdaa5b706796cc329254f2638151a3924f\n"
    },
    {
      "commit": "5ad1a69e4cafaa0dd9607faf1a409ca483492004",
      "tree": "f6a3fba1515c858fa2f5688cbe40fc98b9d62569",
      "parents": [
        "3bb2a25b8f6d2c99a5266854783a24cb69b2f651",
        "fa28aec361198e5f9cd8ce1d2aa863b3b3bc5dfc"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Oct 31 08:58:16 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 31 08:58:16 2017 +0000"
      },
      "message": "Merge \"Sync gauge metric proto to AOSP.\""
    },
    {
      "commit": "fa28aec361198e5f9cd8ce1d2aa863b3b3bc5dfc",
      "tree": "9fea1034722f71e150710df8d04b9f25bbcff8ae",
      "parents": [
        "ac6a65eba21457daa289dc4225b8f5f6b70206aa"
      ],
      "author": {
        "name": "Yangster",
        "email": "yanglu@google.com",
        "time": "Mon Oct 30 10:29:52 2017 -0700"
      },
      "committer": {
        "name": "Yang Lu",
        "email": "yanglu@google.com",
        "time": "Tue Oct 31 04:27:52 2017 +0000"
      },
      "message": "Sync gauge metric proto to AOSP.\n\nTest: manually run all the tests.\n\nChange-Id: I81a282c6253d4b4577d8aea31490bb011988435c\n"
    },
    {
      "commit": "69007c82625dd8b19bd68d1031191e2ff83b5f49",
      "tree": "4c78156c4ced3edae4f56902d4cfcd3cc2b9250b",
      "parents": [
        "a17d0ac384e356a8a53278d207ac8d5ad346b703"
      ],
      "author": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Thu Oct 26 20:42:57 2017 -0700"
      },
      "committer": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Mon Oct 30 21:01:08 2017 -0700"
      },
      "message": "Implement a logic to rate limitted flush statsd with by checking the\nsize of each MetricsProducer\u0027s. The implementation of byteSize() method\nis still TBD as it depends on migration to ProtoOutputStream.\n\nTest: statsd, statsd_test\nChange-Id: I966606044d7cb814dabe94192bacecad91f28177\n"
    },
    {
      "commit": "fd05a4ee56d72cf743c5186973fa6fd5100b2c04",
      "tree": "550aa5335f43a83785ce2771d59f7db2c6526c87",
      "parents": [
        "35c1a5d51b02a9a9853cf4abc0569591bdb71ecb"
      ],
      "author": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Thu Oct 26 14:08:26 2017 -0700"
      },
      "committer": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Thu Oct 26 14:18:25 2017 -0700"
      },
      "message": "Remove dropbox dependency from StatsLogProcessor\n\nTest: statsd, statsd_test\n\nChange-Id: Ia9a3e9b2b3ffffaed81f6045ec43b7d908947fb6\n"
    },
    {
      "commit": "c81983a0c3d7bfe8384dbf48909f4bcf300e36d2",
      "tree": "5bde759ec82eb5330ff0f79f277d137b9efb1be4",
      "parents": [
        "8664028d4f0642ea44c83f87a85184813ac39972"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Oct 20 16:16:32 2017 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Oct 25 12:19:26 2017 -0700"
      },
      "message": "Start removing remaining pm code to package manager\n\nEverything is now moved out of the pm command except for\nthe various install commands.  I am going to hold of on\nthose since they require doing some resolution with the\ncurrent implementations in the package manager to make\nsure they match and behave identically to the implementations\ncurrently in the pm command.  But other than that, everything\nin pm is now just redirecting over to \"cmd package\".\n\nAlso fix up some of the dumpsys output of a few other sevices\nwhen asking to print the data for a particular package, so\nthe \"pm dump\" command gives a little more sane result.\n\nTest: manual\n\nChange-Id: I139e06e560203b72243d7eea9543c2240db0f8f8\n"
    },
    {
      "commit": "40e1dd673e906d04bc01016b71d10b5eb9cba969",
      "tree": "288a9df9fb4d5cb102e493a88e9f2256e430515f",
      "parents": [
        "17e5e2e57313a1a6c3bfcb3c4cf380570df9f388",
        "e588524f8980106098fa4f0900b6f4bb69b77ec1"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Oct 25 17:05:44 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Oct 25 17:05:44 2017 +0000"
      },
      "message": "Merge changes Ifee27c86,I9ffa4b00\n\n* changes:\n  Add more atoms to statsd\n  Add wakelock atom to statsd\n"
    },
    {
      "commit": "17e5e2e57313a1a6c3bfcb3c4cf380570df9f388",
      "tree": "93db6e8241946ffb553041900c6b7802764db3c8",
      "parents": [
        "38b93486093d01374371bbaf62dfdd17c4b47236",
        "8c6571bde81fdedb19d2e8b3271ff3b027ce9b85"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Oct 25 17:04:54 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Oct 25 17:04:54 2017 +0000"
      },
      "message": "Merge \"Add some atoms to statsd\""
    },
    {
      "commit": "e588524f8980106098fa4f0900b6f4bb69b77ec1",
      "tree": "32aaa9426c4454418b5b3a02ce71a92dcb86fd55",
      "parents": [
        "d674624affb163c8d7f91fbfd94a960733b62986"
      ],
      "author": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Tue Oct 24 20:10:31 2017 -0700"
      },
      "committer": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Tue Oct 24 20:10:31 2017 -0700"
      },
      "message": "Add more atoms to statsd\n\nThe following events are added to statsd:\nWifiLockStateChanged\nWifiSignalStrengthChanged\nWifiSignalStrengthChanged\nPhoneSignalStrengthChanged\n\nTest: manually confirmed these show up in the statslog.\nChange-Id: Ifee27c86a28616d8cb9d43bdf11f9cabe2b367c6\n"
    },
    {
      "commit": "d674624affb163c8d7f91fbfd94a960733b62986",
      "tree": "09baeb0f222d1200ace20c903f7ce1f7ea9c8cb1",
      "parents": [
        "8c6571bde81fdedb19d2e8b3271ff3b027ce9b85"
      ],
      "author": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Tue Oct 24 18:39:35 2017 -0700"
      },
      "committer": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Tue Oct 24 18:39:35 2017 -0700"
      },
      "message": "Add wakelock atom to statsd\n\nThe wakelock event is logged in statsd.\n\nTest: manually confirmed that the event appears in statslog.\nChange-Id: I9ffa4b0042264aabf3526843b4fb1832d183de61\n"
    },
    {
      "commit": "8c6571bde81fdedb19d2e8b3271ff3b027ce9b85",
      "tree": "1dc727f56388be59e275caa86db35e9dcb612e56",
      "parents": [
        "b74d064019a79d82b53f051f0a7986717faae62d"
      ],
      "author": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Tue Oct 24 15:04:41 2017 -0700"
      },
      "committer": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Tue Oct 24 18:18:19 2017 -0700"
      },
      "message": "Add some atoms to statsd\n\nThe following atoms (events) are added:\nBatteryLevelChanged\nChargingStateChanged\nPluggedStateChanged\nDeviceTemperatureReported\nDeviceOnStatusChanged\nWakeupAlarmOccurred\nKernelWakeupReported\n\nTest: manual\nChange-Id: I1e7d8a842ee67b5da30f20c9e6976c5bc4e0a0ef\n"
    },
    {
      "commit": "c3787a8a83034e2d416baa1ce13b6ebeaf639f7e",
      "tree": "b09bf669d5af116067646dae6cf421aa46f4c174",
      "parents": [
        "5a6a5417ec5fe2a9f18577abc6e6906e8377b066",
        "31eb67b3498d326659b2b164ff367a01a793d641"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Oct 25 00:18:53 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Oct 25 00:18:53 2017 +0000"
      },
      "message": "Merge \"Adds aidl definitions and their implementations for binder transfer of statsd entries to clients. This change only includes changes on statds side and does not include java library for clients to import. Java library will be a separate change as it requires system api review.\""
    },
    {
      "commit": "31eb67b3498d326659b2b164ff367a01a793d641",
      "tree": "ba4d304b2bf25127b99fb550f7684826c184ade2",
      "parents": [
        "ce7416809a6953ad2d421977de2aae81cc0549f8"
      ],
      "author": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Tue Oct 24 13:33:21 2017 -0700"
      },
      "committer": {
        "name": "yro",
        "email": "yro@google.com",
        "time": "Tue Oct 24 15:25:27 2017 -0700"
      },
      "message": "Adds aidl definitions and their implementations for binder transfer of\nstatsd entries to clients. This change only includes changes on statds\nside and does not include java library for clients to import. Java\nlibrary will be a separate change as it requires system api review.\n\nTest: statsd, statsd_test\nChange-Id: I306c6e9687801668cc0145b12d38406bfe634775\n"
    },
    {
      "commit": "35ef4f2047b6f3ac22c503aa284931a151603418",
      "tree": "db570adc310de09b6415a8c69d31f492c8f5453e",
      "parents": [
        "8b714a1b39452ec703d55dba270ecc364fe54e27",
        "5110bedd787835d4dbc809b7977285cac364bdef"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Oct 24 21:05:18 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 24 21:05:18 2017 +0000"
      },
      "message": "Merge \"Add EventMetricProducer\""
    },
    {
      "commit": "5110bedd787835d4dbc809b7977285cac364bdef",
      "tree": "cd5ef12c9e663bd2e439ab1b05896c55913e5b96",
      "parents": [
        "de10727f3e489f44f657de28773bccb6989b63de"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Mon Oct 23 12:50:02 2017 -0700"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Tue Oct 24 12:27:23 2017 -0700"
      },
      "message": "Add EventMetricProducer\n\n+ Started to use ProtoOutputStream in EventMetricProducer.\n  [TODO]: We need to auto-generate fieldIds for StatsLogReport, XXXMetricData, etc.\n  [TODO]: We need to add Enum type to liblog, otherwise we cannot reconstruct a proto containing\n          an enum\n\n+ Some refactor in metric initialization code. There are still boiler plate code, because Metrics\n  are similar but with subtle differences.\n\nTest: statsd_test\n\nChange-Id: Id7e3212566249a8139b9680f04238c455d50c1b8\n"
    },
    {
      "commit": "4d3b424caea30a2e82211bdf7db73a7926034cb0",
      "tree": "f4195f9f31b4dabb40f3bfdf9852639d4da329cc",
      "parents": [
        "3a3ff7deeb200aa3757c8863f4eee7be044d2931",
        "e08333067a9f4ce9176dff490c4b163f71f56e1e"
      ],
      "author": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Tue Oct 24 17:26:51 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 24 17:26:51 2017 +0000"
      },
      "message": "Merge \"Fix several nits\""
    },
    {
      "commit": "e08333067a9f4ce9176dff490c4b163f71f56e1e",
      "tree": "09d88398f208cf4abde6feb17e82441c4e9f4c45",
      "parents": [
        "c35ca6de375a1a17a3e070f85e7cf15272d92181"
      ],
      "author": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Mon Oct 23 15:42:44 2017 -0700"
      },
      "committer": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Mon Oct 23 16:36:06 2017 -0700"
      },
      "message": "Fix several nits\n\n1. Change the APIs of ProtoOutputStream to be able to write bytes\n2. Fix the tests in incidentd, stdout is closed so can\u0027t capture the\nvalue, use temporaryFile instead.\n\nTest: N/A\nChange-Id: Ibc31f2efd068afc6c06188d92f57ca5a754c3683\n"
    },
    {
      "commit": "d3606c79ca58e96a1919292bc139b34351dd272f",
      "tree": "a0ce6e09fb58110cc43d9100607e3cc4f83f9120",
      "parents": [
        "4a09e4c11e11fc6ce6d05970fe372bbee3d2c0f5"
      ],
      "author": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Thu Oct 19 10:13:49 2017 -0700"
      },
      "committer": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Mon Oct 23 13:35:01 2017 -0700"
      },
      "message": "Anomaly detection for count reads from config\n\nCount anomaly detection now reads in parameters from the config.\nAlso adds refractory period.\n\nTest: Manually, using ConfigManager\u0027s fake config\nChange-Id: I5618c0c6dcd6ef35e14d32315d5ea75ba58f0031\n"
    },
    {
      "commit": "3320de9842ee0034e4ca470bb5b800d3312d802f",
      "tree": "ba467fa02b33f8e63e87beb6b311afc45232f4e3",
      "parents": [
        "9fe1908ee9becf811f6180827f9f25d26ae816bc",
        "c1a050ad32246e0f7a7cb60c96eda197e2715f04"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Oct 23 19:43:50 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Oct 23 19:43:50 2017 +0000"
      },
      "message": "Merge \"Add pushing many batterystats events to statsd\""
    },
    {
      "commit": "810a6c53b387491c40ec50ac229c07987673be17",
      "tree": "66583d49c4319fa029b95cefe201810f79692212",
      "parents": [
        "fd3044a1e7a0db8f8adfd6f0e7600449cfc9cb27",
        "b704177d401de895c3b00d258885dc4243a7b3a7"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Oct 23 18:21:04 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Oct 23 18:21:04 2017 +0000"
      },
      "message": "Merge \"Refactor MetricProducer so that a big chunk of boiler plate code can be removed.\""
    },
    {
      "commit": "c1a050ad32246e0f7a7cb60c96eda197e2715f04",
      "tree": "65a2f6f104d2f144cf5d971359e0868344e5551b",
      "parents": [
        "d2167ba99cbec712c988cc04a05d4a40602afd29"
      ],
      "author": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Tue Oct 10 15:49:28 2017 -0700"
      },
      "committer": {
        "name": "Bookatz",
        "email": "bookatz@google.com",
        "time": "Mon Oct 23 10:26:18 2017 -0700"
      },
      "message": "Add pushing many batterystats events to statsd\n\nStatsd is now informed for starts/stops/etc of the following events:\nBleScan\nBleScanUnoptimized\nBleScanResult\nSensor\nGps\nSync\nScheduledJob\nUidWakelock (aggregate wakelock)\nLongPartialWakelock\nBatterySaverMode (power save mode)\nDeviceIdleMode (doze)\nScreenBrightness\nAudio\nVideo (media codec)\nCamera\nFlashlight\nProcessLifeCycle\n\nTODO: Note that, although tags are java constants (e.g.\nStatsLog.SCREEN_STATE), the values passed in for states do not have java\nconstants associated with them, so we use literals (0 vs 1 for off vs\non). In the future, when corresponding java constants exist, these can\nbe updated.\n\nTest: manually confirmed statslog received each type of events\nChange-Id: I24282cdb56265bba61dceb0932112804273dcfc8\n"
    },
    {
      "commit": "b704177d401de895c3b00d258885dc4243a7b3a7",
      "tree": "774eb11fe6bdd66ceec78bc5e0062152ebd5d7eb",
      "parents": [
        "b5d2b69800f05739a42cb9f1af131e449f07938a"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Fri Oct 20 16:59:25 2017 -0700"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Fri Oct 20 17:14:44 2017 -0700"
      },
      "message": "Refactor MetricProducer so that a big chunk of boiler plate code can be removed.\n\nTest: statsd_test\nChange-Id: I62489b94c6dfceb0b08ce4147c331a8a785eabb4\n"
    },
    {
      "commit": "1481fe142d36d5f0b36eeebc358d5a8aef7bf28a",
      "tree": "368875377232437bd13d8c3e856b75b640afee08",
      "parents": [
        "708f1b8cdca593155e4c572ebe2ebc3ee257c84c"
      ],
      "author": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Mon Oct 16 13:16:34 2017 -0700"
      },
      "committer": {
        "name": "David Chen",
        "email": "dwchen@google.com",
        "time": "Fri Oct 20 16:29:59 2017 -0700"
      },
      "message": "Changes pulled data to use Parcel objects.\n\nPreviously, pulled data was returned as a string. We instead\nreturn the data as an array of StatsLogEventWrapper, which encodes\nusing the binary-encoded format liblog uses. StatsD uses the same\nparsing as for pushed events to convert these. This CL also fixes\nthe parsing of log_msg since the strings were previously emptied\nbefore we had a chance to read the values.\n\nNote that the cpp-aidl can\u0027t support List of Parcelable, so we\nhave to return the results as an array.\n\nTest: Manual using the new command in StatsService to print results.\nAlso created a new unit-test by creating a dummy pull code of -1,\nbut this test is deleted since it required creating a fake output in\nStatsCompanionService.\n\nChange-Id: I1cfb9ea081a59292a60e934e8527adc40982ed80\n"
    },
    {
      "commit": "729093df0dd7d7038ad43b16ecdb59a1404f3b50",
      "tree": "a2a85c957fba0fdb38dd79723c6e1084c7f5bb48",
      "parents": [
        "c35ca6de375a1a17a3e070f85e7cf15272d92181"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Mon Oct 16 10:33:26 2017 -0700"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Thu Oct 19 15:40:55 2017 -0700"
      },
      "message": "Add support for dimension, and link with condition and added DurationMetric\n\nNow we support following metrics:\n  \u003cDuration\u003e of [app holding a wake lock], while [*this app*] is [in background] [AND] [screen is off]\n  [Slice] the output by [app name, wake lock name], with bucket size [30sec]\n\n+ Also added onDumpReport() api in MetricsManager, it can be called from client to fetch the data from\n  statsd\n\n+ Also added command line tool to dump the StatsLogReport from all metrics for debugging.\n\n+ Synced proto from google3. with a pending cl (cr/172359050)\n\nTODO: We need to add tons of tests to test the Metrics. I will work on it after this CL so people\ncan be unblocked.\n\nI locally test the duration metric with wake lock with an app that generates StatsLog events.\n\nTest: statsd_test\n\n      and manual test, and run:\n\n      adb shell cmd stats dump-report\n      We have a default config, which contains a metrics to count PROCESS_START event sliced by\n      package name.\n\nChange-Id: I4838cc6cf025c143b7e84f43040703a78121fd25\n"
    },
    {
      "commit": "6e66a2cf34a90da745ac4dc5e93a1e082432fefb",
      "tree": "0282f251f42a497d1e2e28d1139b53b09926bda8",
      "parents": [
        "f40e381988977f2e361c07f84fdd034a4dffe823",
        "22769e0123340f49370ea4748aff71a1b84dc863"
      ],
      "author": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Thu Oct 19 00:16:54 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Oct 19 00:16:54 2017 +0000"
      },
      "message": "Merge \"Fixed several bugs found for incidentd\""
    },
    {
      "commit": "22769e0123340f49370ea4748aff71a1b84dc863",
      "tree": "a047713fb7035d3e393246465ccc0e7bc7c6f5c2",
      "parents": [
        "05d0f4c1a364f50e01ee3d10b6520596c57d2037"
      ],
      "author": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Mon Oct 16 14:42:50 2017 -0700"
      },
      "committer": {
        "name": "Yi Jin",
        "email": "jinyithu@google.com",
        "time": "Wed Oct 18 13:17:32 2017 -0700"
      },
      "message": "Fixed several bugs found for incidentd\n\n1. Add logging for proto can\u0027t be parsed by incident_report\n2. Close opened file descriptor of incident report request!\n3. Fix invalid syntax of auto-gen section_list.cpp\n\nBug: 67849582\nTest: manually run incident and checks /proc/\u003cits pid\u003e/fd\nChange-Id: I38e6ac28de09aca6243ad536ed41d8059e08ba24\n"
    },
    {
      "commit": "c4dfae56c10a1dd571baa78c750f2e68c919d74f",
      "tree": "b44b1e9bf713e5a1935f9a89d6f2e2ae2e98370b",
      "parents": [
        "9fc9edf95a308f5884bf541cac81ce1f41aba0ba"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Tue Oct 17 23:38:21 2017 -0700"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Wed Oct 18 04:19:04 2017 -0700"
      },
      "message": "Introduce a new wrapper for log_msg -- LogEvent\n\nIt stores all of the parsed fields in a single vector, and\nprovides accessor methods to get at fields by index with\ntheir correct type.\n\nTest: statsd_test\nChange-Id: I4fa94e4ce52db3ac87f19b62f9c85398de6e8145\n"
    },
    {
      "commit": "9fc9edf95a308f5884bf541cac81ce1f41aba0ba",
      "tree": "6ffea92f07a143e2847ae692fd26301689f2345e",
      "parents": [
        "aeff5b880b095e148e0243907d384d6f1d0a4c20"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Sun Oct 15 20:08:52 2017 -0700"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Wed Oct 18 04:18:58 2017 -0700"
      },
      "message": "Clean up how we handle configurations, and other assorted cleanup\n\n- Add a ConfigManager class that tracks the configurations\n  that have been passed to us.  Configurations are now\n  tracked by tuples of (uid,tag), where the tag is an\n  app-defined string, in case a single uid has multiple\n  configurations.\n- Move all of the initialization into StatsService.\n- Get rid of the ability to have multiple LogListeners. Raw\n  events are now pushed directly into StatsService, which\n  can distribute them to the interested parties (and will\n  eventually be able to do the proper locking).\n- Add Log.h, which sets our LOG_TAG correctly.\n- Move some of the related files that I expect will grow some\n  into their own subdirectories.\n\nTest: statsd_test\nTest: adb shell cmd stats config ...\nTest: adb shell dumpsys stats\nChange-Id: I79487603003d8a842d5bd319741f1ecbf72063d1\n"
    },
    {
      "commit": "37ed703d6b55fe12132142a14eabc1ab47a76843",
      "tree": "63281a7ce37d242ecfd506feea39e55e7319265a",
      "parents": [
        "50635493489a7875969ef77b62441b4370282536",
        "70b986376189bf64706924a614d2d44e5702ed9c"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Oct 17 22:27:54 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 17 22:27:54 2017 +0000"
      },
      "message": "Merge changes from topic \"resubmit_joeo_cl\"\n\n* changes:\n  Fix build error.\n  Revert \"Revert \"Start auto-generating the stats log API.\"\"\n"
    },
    {
      "commit": "ca6988e65b0754a08a51d5018694283b56be256d",
      "tree": "6f0b102e09f0b15adde94fc1b83daf54bf46660e",
      "parents": [
        "c593bc086c0b8387599fc14d77b09fc1fc44d0e5",
        "91a711baac72001ea6576f7f8525e81e7ac2cc39"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Oct 17 21:29:08 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 17 21:29:08 2017 +0000"
      },
      "message": "Merge \"Update documentation for pm install / pm install-create\""
    },
    {
      "commit": "70b986376189bf64706924a614d2d44e5702ed9c",
      "tree": "8248d5f6b90f420d1c74832dec79d8b72ee13088",
      "parents": [
        "d54f9dd6251c7bd7033630b7afa770190d41c409"
      ],
      "author": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Tue Oct 17 10:41:14 2017 -0700"
      },
      "committer": {
        "name": "Yao Chen",
        "email": "yaochen@google.com",
        "time": "Tue Oct 17 12:52:37 2017 -0700"
      },
      "message": "Fix build error.\n\nTest: builds successfully.\n\nChange-Id: I9ffefa28f37830319864e7b98d32340f59df0a62\n"
    }
  ],
  "next": "d54f9dd6251c7bd7033630b7afa770190d41c409"
}
