)]}'
{
  "log": [
    {
      "commit": "90af4157c57de30ea0c3ab5ce2ab79c2ba36ef3b",
      "tree": "c7bae00384c16d2223d73155d77d2b9692dabbfc",
      "parents": [
        "0c0dafae8d411b804564a19af628bb6ddebb56e8"
      ],
      "author": {
        "name": "Tomasz Wasilczyk",
        "email": "twasilczyk@google.com",
        "time": "Fri Aug 11 02:12:16 2023 +0000"
      },
      "committer": {
        "name": "Tomasz Wasilczyk",
        "email": "twasilczyk@google.com",
        "time": "Fri Aug 11 19:40:34 2023 +0000"
      },
      "message": "Add String16::c_str and start using it.\n\nThis is for parity with String8::c_str and in general the first step\nin transition from String8|16.string() - to make it more similar to\nstd::string.\n\nBug: 295394788\nTest: mma -j\nChange-Id: I6c1411bef07c761fb2fb3fb38c27801ac4cffc57\n"
    },
    {
      "commit": "dcd1cacbbb747f3a5e37580375d5818f74909de7",
      "tree": "61a69ac9179c104a5da36cfd1912a701fef515d9",
      "parents": [
        "e83e9e28c2495ce928c89f5e9df9378fffa01cba",
        "32ceaa1299fec7bfa7d4c3753fc9c690d8707abb"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jun 30 01:48:14 2021 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Jun 30 01:48:14 2021 +0000"
      },
      "message": "Merge \"String16 is moveable (noexcept)\" am: 3551e457ca am: 32ceaa1299\n\nOriginal change: https://android-review.googlesource.com/c/platform/system/core/+/1749261\n\nChange-Id: Ia658a7b6ad2c21c83ef109230a4c5f0a7d02068a\n"
    },
    {
      "commit": "98b396e7854056d7b1b478566e373afb2bc046f6",
      "tree": "5f058e6d4f7007cbb7cadae5d4eb8307698f08c4",
      "parents": [
        "c037bdbc5a1f2b0e0130195030b874c9dfff99ca"
      ],
      "author": {
        "name": "Jooyung Han",
        "email": "jooyung@google.com",
        "time": "Sun Jun 27 03:30:42 2021 +0900"
      },
      "committer": {
        "name": "Jooyung Han",
        "email": "jooyung@google.com",
        "time": "Tue Jun 29 10:18:23 2021 +0900"
      },
      "message": "String16 is moveable (noexcept)\n\nString16 is still in use by AIDL compiler. Because String16 is not\nnoexcept-move-constructible, the C++ compiler will complain when it is\nused with non-copyable types (such as ParcelFileDescriptor).\n\nFor example, when vector\u003cFoo\u003e is resized, copy-ctor of Foo is called,\nwhich is not available.\n\n  parcelable Foo {\n    String s;\n    ParcelFileDescriptor[] pfds;\n  }\n\nBy providing noexcept move-ctor for String16, vector\u003cFoo\u003e can be resized\nwith no problem.\n\nBtw, copy from StaticString16 is specialized for efficiency and move\nfrom StaticString16 don\u0027t need to be different from copy.\n\nBug: 192136980\nTest: libutils_test\nChange-Id: I13744a2ceebf5781c3ef7f3a04237a6750b0db0a\n"
    },
    {
      "commit": "a6be6f0acb955fc1917496820521ec41cf1e5557",
      "tree": "eef8289300e11f3808c0d78d3d4f2ea7b14c6d1e",
      "parents": [
        "8f654d8a99738d096e2a7bf87324a515ec0c33bc"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 10 17:06:26 2021 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 10 17:06:26 2021 -0700"
      },
      "message": "Check for overflow in String16::append and String16::insert.\n\nBug: http://b/178802681\nBug: http://b/178821065\nTest: new tests\nChange-Id: I2352ea4c65e3f29e44e2ad6cad20ad610ceace1f\n"
    },
    {
      "commit": "2cf04119102753e92b5dc09cd3820f5f15d4022f",
      "tree": "bf4c1804f3ee639d7ead9a174cd503ba17d8dc37",
      "parents": [
        "8371ec25ab080c18c0adbd2c778506c7c112a7ca"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 11 16:27:15 2021 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 12 20:24:26 2021 +0000"
      },
      "message": "Remove String16::remove.\n\nThis function, ironically, is being removed.\n\nEven more amusing, it was never \"remove\" anyway --- it literally did\nthe opposite, and removed everything *except* the range you passed to\nit, and should probably have been called \"keep\"!\n\nI\u0027m looking at reimplementing much of libutils, but first I\u0027m improving\ntest coverage, and literally every test I wrote for this failed. And\nthen when I fixed the \"obvious bugs\" in the implementation, I found\nthere actually were a couple of existing unit tests --- that mostly\nserved to demonstrate just how counter-intuitive this function was.\n\nBug: http://b/156999009\nTest: treehugger\nChange-Id: I41fd85f7c0988070f4039f607d2e57523d862ed9\n"
    },
    {
      "commit": "016beb8559c27f5ce8f4467def164ff6a395fc3a",
      "tree": "d77d127158ca5b563c072230e5f13337019adfc1",
      "parents": [
        "99037347d61884ee83e48f004d6152d4730a350d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 06 16:49:39 2021 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 07 22:38:20 2021 +0000"
      },
      "message": "Remove String16::makeLower().\n\nIf you need to do a case transformation for a Unicode string, you need\nto use icu4c. This only worked for ASCII, which is just silly. Luckily\nit doesn\u0027t seem to be used anywhere.\n\nTest: treehugger\nChange-Id: I4a864823ec35a0b57b50909587cc3efac3f531a7\nMerged-In: I4a864823ec35a0b57b50909587cc3efac3f531a7\n"
    },
    {
      "commit": "80c46b05413f263a9e6fda2618e334a3ba27f64a",
      "tree": "b8c2253f96aca809d15b0b698a37e2dd409f62a1",
      "parents": [
        "41eaad8e354c6642aef902ee5d20649e03aadfd7",
        "8367a666b593c9619b71ba45bacde1cb36a9ae33"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Jul 14 17:24:42 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Jul 14 17:24:42 2020 +0000"
      },
      "message": "String16::remove - avoid overflow am: 4048e49956 am: 107f18cb61 am: 9be245c3f0 am: 64fb5012b8 am: 4e27b6992b am: 26b81f59d2 am: 8367a666b5\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/system/core/+/11619802\n\nChange-Id: Ic25dca55b553b062edc4ced44ddef68b96428906\n"
    },
    {
      "commit": "8367a666b593c9619b71ba45bacde1cb36a9ae33",
      "tree": "bea9e1ebb85e8d0bf03c938329cc550a408b5080",
      "parents": [
        "c8766043aa294fce85b4a26ef029737184cb2c0a",
        "26b81f59d2e340d950faac120daedf47364c7e33"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Jul 14 17:03:30 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Jul 14 17:03:30 2020 +0000"
      },
      "message": "String16::remove - avoid overflow am: 4048e49956 am: 107f18cb61 am: 9be245c3f0 am: 64fb5012b8 am: 4e27b6992b am: 26b81f59d2\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/system/core/+/11619802\n\nChange-Id: Ib4704bc8a733ace56e7998b7bad5a6c5638900ad\n"
    },
    {
      "commit": "4e27b6992b696d72a81f62178d2be44797ef377a",
      "tree": "8237c8875434ce0497c2ad05f9513a382aa6fcb0",
      "parents": [
        "75b3266e22fdcf8ae73607b8346d1f156cea28ce",
        "64fb5012b8290b30f177b876a915b0c7acd65ea9"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Jul 14 16:29:09 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Jul 14 16:29:09 2020 +0000"
      },
      "message": "String16::remove - avoid overflow am: 4048e49956 am: 107f18cb61 am: 9be245c3f0 am: 64fb5012b8\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/system/core/+/11619802\n\nChange-Id: I03057c052a24f205c78ee600178d45e0cd51a3c1\n"
    },
    {
      "commit": "4048e49956a2dfd49af3adf0f78881bf15f3550f",
      "tree": "6c8a3f0e21f3937801a0b369e1311fbc1ee277a1",
      "parents": [
        "e62a9d7669ac85844d4424474f5c88c096f7160b"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Thu May 28 00:29:08 2020 +0000"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Thu May 28 20:45:55 2020 +0000"
      },
      "message": "String16::remove - avoid overflow\n\nBug: 156999009\nTest: libutils_test (cases added)\nChange-Id: Iad46d95d9848928ba81000090b2fe9aec1e5eaac\nMerged-In: Iad46d95d9848928ba81000090b2fe9aec1e5eaac\n(cherry picked from commit f251c1c581f2d1b9940e60e756315c5e15443990)\n(cherry picked from commit 9a9c8910e9296c9dc8d79c37f589895f5a2a836c)\n"
    },
    {
      "commit": "727a6dd5f533fd823d48d60f0752273aa5dd5ae0",
      "tree": "79281bd09c6d221ef5344fb80c151eb9b25de7d0",
      "parents": [
        "8c2d4d6146c85b8ac1aea58d06ccb763d0b3a4db"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Mon Feb 10 13:56:44 2020 -0800"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Mon Feb 10 13:56:44 2020 -0800"
      },
      "message": "String*: remove \u0027StaticLinkage\u0027 constructor\n\nUnneeded.\n\nBug: N/A\nTest: N/A\nChange-Id: I3ff473d1e2fec98e47abd8abb45dd36e0a808170\n"
    },
    {
      "commit": "5a141424e660165122f2ab40f28cd4af3bc96833",
      "tree": "634088f58286344a659ee722ff90e53bcdc2d4cc",
      "parents": [
        "34aba6a690811dac48568fe9679e895b80bcb069"
      ],
      "author": {
        "name": "Vic Yang",
        "email": "victoryang@google.com",
        "time": "Fri Sep 27 21:03:09 2019 -0700"
      },
      "committer": {
        "name": "Vic Yang",
        "email": "victoryang@google.com",
        "time": "Fri Sep 27 21:07:00 2019 -0700"
      },
      "message": "Fix memory leak in String16\n\nNewly allocated SharedBuffer already has reference count 1, so we\nshould not call acquire().\n\nBug: 141764153\nTest: Run String16Test.* with ASan that was able to detect the leak\n      without this change.\nChange-Id: Ib8b1b707b028386d717414d8c5ec5ea7b4b59464\n"
    },
    {
      "commit": "9fb93edd5bd4531f72faadfb269a0aa25d413b5d",
      "tree": "72e8c274e883d168e1be903d69d0da6bb98866e6",
      "parents": [
        "8bea425845ce232c272d8adc9e3149d49ba91a6f"
      ],
      "author": {
        "name": "Vic Yang",
        "email": "victoryang@google.com",
        "time": "Thu Sep 05 13:18:27 2019 -0700"
      },
      "committer": {
        "name": "Vic Yang",
        "email": "victoryang@google.com",
        "time": "Thu Sep 05 13:19:14 2019 -0700"
      },
      "message": "Reland \"libutils: Introduce StaticString16\"\"\n\nThis reverts commit 1270e4fbf17402fb01dbfa7928a654d41d8553ee.\n\nBug: 138856262\nTest: Run unit tests.\nChange-Id: I37be01d7d4f98a83078870cb0917275336fa2bbd\nMerged-In: I8da93f2c9b95183e32d4a2ea895f90c449abbe4d\n"
    },
    {
      "commit": "1270e4fbf17402fb01dbfa7928a654d41d8553ee",
      "tree": "59fa127f76ea3f705e92611f3ee3bbfc7306293e",
      "parents": [
        "c55ac92bd6b6f14778758893730415f5328da530"
      ],
      "author": {
        "name": "Kevin Han",
        "email": "kevhan@google.com",
        "time": "Fri Aug 30 23:43:45 2019 +0000"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Fri Aug 30 23:50:38 2019 +0000"
      },
      "message": "Revert \"Reland \"libutils: Introduce StaticString16\"\"\"\n\nThis reverts commit c55ac92bd6b6f14778758893730415f5328da530.\n\nReason for revert: Breaks down-stream branches. See b/140315617\n\nChange-Id: I4937fdf4bdcc7a44d5f10700ecf2d5e96aef7d27\nMerged-In: I8da93f2c9b95183e32d4a2ea895f90c449abbe4d\n"
    },
    {
      "commit": "c55ac92bd6b6f14778758893730415f5328da530",
      "tree": "75d4e40df34dc4bba084dc2a5b1c7cf5fbf5a93d",
      "parents": [
        "cc746b51933624ea658a0656a51e0c9bf38b0f11"
      ],
      "author": {
        "name": "Vic Yang",
        "email": "victoryang@google.com",
        "time": "Fri Aug 30 10:58:22 2019 -0700"
      },
      "committer": {
        "name": "Vic Yang",
        "email": "victoryang@google.com",
        "time": "Fri Aug 30 11:01:27 2019 -0700"
      },
      "message": "Reland \"libutils: Introduce StaticString16\"\"\n\nThis time with old branches excluded.\n\nBug: 138856262\nTest: Run unit tests.\nChange-Id: Id0bb1d54b71e38244d64f1b684db1fda81de854c\nMerged-In: I8da93f2c9b95183e32d4a2ea895f90c449abbe4d\n"
    },
    {
      "commit": "86eaa8de78a41205dae7e060a764009cff5e4a58",
      "tree": "c4ff403480e163692adf986d63c0535b856c709f",
      "parents": [
        "d4cb4894348818b90457d94580ed4d611c5d11b0"
      ],
      "author": {
        "name": "Vic Yang",
        "email": "victoryang@google.com",
        "time": "Thu Aug 29 22:47:07 2019 +0000"
      },
      "committer": {
        "name": "Vic Yang",
        "email": "victoryang@google.com",
        "time": "Thu Aug 29 22:47:07 2019 +0000"
      },
      "message": "Revert \"libutils: Introduce StaticString16\"\n\nThis reverts commit d4cb4894348818b90457d94580ed4d611c5d11b0.\n\nReason for revert: Breaking aosp_bonito-userdebug\n\nChange-Id: Iea72f39d40f476002ce0ad6b5ce3b4e1ca570de7\n"
    },
    {
      "commit": "d4cb4894348818b90457d94580ed4d611c5d11b0",
      "tree": "04c04ac544f15721ce76c203f927eb0a48976adf",
      "parents": [
        "23a87716b57114e9b4f607042e3ec1af90d68c0a"
      ],
      "author": {
        "name": "Vic Yang",
        "email": "victoryang@google.com",
        "time": "Tue Aug 06 12:58:44 2019 -0700"
      },
      "committer": {
        "name": "Vic Yang",
        "email": "victoryang@google.com",
        "time": "Fri Aug 09 11:01:37 2019 -0700"
      },
      "message": "libutils: Introduce StaticString16\n\nThis is a backward compatible implementation of compile time\nconstructed String16 support.\n\nAs much as we\u0027d like a regular constexpr constructor for String16, we\nwant to make sure the regular non-static String16 does not regress.\nWe also need to make sure prebuilts built with previous version of\nString16 still works with new libutils.  This means we cannot change\nthe size of String16 objects and we cannot make anything virtual.\n\nTo add a flag to indicate whether a String16 is static without\nincreasing the size of non-static String16 objects, we repurpose a\nreserved field in SharedBuffer as \"for client use\".  With this, we can\ntag every String16 and perform memory operation differently based on\nhow the underlying buffers are allocated.\n\nBy using StaticString16, we are able to eliminate the runtime\nconstruction of a String16 and move it out of .bss section.\n\nBug: 138856262\nTest: Run newly added unit tests.\nChange-Id: I72bb8dc27a59b9ef34e0d934bc1e00b0f675855a\n"
    },
    {
      "commit": "643268f325e2bda64248df24913f8b68c842c95a",
      "tree": "4ddf6fdaa71ad280a6df08821c15ce97955a4c64",
      "parents": [
        "f3186de123c742166ec5e61b27b61af3ef929dfb"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 08 11:10:11 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 08 11:15:52 2018 -0700"
      },
      "message": "Move system/core/ off NO_ERROR.\n\nIt causes trouble for Windows, and OK already exists.\n\nBug: N/A\nTest: builds\nChange-Id: Ida22fd658b0ebb259c710ba39049b07c9e495d9c\n"
    },
    {
      "commit": "2a6a58a818d5cc38cb624a6a4154a93166d01f18",
      "tree": "a7a612b80717c9ed88e880fc9f160fa9b1b3ae25",
      "parents": [
        "6286088afee20c7c4cfe125cbddd3a13adc5fd15",
        "ab3203f38363e7b5fadfe281ed8870be6044b674"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Tue Jul 17 10:06:10 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jul 17 10:06:10 2018 -0700"
      },
      "message": "Merge \"[libutils]  Modernize codebase by replacing NULL with nullptr\"\nam: ab3203f383\n\nChange-Id: I5c2aaaea705a3ab82a5ad999f813e4cc22e63401\n"
    },
    {
      "commit": "e1731a4f2e05f1abb4a45602067708851eaf1e14",
      "tree": "339c0ce3d3de7d6f5e0fb9bdada9b6210d1d470f",
      "parents": [
        "895acebe946e34d2626716c5c4d7d7f2cc28c39d"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Mon Jul 16 18:11:34 2018 -0700"
      },
      "committer": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Mon Jul 16 18:11:34 2018 -0700"
      },
      "message": "[libutils]  Modernize codebase by replacing NULL with nullptr\n\nFixes -Wzero-as-null-pointer-constant warning.\n\nTest: m\nBug: 68236239\nChange-Id: I5e89ec8c42151875439d2656475a8739ab9cb7dc\n"
    },
    {
      "commit": "d6c3476582e25018248a37c6195bd80248faba10",
      "tree": "d685a6cb531c69d01358ec32c35db4134925ef81",
      "parents": [
        "2e9edab87735a767586de5f7bca7c3a61141401b",
        "41a294981b2ddab9eac0eb1fd79871561af5501e"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Thu Mar 08 21:44:42 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Mar 08 21:44:42 2018 +0000"
      },
      "message": "Merge \"libutils: Remove Static.cpp and darwin hacks.\" am: 929112bcd1\nam: 41a294981b\n\nChange-Id: Iebe132eaca4f9034a8e011881f1514f864529fc5\n"
    },
    {
      "commit": "241b93cfd3ffadd3e8b4342d8ec869ca197fb575",
      "tree": "2ca32c49d3e9a194272d46dcd25ed267fc48d940",
      "parents": [
        "1d5b102671ba3cf5da51026328a75012d56f3b98"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Mar 06 09:11:29 2018 -0800"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Mar 06 17:44:08 2018 +0000"
      },
      "message": "libutils: Remove Static.cpp and darwin hacks.\n\nBug: N/A\nTest: in internal master, the only libraries that reference this\n  symbol are:\n./prebuilts/sdk/tools/linux/bin/split-select android::gDarwinIsReallyAnnoying\n./prebuilts/sdk/tools/linux/bin/aapt android::gDarwinIsReallyAnnoying\n./prebuilts/sdk/tools/linux/bin/aapt2 android::gDarwinIsReallyAnnoying\n./prebuilts/sdk/tools/linux/lib64/libaapt2_jni.so android::gDarwinIsReallyAnnoying\n./prebuilts/sdk/tools/linux/lib64/libaapt2_jni.so android::gDarwinIsReallyAnnoying\n+ VNDK libraries\nTest: libutils_test\n\nChange-Id: Id39e5ef6438e48fa225ba06dbb59902ca5b60f70\n"
    },
    {
      "commit": "0e5fbea01c228050739abe8d6cd13d7fdfacf6ef",
      "tree": "3a5c4182dd9e1bbe0e0c569ae64056abfccf2805",
      "parents": [
        "cdf0fc60184dcda9c4de9ecdb39c5a0d97b698e1"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Thu Mar 01 11:03:04 2018 -0800"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Fri Mar 02 20:16:28 2018 +0000"
      },
      "message": "String16: remove integer overflows\n\nBug: 73826242\nTest: manual\nChange-Id: I32e13d61b944c1a527cf2d95473552d246e322be\n"
    },
    {
      "commit": "977f72f9bc5355650a2ca46863464f8ccfcc06d0",
      "tree": "124fd8ff75cc2f9b14a6e448cff9588e3825334e",
      "parents": [
        "451f83d476b1b2a72638f75266689689b7e06d1e"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Thu Mar 01 11:03:04 2018 -0800"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Thu Mar 01 11:04:08 2018 -0800"
      },
      "message": "String16: remove integer overflows\n\nBug: 73826242\nTest: manual\nChange-Id: I32e13d61b944c1a527cf2d95473552d246e322be\n"
    },
    {
      "commit": "d21cfab2446f07945b822641681e6b59c839158d",
      "tree": "c4d5392ec02f860abdf03a57f4d1124af202a34b",
      "parents": [
        "601ccfbcb75355852e5dba40ba4d169aee2331ec"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Fri Mar 10 08:58:36 2017 -0800"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Fri Mar 10 09:05:30 2017 -0800"
      },
      "message": "Add missing includes.\n\nIncludes are transitively imported by \u003cstring\u003e in String8.h + String16.h\nbut that include is being removed.\n\nTest: pass\nChange-Id: Ide5c011b40b4a4f031dd26ead08b5c8d5d299693\n"
    },
    {
      "commit": "22dbf3947fedf988e714a4703ddf85fc41413f90",
      "tree": "ad823e9592de58265e4740a4d1ae251bfa260348",
      "parents": [
        "6048d9db5f11045412504b533ea9a92a7df6354c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Feb 28 15:06:51 2017 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Mar 03 14:47:47 2017 -0800"
      },
      "message": "clean-up libutils includes\n\nmoved Foo.h as first include of Foo.cpp, and\nremoved redundant includes.\n\nMade NativeHandle non virtual.\n\n\nTest: run \u0026 compile\nBug: n/a\n\nChange-Id: I37fa746cd42c9ba23aba181f84cb6c619386406a"
    },
    {
      "commit": "1dcc0c82394ec9cd6887c7ca39f9b5024db01ac9",
      "tree": "5e07e40ae8bc52895b05b42e9d627c4f3057a0e0",
      "parents": [
        "de717d55c7a3f7d8051222f26ef12eb38b3777f2"
      ],
      "author": {
        "name": "Sergio Giro",
        "email": "sgiro@google.com",
        "time": "Wed Jul 20 20:01:33 2016 +0100"
      },
      "committer": {
        "name": "Sergio Giro",
        "email": "sgiro@google.com",
        "time": "Tue Aug 02 18:47:53 2016 +0000"
      },
      "message": "Unicode: specify destination length in utf8_to_utf16 methods\n\nString16(const char *utf8) now returns the empty string in case\na string ends halfway throw a utf8 character.\n\nBug: 29267949\n\nChange-Id: I5223caa7d42f4582a982609a898a02043265c6d3\n"
    },
    {
      "commit": "2a9a993af99585af0bce6eca6d92c86370977a27",
      "tree": "a91bec16022b9d29174f69418b206fe2a2af3e47",
      "parents": [
        "a0c90085ecd2477e8ccdcc7155e92ab38a8e928c",
        "8b452b876b90dcfff1dab9012b65b5e67c4531a4"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Mon May 16 15:06:22 2016 +0100"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Mon May 16 15:06:22 2016 +0100"
      },
      "message": "Merge commit \u00278b452b876b90dcfff1dab9012b65b5e67c4531a4\u0027 into manual_merge_8b452b8\n\nChange-Id: Iacdc2d521f669661b4979c03b0476512abdb37c7\n"
    },
    {
      "commit": "5bacef33c91e9625dfd09ecf638c2de7faecd34e",
      "tree": "545ac749f183ec37edc89eb5e2066427cc0457fa",
      "parents": [
        "ea41a18c933d20264b89fc89febf387231dc0c24"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Mon May 09 14:43:31 2016 +0100"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Mon May 09 19:45:07 2016 +0100"
      },
      "message": "Add String16#contains and strstr16 methods.\n\nThese are needed for aapt to find javadoc comments that contain\n\"@removed\" in order to skip them when printing styleable docs.\n\nBug: 28663748\nChange-Id: I8866d2167c41e11d6c2586da369560d5815fd13e\n"
    },
    {
      "commit": "9ac4e005b4fbc32fe63dd566c5c7e54e186fbe5c",
      "tree": "1d06f26f2d8eed8db561cbcbc7343a070c2f4761",
      "parents": [
        "95fd5270653d9004466ab54bfc3d7f82a5014baf"
      ],
      "author": {
        "name": "Samuel Tan",
        "email": "samueltan@google.com",
        "time": "Tue Feb 16 14:20:05 2016 -0800"
      },
      "committer": {
        "name": "Samuel Tan",
        "email": "samueltan@google.com",
        "time": "Thu Feb 18 17:04:23 2016 -0800"
      },
      "message": "libutils: add String8 and String16 std_string utility methods\n\nAdd utility methods that convert String16 and String8 into\nstd::string.\n\nAlso, remove a repeated include of \u003cutils/Unicode.h\u003e in\nString16.h, since it is not used in that header file,\nand is already included in String16.cpp.\n\nBUG: 27200800\nChange-Id: I5238aeb70689499763060a99dff9950fbb7adb3e\nTEST: libutils builds successfully.\n"
    },
    {
      "commit": "f9d16ef1065bc2bb6162d3e4cdd40f47f9961edf",
      "tree": "842738a20cf892950e6fbe9bbcf06908a46ba7d4",
      "parents": [
        "361b14777616a2d667d55eddeabfca24d816df0b"
      ],
      "author": {
        "name": "Samuel Tan",
        "email": "samueltan@google.com",
        "time": "Tue Feb 16 15:17:10 2016 -0800"
      },
      "committer": {
        "name": "Samuel Tan",
        "email": "samueltan@google.com",
        "time": "Tue Feb 16 15:21:34 2016 -0800"
      },
      "message": "libutils: remove whitespaces in String16.cpp and String16.h\n\nRemove trailing whitespaces in both these files.\n\nBUG: None\nChange-Id: I18eca5162871b5b2bf7757a7ef36a4e80073798c\n"
    },
    {
      "commit": "282efae9c3d14ca2641e5fea223cb1be204feff1",
      "tree": "4c2dfa576e743d3cf7780c017ca9757a95a2e1a2",
      "parents": [
        "fca4821e05f1d4684185b559d177ffde6937bf61"
      ],
      "author": {
        "name": "Sergio Giro",
        "email": "sgiro@google.com",
        "time": "Wed Sep 30 15:28:30 2015 +0100"
      },
      "committer": {
        "name": "Sergio Giro",
        "email": "sgiro@google.com",
        "time": "Wed Sep 30 15:42:02 2015 +0100"
      },
      "message": "system/core: remove methods returning SharedBuffer in String8, String16\n\nTowards deprecation of SharedBuffer\n\nChange-Id: I3069837db32837bcc0f5d8f1118ccd502c9070dc\n"
    },
    {
      "commit": "d2529f28308ba7583f4d8baaa937218d81cbe8bd",
      "tree": "08e7ec119fa22c98d69f649e7ffa05f544a7d9f0",
      "parents": [
        "1d758c90959225c76ed4d318290ad1bf11532409"
      ],
      "author": {
        "name": "Sergio Giro",
        "email": "sgiro@google.com",
        "time": "Wed Sep 23 16:22:59 2015 +0100"
      },
      "committer": {
        "name": "Sergio Giro",
        "email": "sgiro@google.com",
        "time": "Wed Sep 23 16:22:59 2015 +0100"
      },
      "message": "libutils: hide SharedBuffer by moving SharedBuffer.h to the implementation directory\n\nSome methods in header files of classes using SharedBuffer need\nto be moved to the implementation files accordingly\n\nChange-Id: I891f3ace2b940ab219e4e449040bfed71c0547db\n"
    },
    {
      "commit": "5bed8036644f552210a7cfcbed2d6d20cf2981b0",
      "tree": "37f784e181086e99b17e00d46b6da30529751539",
      "parents": [
        "bf0f25905b12581f05b65b1ebe95211c727ae483"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Apr 30 11:10:46 2014 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Jun 02 15:57:50 2014 -0700"
      },
      "message": "libutils: turn on -Werror\n\n- Deal with some -Wunused issues\n- Override PRI macros (windows)\n- Revert use of PRI macros on off64_t (linux)\n- Deal with a gnu++11 complaince issue\n\nChange-Id: Ie66751293bd84477a5a6dfd8a57e700a16e36964\n"
    },
    {
      "commit": "6443033f6d22db50f9a75fb0df750928ea70b498",
      "tree": "5c60de57cb244e6f371415313243e42457855744",
      "parents": [
        "967729b7ca675d6f2c895a1bd56216a62b217e50"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu May 29 12:45:00 2014 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu May 29 13:14:35 2014 -0700"
      },
      "message": "String16.cpp rm unused utils/Debug.h\n\nChange-Id: Ie7e3695770f20be33738a0f0a868cc914248d91a\n"
    },
    {
      "commit": "d98e07fdf9c338589f263c47ce5c844ed43efad5",
      "tree": "d4ff9849df225df1e4c46386fdabe30407ba5513",
      "parents": [
        "be06210c508d5878dcc7d185e5613f4c7e38dfe8"
      ],
      "author": {
        "name": "Alex Ray",
        "email": "aray@google.com",
        "time": "Fri Aug 02 14:40:08 2013 -0700"
      },
      "committer": {
        "name": "Alex Ray",
        "email": "aray@google.com",
        "time": "Fri Aug 02 14:40:08 2013 -0700"
      },
      "message": "move libs/utils to libutils\n\nChange-Id: I6cf4268599460791414882f91eeb88a992fbd29d\n"
    },
    {
      "commit": "4485d0d966d062d1b45b635e2447a2d2f96c3f38",
      "tree": "89a0c95a7a27261e626dbedfd3fcacff01e41b20",
      "parents": [
        "9eb2a3b1c0cc1ff3082a9283e24c8babc112f56b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 08 16:04:13 2013 -0700"
      },
      "committer": {
        "name": "Alex Ray",
        "email": "aray@google.com",
        "time": "Tue Jul 30 13:57:01 2013 -0700"
      },
      "message": "new String8, String16 ctors to initialize empty static strings with static linkage\n\nwhen libutils is statically linked, the ordering of the static\ninitializer is not guaranteed and therefore it\u0027s unsafe to use\nempty static strings: e.g.:\n\nstatic String8 sThisStaticStringIsNotSafe;\n\ninstead, this new constructor can be used:\n\nstatic String8 sThisStaticStringIsSafe(kEmptyString);\n\nChange-Id: Ia3daf1cab1c97d021c0ee9c2b394b5e27e8d6c0d\n"
    },
    {
      "commit": "9eb2a3b1c0cc1ff3082a9283e24c8babc112f56b",
      "tree": "f88a03d8dd28a8f641be1c2eac57a42f0a11e599",
      "parents": [
        "19159f90020c04ac2f4dcb39424d740f765ed9a3"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 06 20:20:50 2013 -0700"
      },
      "committer": {
        "name": "Alex Ray",
        "email": "aray@google.com",
        "time": "Tue Jul 30 13:57:01 2013 -0700"
      },
      "message": "libutils clean-up\n\nChange-Id: I6ff4cfc736751de2912c697f954e45e275f2d386\n"
    },
    {
      "commit": "ae07445e9793724324b93bb593fe20be2a386707",
      "tree": "21b2375319af1a9810b23628351d8d6863de837c",
      "parents": [
        "1b781ab0e0e8d59a7a8d1140bf6dee96a48a160c"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Mon Jan 09 18:35:44 2012 +0000"
      },
      "committer": {
        "name": "Alex Ray",
        "email": "aray@google.com",
        "time": "Tue Jul 30 13:56:58 2013 -0700"
      },
      "message": "Rename LOG_ASSERT to ALOG_ASSERT  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/157519\n\nBug: 5449033\nChange-Id: I8ceb2dba1b031a0fd68d15d146960d9ced62bbf3\n"
    },
    {
      "commit": "ba0165bef09729a33ab8e0ca329342be05e0d859",
      "tree": "2f961146c3c8c625a01902207485fed0d7a2cdcd",
      "parents": [
        "3a91fca00c6b3db62b4dc0da95ba30671caf3283"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Nov 09 14:37:23 2010 -0800"
      },
      "committer": {
        "name": "Alex Ray",
        "email": "aray@google.com",
        "time": "Tue Jul 30 13:56:55 2013 -0700"
      },
      "message": "Split UTF functions from String8/16\n\nSplit out all the UTF-8/16/32 handling code from String8/16 to its own\nfile to allow better reuse of code.\n\nChange-Id: If9ce63920edc75472c38da4adce0d13cda9ad2f7\n"
    },
    {
      "commit": "9a2d83e698b16ec86ad2751b6e7cf103ad645cce",
      "tree": "14c45647a106931bd544d517112a1cd7e7f67754",
      "parents": [
        "09b41cbf9fe74a831c0ad883406e03dfe0568d78"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Dec 04 09:38:48 2009 -0800"
      },
      "committer": {
        "name": "Alex Ray",
        "email": "aray@google.com",
        "time": "Tue Jul 30 13:56:52 2013 -0700"
      },
      "message": "Optional use of UTF-8 strings in resource bundles\n\nAllows the use of UTF-8 for packing resources instead of the\ndefault of UTF-16 for Java. When strings are extracted from the\nResStringPool, they are converted to UTF-16 and the result is\ncached for subsequent calls.\n\nWhen using aapt to package, add in the \"-8\" switch to pack the\nresources using UTF-8. This will result in the value, key, and\ntype strings as well as the compiled XML string values taking\nsignificantly less space in the final application package in\nmost scenarios.\n\nChange-Id: I129483f8b3d3b1c5869dced05cb525e494a6c83a\n"
    },
    {
      "commit": "ae31e705de96c769333652d187a896460d27320b",
      "tree": "580a664ceea8a4d78fbf7e472402b1cea0e0b4f6",
      "parents": [
        "7a4c83922e551506fdc6c5fbca6d107ebdeef867"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Mar 11 12:11:56 2009 -0700"
      },
      "committer": {
        "name": "Alex Ray",
        "email": "aray@google.com",
        "time": "Tue Jul 30 13:56:49 2013 -0700"
      },
      "message": "auto import from //branches/cupcake/...@137873\n"
    },
    {
      "commit": "7a4c83922e551506fdc6c5fbca6d107ebdeef867",
      "tree": "de87f6c1506f42d898eddaa8d90c70192e356ed2",
      "parents": [
        "cbb1011c95e0c25c29e40e203a6a31bccd029da3"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Mar 05 14:34:35 2009 -0800"
      },
      "committer": {
        "name": "Alex Ray",
        "email": "aray@google.com",
        "time": "Tue Jul 30 13:56:49 2013 -0700"
      },
      "message": "auto import from //depot/cupcake/@136594\n"
    },
    {
      "commit": "cbb1011c95e0c25c29e40e203a6a31bccd029da3",
      "tree": "4697a3a86867bf33c2d9dd4e4a2743d3eb947523",
      "parents": [
        "cf59fa8dc7ddca5a172860223b06afed5d4ec0e0"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:31:44 2009 -0800"
      },
      "committer": {
        "name": "Alex Ray",
        "email": "aray@google.com",
        "time": "Tue Jul 30 13:56:49 2013 -0700"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "cf59fa8dc7ddca5a172860223b06afed5d4ec0e0",
      "tree": "e780750523e4f032abf902a0e6ff8b9d52c54e54",
      "parents": [
        "7aa707a5d654b7af67b133955c454c8e23a12abc"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:45 2009 -0800"
      },
      "committer": {
        "name": "Alex Ray",
        "email": "aray@google.com",
        "time": "Tue Jul 30 13:56:49 2013 -0700"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "d245d1d09731d6a19e8a25559d3907f54441ac3d",
      "tree": "b79df48666f286bd33efb4ffdbf4b3fa28f5dd91",
      "parents": [
        "13f4c9fb279f1b34a3b47a6eac80b8a09d2d3a79"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "committer": {
        "name": "Alex Ray",
        "email": "aray@google.com",
        "time": "Tue Jul 30 13:56:46 2013 -0700"
      },
      "message": "Initial Contribution\n"
    }
  ]
}
