)]}'
{
  "log": [
    {
      "commit": "43847ac9d61e74673cd20141e7667a8cac473a5d",
      "tree": "6e5daed1feef86dc0e142cad03131d308dc7f90b",
      "parents": [
        "70604273a5e1299b2d89e4d59383af86d6e4ae57",
        "6442a2723cd3b7564ad7c0a0bd9ca343a8b4b211"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jun 30 18:57:00 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Jun 30 18:57:00 2022 +0000"
      },
      "message": "Merge \"Consolidate input OWNERS files\" am: 6442a2723c\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/native/+/2021055\n\nChange-Id: I734f4af018ace65f63814019cef00c4bcb7bb636\nSigned-off-by: Automerger Merge Worker \u003candroid-build-automerger-merge-worker@system.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "6442a2723cd3b7564ad7c0a0bd9ca343a8b4b211",
      "tree": "72c3e3a9b55b365e45b62a1edd63c564638f635a",
      "parents": [
        "0d68c19a293bf3d7159960c801e1a18e5e05d66f",
        "496c8b7232516f0c3970a7e8855f97f6a2d2012f"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jun 30 18:32:00 2022 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jun 30 18:32:00 2022 +0000"
      },
      "message": "Merge \"Consolidate input OWNERS files\""
    },
    {
      "commit": "496c8b7232516f0c3970a7e8855f97f6a2d2012f",
      "tree": "ea55283a0c44ab74bd4ffebc643883a8bca336c6",
      "parents": [
        "f81decc8b72d5d8d5ae928d1c5755c898fe87db9"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Thu Mar 10 18:03:23 2022 +0000"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Thu Jun 30 18:04:15 2022 +0000"
      },
      "message": "Consolidate input OWNERS files\n\nMake all input OWNERS file point to frameworks/base/INPUT_OWNERS.\n\nBug: None\nTest: upload\nChange-Id: Ibfe3e65d30330ac57554f52506bc43a04abb99b4\n"
    },
    {
      "commit": "d945d3e55ecd98d6554a9fdf6dfa1beb1c64a189",
      "tree": "3495973415e51d81fd3113af36d89533fbcce665",
      "parents": [
        "3dee0df77f44dd85b0f03b14db7966e1ba8faeb3"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Wed May 18 09:42:52 2022 -0700"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Thu Jun 16 17:35:36 2022 +0000"
      },
      "message": "Do not load keylayout if required kernel module is missing\n\nSome key layouts require the presence of a specific kernel module. If\nthe kernel module is not present, the layout should not be loaded.\n\nIn this CL, we add an option to specify which kernel modules / configs\nare needed inside the kl file.\n\nBug: 228005926\nTest: atest libinput_tests\nChange-Id: I0d2ab6298bd41df6dc56120bf0385e10da6c3bfe\nMerged-In: I0d2ab6298bd41df6dc56120bf0385e10da6c3bfe\n"
    },
    {
      "commit": "ec70ee2c604b82f9261513dbd3110ecdc9bc1f13",
      "tree": "f3358f369ed95766f7bb5208c996d01fe361844a",
      "parents": [
        "984f40b9cdd9e19554eb662378bf74a77c4651ff"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Wed May 18 09:42:52 2022 -0700"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Wed Jun 15 18:59:19 2022 +0000"
      },
      "message": "Do not load keylayout if required kernel module is missing\n\nSome key layouts require the presence of a specific kernel module. If\nthe kernel module is not present, the layout should not be loaded.\n\nIn this CL, we add an option to specify which kernel modules / configs\nare needed inside the kl file.\n\nBug: 228005926\nTest: atest libinput_tests\nChange-Id: I0d2ab6298bd41df6dc56120bf0385e10da6c3bfe\nMerged-In: I0d2ab6298bd41df6dc56120bf0385e10da6c3bfe\n"
    },
    {
      "commit": "984f40b9cdd9e19554eb662378bf74a77c4651ff",
      "tree": "4dc3fa887dc20a35a08c0fec66c10b7294f22371",
      "parents": [
        "0a448ac7ce04fae4f6631a78ec9314873fa7c577"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Wed May 18 09:45:54 2022 -0700"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Tue Jun 14 17:09:25 2022 -0700"
      },
      "message": "Avoid using KeyedVector in KeyLayoutMap\n\nThere\u0027s a supported alternative, std::unordered_map, that we should be\nusing instead.\n\nBug: 228005926\nTest: atest libinput_tests inputflinger_tests\nMerged-In: Ia1f41d17d7ee912534edffe1a1e7655866fa54c6\nChange-Id: Ia1f41d17d7ee912534edffe1a1e7655866fa54c6\n(cherry picked from commit 577962e532f235c67ea037f0fd7754834b1ff662)\n"
    },
    {
      "commit": "0a448ac7ce04fae4f6631a78ec9314873fa7c577",
      "tree": "1b5cb069696f8e543c88b1101706de3b1dc39d90",
      "parents": [
        "0292d80f469a4a2b0d8057af125392b73baae375"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Wed May 18 12:30:16 2022 -0700"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Tue Jun 14 16:47:10 2022 -0700"
      },
      "message": "Refactor input code for require_kernel_config parameter\n\nAs part of the next commit to allow kl files to specify a required\nkernel config, some small refactorings were done. Move those here to a\nseparate CL to make it easier to review.\n\nMerge conflict resolution:\nNeeded to make some small changes to account for the lack of ag/13538321\nin aosp repo. These are related to \"NamedEnum\" API change.\n\nBug: 228005926\nTest: atest libinput_tests\nMerged-In: Iab06bb6ef44807308ee2b3e6b8a0c780bb748f09\nChange-Id: Iab06bb6ef44807308ee2b3e6b8a0c780bb748f09\n(cherry picked from commit 5ed8eaab67ad7ec3ac1110d696f5d89596a5a887)\n"
    },
    {
      "commit": "53f0a5e01c0b24d0ed18dd926b7959e21a883540",
      "tree": "d30d27956be6b3a95356019656e8309b1e500e29",
      "parents": [
        "145c9735fa3ed34a0accfb9c8a7e2bb1b1935f88"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Wed May 18 09:45:54 2022 -0700"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Fri Jun 10 20:23:41 2022 +0000"
      },
      "message": "Avoid using KeyedVector in KeyLayoutMap\n\nThere\u0027s a supported alternative, std::unordered_map, that we should be\nusing instead.\n\nBug: 228005926\nTest: atest libinput_tests inputflinger_tests\nMerged-In: Ia1f41d17d7ee912534edffe1a1e7655866fa54c6\nChange-Id: Ia1f41d17d7ee912534edffe1a1e7655866fa54c6\n(cherry picked from commit 577962e532f235c67ea037f0fd7754834b1ff662)\n"
    },
    {
      "commit": "ac7f2e7be3759808b09a7e64d9e9510c4fc21e10",
      "tree": "0e68f6091983b70eb76e39324c75007411fb40dd",
      "parents": [
        "bcacbdb9d6297eb135a66ce5ed8d1885375c9a05"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Wed May 18 12:30:16 2022 -0700"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Fri Jun 10 16:28:24 2022 +0000"
      },
      "message": "Refactor input code for require_kernel_config parameter\n\nAs part of the next commit to allow kl files to specify a required\nkernel config, some small refactorings were done. Move those here to a\nseparate CL to make it easier to review.\n\nBug: 228005926\nTest: atest libinput_tests\nMerged-In: Iab06bb6ef44807308ee2b3e6b8a0c780bb748f09\nChange-Id: Iab06bb6ef44807308ee2b3e6b8a0c780bb748f09\n(cherry picked from commit 5ed8eaab67ad7ec3ac1110d696f5d89596a5a887)\n"
    },
    {
      "commit": "9bc73302795932e7a076858b8a1e736ee8e7b4da",
      "tree": "f05ee657f6266d39f743991e6d73a666d767b9a2",
      "parents": [
        "02165220ca657fa58900d28e02e46c7f8b6cdb73",
        "4ded0b06035d9e69ef88c5ccd0a794eb3104ad5c"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jun 03 21:21:04 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 03 21:21:04 2022 +0000"
      },
      "message": "Merge \"Validate indices when requesting PointerCoords\" into tm-dev"
    },
    {
      "commit": "4ded0b06035d9e69ef88c5ccd0a794eb3104ad5c",
      "tree": "a086c71cc555595eaeefd8a9a186ea52765f9133",
      "parents": [
        "e9d6733f53676f18a716c82425ed61bf030215a4"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Thu May 26 00:36:48 2022 +0000"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Fri Jun 03 18:04:17 2022 +0000"
      },
      "message": "Validate indices when requesting PointerCoords\n\nWe are investigating a crash in PointerCoords. To further understand\nwhat kind of MotionEvents we are dealing with, let\u0027s add some assertions\nto the PointerCoords that we are producing.\n\nIt\u0027s possible that pointerCount is zero, for example. This would help us\nfurther narrow down the issue.\n\nIn this CL, we are also adding a way to dump MotionEvent. This was\nloosely following MotionEvent.java::toString() method. At some point, we\nshould remove the Java method implementation and replace it with a\nsingle jni call to native. That work is out of scope for this CL.\n\nIn the jni layer, we can\u0027t remove the error checking/exception raising,\nbecause someone might be catching an exception and moving on, and a\nnative crash would break this pattern. We can consider doing that in the\nfuture under an experiment flag, though.\n\nBug: 233163975\nTest: printed MotionEvent in log to see the formatting\nChange-Id: I4f641c0cb89526a06146e4c0cf3a5fab2faa42f8\n"
    },
    {
      "commit": "a91d8576d9fbb5c2fecbcad8a4f3eef0d2fcc30f",
      "tree": "3051ae585a7ec9370f084f358ff1b5addb6aede2",
      "parents": [
        "97c6f77943da3d8646682e48540c0561e3ade620"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Tue May 17 05:03:42 2022 -0700"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Fri May 20 07:14:46 2022 +0000"
      },
      "message": "Add lock to protect UnwantedInteractionBlocker\n\nThe call to \u0027dump\u0027 may come from any thread, and therefore could cause a\ncrash. Add a lock to protect this input stage.\n\nTo run the test:\nadb shell -t \"/data/nativetest64/inputflinger_tests/inputflinger_tests --gtest_filter\u003d\u0027*Dump*\u0027 --gtest_repeat\u003d100000 --gtest_break_on_failure\"\n\nBefore this patch, the test failed after ~5K - ~13K iterations (took\n10-20 seconds to crash).\n\nBug: 232645962\nTest: m inputflinger_tests \u0026\u0026 adb sync data \u0026\u0026 \u003crun the test\u003e\nChange-Id: I2a199690450bc5bb4a8576aa59075e99d37a531b\n(cherry picked from commit 9f330c542b48dc6edba9aeaff3b3f4bf305713f3)\n"
    },
    {
      "commit": "56ceadd8672e07677fd82d853fc282c4c8dee47f",
      "tree": "7ad6ac86c74094248a60dbd4e10b002a6f9c3b15",
      "parents": [
        "38332d524c3f695d3fdd8fd9fbda117d0e97b2c0",
        "b17c62120b646f378c0b842b3d7fcce8a5540e3e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 18 21:45:38 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 18 21:45:38 2022 +0000"
      },
      "message": "Merge \"FTL: Yield futures without overhead\" into tm-dev"
    },
    {
      "commit": "b17c62120b646f378c0b842b3d7fcce8a5540e3e",
      "tree": "13f01098a51f9c387d3e8c87683f55ef40de4ba4",
      "parents": [
        "bb448ce9aa521f9574d94c9ec2d57eb7d37382cb"
      ],
      "author": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Mon May 09 09:36:19 2022 -0700"
      },
      "committer": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Mon May 16 08:13:29 2022 -0700"
      },
      "message": "FTL: Yield futures without overhead\n\nftl::yield, which lifts T to std::future\u003cT\u003e, incurs the cost of\nallocating, ref counting, and locking the latter\u0027s shared state.\n\nConsolidate the existing std::future extensions into ftl::Future,\nand optimize ftl::yield by including static storage for T within.\n\nBug: 232436803\nTest: simpleperf (-31% cycles in postFramebuffer)\nChange-Id: I9a7ca7de17e7af10515de97d2f6a0dfa24e35d7a\n"
    },
    {
      "commit": "4a4d046deca902981ece1ddfdac88e6fa4c76398",
      "tree": "f120b70ac82175fdf8c9ddbaa784cef97382a149",
      "parents": [
        "196096983dd978f87c0b4f15ad031361ca07f5db"
      ],
      "author": {
        "name": "Brian Duddie",
        "email": "bduddie@google.com",
        "time": "Mon May 09 16:49:49 2022 -0700"
      },
      "committer": {
        "name": "Brian Duddie",
        "email": "bduddie@google.com",
        "time": "Thu May 12 18:41:39 2022 +0000"
      },
      "message": "Limit access to head tracker sensor\n\nLock down access to only internal system usage and CTS due to privacy\nconsiderations.\n\nBug: 224619073\nTest: run SensorHeadTrackerTest with and without \"cmd unrestrict-ht\"\nChange-Id: I0bd37472e058c550de8d0098caa0bd439d8f12a5\n"
    },
    {
      "commit": "1ad281cea344d412d00d9806b75292b08cbd50be",
      "tree": "bd8b1505bf0a9e25850644658bfa2447355d036c",
      "parents": [
        "5d7e9601786b48e3b944c59493a8d3a982907479"
      ],
      "author": {
        "name": "Vaibhav Devmurari",
        "email": "vdevmurari@google.com",
        "time": "Thu Mar 17 14:21:39 2022 +0000"
      },
      "committer": {
        "name": "Vaibhav Devmurari",
        "email": "vdevmurari@google.com",
        "time": "Thu Apr 28 11:20:44 2022 +0000"
      },
      "message": "[API Review] Make changes to documentation for getActionButton and\ngetClassification APIs\n\nTest: atest android.view.cts.MotionEventTest\n\nBug: 224565087\nChange-Id: I23e7941b3372e2eaafbcc136460ec09c94c3ccbf\n(cherry picked from commit 38fae2ad25efa26f4a3173ee0b8867bbb655ea00)\n"
    },
    {
      "commit": "5593aefc70f5090ff1c6c8e8f32b497e7c9b43de",
      "tree": "240a8ddafbf13d267718ddf7bc1e595497185d79",
      "parents": [
        "e758e365f6845c872f4b4f5a3d347dfb22e1da02",
        "b1f7795338af549f22ca8d06809b268dec4f456b"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Apr 05 18:34:26 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 05 18:34:26 2022 +0000"
      },
      "message": "Merge \"Add note on when to call ASensorManager_getDynamicSensorList\" into tm-dev"
    },
    {
      "commit": "b1f7795338af549f22ca8d06809b268dec4f456b",
      "tree": "69da16a28bb064c124323f4d6aa00bad0e9931e2",
      "parents": [
        "4b0129205f6d1479cbc8c3de47c2e863441fca20"
      ],
      "author": {
        "name": "Erik Staats",
        "email": "estaats@google.com",
        "time": "Fri Mar 25 11:49:58 2022 -0700"
      },
      "committer": {
        "name": "Erik Staats",
        "email": "estaats@google.com",
        "time": "Fri Apr 01 10:37:02 2022 -0700"
      },
      "message": "Add note on when to call ASensorManager_getDynamicSensorList\n\nBug: 224562870\nTest: N/A. Just a change in the comments.\nChange-Id: Ia07fb3aac507a616c585c4e28106a04afea9605a\n"
    },
    {
      "commit": "2f01d772a56167b21b23c8dd4bfaa6cb5f667443",
      "tree": "c07e5a5bab48f726a48fa779589b25eb8559e889",
      "parents": [
        "c8df26e4e2e010f192d9111b543f9b27c4bab6d4"
      ],
      "author": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Wed Mar 23 16:01:29 2022 -0700"
      },
      "committer": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Thu Mar 31 10:34:04 2022 -0700"
      },
      "message": "FTL: Pull Flags into namespace\n\nBug: 185536303\nTest: Build\nChange-Id: Ia9aafc78565414815dfc14732ce85b06fa96e17b\n"
    },
    {
      "commit": "93ccdae23a797e920df7375be22d7e77e551bed1",
      "tree": "18c94cde5c6d85f28dbf7f503e801584d31b101c",
      "parents": [
        "f64f13e0a1c31248e968affd03e3f4a1eea520c0",
        "814ace3f256109b59ee9dc1d881887c4cb8b17ae"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Thu Mar 31 13:52:37 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 31 13:52:37 2022 +0000"
      },
      "message": "Merge changes from topic \"presubmit-am-c81762ef3b084d75afdf183d012bec54\" into tm-dev\n\n* changes:\n  Add PreferStylusOverTouchBlocker and handle multiple devices\n  Remove PreferStylusOverTouchBlocker\n  Block touches when stylus is down\n"
    },
    {
      "commit": "786237d5abc9aaf87ac15eb8a9fd3b5a52e44564",
      "tree": "2e92fd60e8304f60401a596a7aab976e86d96d74",
      "parents": [
        "90251c7554cd6c5bfea87bc357b4e7ee3deb1f2e",
        "f0fba372a99877db0f488069ea46f3858f04dca9"
      ],
      "author": {
        "name": "Ken Chen",
        "email": "cken@google.com",
        "time": "Thu Mar 31 04:10:28 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Mar 31 04:10:28 2022 +0000"
      },
      "message": "Merge \"Update data type and comments on tagSocket/untagSocket APIs\" am: 6b72346318 am: e32af6a222 am: f0fba372a9\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/native/+/2050124\n\nChange-Id: I4db06d88268fde45b2ef08a58875a649ab0a858b\nSigned-off-by: Automerger Merge Worker \u003candroid-build-automerger-merge-worker@system.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "814ace3f256109b59ee9dc1d881887c4cb8b17ae",
      "tree": "7f9d95a973aced16b8c6069338572328e59132f5",
      "parents": [
        "e844e01f78f98d54676d07f3a44f46ae410b9b7b"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Fri Mar 04 15:12:16 2022 -0800"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Wed Mar 30 22:01:41 2022 +0000"
      },
      "message": "Add PreferStylusOverTouchBlocker and handle multiple devices\n\nWe removed PreferStylusOverTouchBlocker previously in order to avoid a\ncrash. In this CL, we are adding it back in, and handling the case of\ninput device having \"SOURCE_STYLUS\", but reporting \"finger\" tool type.\n\nIf there\u0027s a stylus event with one of the pointers labeled as \u0027finger\u0027,\nlet\u0027s assume that the device supports simultaneous touch and stylus. For\nthis situation, simply disable PreferStylusOverTouchBlocker going\nforward for these devices, and pass through any events coming from there.\n\nCurrently, this happens on emulator. In their touch driver, they\nconfigure stylus properties as well as touch properties, but most of the\nevents that they send are TOOL_TYPE_FINGER. Previously, this triggered a\ncrash in PreferStylusOverTouchBlocker.\n\nBug: 222531989\nTest: atest inputflinger_tests\nChange-Id: Ifbb08858a4dfebc95c30ca19d6e68533855db7e4\n(cherry picked from commit a6a660fc0aa74ea4f5930b74523cf1893b2f9282)\n"
    },
    {
      "commit": "806c30f5554bc6efc9cf81e9bbe6a9dc382ea8e9",
      "tree": "ed133a4a482b16de2fc6e196bc87631b0d87d7bd",
      "parents": [
        "171a64a823952b0ab210688a1d342e9882078400"
      ],
      "author": {
        "name": "Ken Chen",
        "email": "cken@google.com",
        "time": "Thu Mar 31 00:31:12 2022 +0800"
      },
      "committer": {
        "name": "Ken Chen",
        "email": "cken@google.com",
        "time": "Thu Mar 31 03:41:20 2022 +0800"
      },
      "message": "Update data type and comments on tagSocket/untagSocket APIs\n\n- Use uint32_t for tag\n- Document some possible error codes\n- Explain what the tag is used for\n\nBug: 223423155\nTest: CtsNetTestCases:android.net.TrafficStatsTest\nTest: CtsNativeNetPlatformTestCases\nChange-Id: Ib5b95f7d8e2158cc31183c2d5a4964244e295eb2\n"
    },
    {
      "commit": "6e406607ae61eb814d4c01554bfd49ab97aa1299",
      "tree": "6c49b4ad9e6766c88f5883d6a915f0dcf411f200",
      "parents": [
        "910309259e46d4679bc6ebb6c12b309da5f8f0b0",
        "a7fe7eb75957872935b934633ca3e614ed0944c5"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Mar 30 18:20:00 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 30 18:20:00 2022 +0000"
      },
      "message": "Merge \"FTL: Remove libutils dependency of Flags\" into tm-dev"
    },
    {
      "commit": "bd006786a7f19297e11c84474777ee6c9e15b0d9",
      "tree": "015976ef5c93128876bfd335dd6f1799257f6796",
      "parents": [
        "56becd9a2e8abc5694809a7af6b69eeab018fb23"
      ],
      "author": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Tue Feb 15 22:20:16 2022 -0800"
      },
      "committer": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Mon Mar 28 11:43:07 2022 -0700"
      },
      "message": "FTL: Add thread safety helpers\n\nBug: 185536303\nTest: ftl_test\nChange-Id: I0f0550d0608a11b137741cd94248b5bc533a0304\n"
    },
    {
      "commit": "a7fe7eb75957872935b934633ca3e614ed0944c5",
      "tree": "5a7fddd078b910b646ec0f66f4840edd5c2492b6",
      "parents": [
        "af5fa6bf7519e780e017cd1af87ed0a4b3dcb5b8"
      ],
      "author": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Wed Feb 16 10:44:28 2022 -0800"
      },
      "committer": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Wed Mar 23 15:44:03 2022 -0700"
      },
      "message": "FTL: Remove libutils dependency of Flags\n\nAlso, fix the __builtin type suffix in flag_string to avoid truncation\nof upper bits for 64-bit flags on platforms with 32-bit unsigned long.\n\nBug: 185536303\nTest: ftl_test\nChange-Id: I1719255cc4dd60ec3203e111c37d6851471c631d\n"
    },
    {
      "commit": "be204679335a0f2b513b9430e1c6ada0baceefa0",
      "tree": "a05506a7a1b2eba5bb03c431b449f97e344b93b0",
      "parents": [
        "0391e3ca8bdcfeee4061a9b52d97918f36095bb6",
        "a83e726a6b8f44ee01275141ffa5f74adf9c4d40"
      ],
      "author": {
        "name": "Eric Biggers",
        "email": "ebiggers@google.com",
        "time": "Wed Mar 16 01:27:48 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Mar 16 01:27:48 2022 +0000"
      },
      "message": "Merge \"Clarify meaning of key parameter to AStorageManager_mountObb()\" am: a90b4e7b44 am: 9375660cfe am: a83e726a6b\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/native/+/2008013\n\nChange-Id: I9a119616708f95c49d7cbaa9221017dc3cec60aa\n"
    },
    {
      "commit": "7f0fdc14f5f80f741a0f45dbb0d5f7beed617e95",
      "tree": "da9a17d5ba2842c335020675ccfc8fb28d1bdf60",
      "parents": [
        "2d2be5a206b385b9cee44c6bbc3565c74d4dcf0e"
      ],
      "author": {
        "name": "Eric Biggers",
        "email": "ebiggers@google.com",
        "time": "Fri Mar 04 21:49:47 2022 +0000"
      },
      "committer": {
        "name": "Eric Biggers",
        "email": "ebiggers@google.com",
        "time": "Tue Mar 15 21:10:59 2022 +0000"
      },
      "message": "Clarify meaning of key parameter to AStorageManager_mountObb()\n\nThis is a follow-up to the change https://r.android.com/2003052.\n\nBug: 216475849\nChange-Id: I684363e1b6ebbe36fa9f1367d7022d6122dc206f\n"
    },
    {
      "commit": "8e6ce224398316a809ac21ba661ba2c4ed9704c7",
      "tree": "26607d8b071eb84e74500b86c93ab7b82010e026",
      "parents": [
        "e73b8065221ff4afb123615646cb2a842906367c"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Thu Feb 24 09:08:54 2022 -0800"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Mon Feb 28 21:45:39 2022 +0000"
      },
      "message": "Fix input injection with zero coords\n\nIn the native MotionEvent class, setting an axis value to 0 is\nequivalent to removing the axis from the bitfield of valid axes. This is\nbecause getting an axis value that is not set in the bitfield will\nreturn 0 by default.\n\nThis means that we cannot rely on the bitfield of valid axes to know\nexactly which axes are valid, since all axes are always valid with a\ndefault value of 0.\n\nRather than transforming only the axies that are set in the bitfield, we\nadd a helper function to MotionEvent to transform the entire\nPointerCoords.\n\nBug: 219711163\nTest: manual, see bug: adb shell input draganddrop 665 531 0 531 1000\nChange-Id: I335beebf8263a38f180f2f4c6a788fbd69d15a6f\nMerged-In: I335beebf8263a38f180f2f4c6a788fbd69d15a6f\n(cherry picked from commit 890532e49c0e329c0c462fb2733c5ae27a395b7b)\n"
    },
    {
      "commit": "7aad08685be0698c0b5b7f1f407cf1ab12f7d32a",
      "tree": "6296795038db7b9629ad770727e0f68623228dfa",
      "parents": [
        "7c1174b9ec594fa1ca2f2bbbe0592e2ee98fa968",
        "f4dc39f6b3f7a464fb111f3a51a9d44b9fcb29a6"
      ],
      "author": {
        "name": "Rachel Lee",
        "email": "rnlee@google.com",
        "time": "Thu Feb 17 19:49:54 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 17 19:49:54 2022 +0000"
      },
      "message": "Merge \"Rename to VsyncCallback \u0026 presentation time.\""
    },
    {
      "commit": "c0778114e8254636349b418bf63c10ea4eb4ce0a",
      "tree": "e6d3357a66e07808c9c2ea0cf3139e97f2cb4135",
      "parents": [
        "6928b561c4973beecf86f56c3e1ae7f237b30cc6",
        "206996f064f098b80522f9666863fe412b956536"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 17 06:49:25 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 17 06:49:25 2022 +0000"
      },
      "message": "Merge changes I35923e79,Icc1263eb\n\n* changes:\n  FTL: Refine container semantics\n  FTL: Prevent InitializerList overflow\n"
    },
    {
      "commit": "6b531cf67b1c5a1f6288b7cdb615279474030a32",
      "tree": "04b9728c1c33e748d267c1ea10dae78a8ce91fb7",
      "parents": [
        "ad5caaf8860dce8bf2260ac081b48e2ff21b6892",
        "8576dd703e41f0d05a4f4635c675e1aedb77561a"
      ],
      "author": {
        "name": "Vaibhav Bhaveshkumar Devmurari",
        "email": "vdevmurari@google.com",
        "time": "Wed Feb 16 13:12:18 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 16 13:12:18 2022 +0000"
      },
      "message": "Merge \"Add new NDK function definitions in input.h\""
    },
    {
      "commit": "f4dc39f6b3f7a464fb111f3a51a9d44b9fcb29a6",
      "tree": "d19640189470c482adef2caddd84a4125000ef41",
      "parents": [
        "d16ab56ac64ce11af36930172d5c50b2ea47d652"
      ],
      "author": {
        "name": "Rachel Lee",
        "email": "rnlee@google.com",
        "time": "Tue Feb 15 18:30:59 2022 -0800"
      },
      "committer": {
        "name": "Rachel Lee",
        "email": "rnlee@google.com",
        "time": "Tue Feb 15 18:32:22 2022 -0800"
      },
      "message": "Rename to VsyncCallback \u0026 presentation time.\n\nBug: 217370454\nTest: atest ChoreographerNativeTest\nChange-Id: Id26497b0f94845e392778954039996b9bbab834f\n"
    },
    {
      "commit": "206996f064f098b80522f9666863fe412b956536",
      "tree": "354a44c1ec649ce0dc65f7472666194c4da46bff",
      "parents": [
        "17f6b97257ef79f6252a5a45ac3a1e647b3a5fd0"
      ],
      "author": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Thu Jan 20 13:21:57 2022 -0800"
      },
      "committer": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Tue Feb 15 16:40:46 2022 -0800"
      },
      "message": "FTL: Refine container semantics\n\nAllow constructing StaticVector and SmallVector by moving smaller\nconvertible vectors, which so far incurred a copy. Allow the same\ncopy/move conversion for SmallMap.\n\nConsistently with StaticVector, do not require assignable elements for\nthe SmallVector to be assignable, which notably enables SmallMap to be\nassignable despite its const keys.\n\nAllow comparison of convertible containers.\n\nBug: 185536303\nTest: ftl_test\nChange-Id: I35923e794ef26178dc3072f514dea7ad5600bc15\n"
    },
    {
      "commit": "17f6b97257ef79f6252a5a45ac3a1e647b3a5fd0",
      "tree": "5ff26555ebda65667f718e90cf6ac747576d1cad",
      "parents": [
        "953b7fd033714607ac14e106102835ecf03e3dc5"
      ],
      "author": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Tue Jan 25 13:41:52 2022 -0800"
      },
      "committer": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Tue Feb 15 16:40:46 2022 -0800"
      },
      "message": "FTL: Prevent InitializerList overflow\n\nUsers so far use the deduction guide, but this should not compile:\n\n    ftl::StaticVector\u003cint, 1\u003e vector \u003d ftl::init::list\u003cint\u003e(0)(1);\n\nBug: 185536303\nTest: m ftl_test\nChange-Id: Icc1263ebdb9326948f0fc2f9c9f01f21b0b8302d\n"
    },
    {
      "commit": "8576dd703e41f0d05a4f4635c675e1aedb77561a",
      "tree": "0a29db4e6f6ec9dec8722890ce0bcc3ba9b4c12f",
      "parents": [
        "9df93aa6c7a50401d4f2a121cdbc51ea27e77a3b"
      ],
      "author": {
        "name": "Vaibhav",
        "email": "vdevmurari@google.com",
        "time": "Fri Feb 11 18:19:06 2022 +0530"
      },
      "committer": {
        "name": "Vaibhav",
        "email": "vdevmurari@google.com",
        "time": "Tue Feb 15 17:59:03 2022 +0530"
      },
      "message": "Add new NDK function definitions in input.h\n\nThis CL adds 2 new functions to get ActionButton and Classification from\na MotionEvent.\n\nTest: atest android.view.cts.MotionEventTest\n\nBug: 213266814\n\nChange-Id: Id264a5d110c6c65a7daae89194ab234f64832e13\n"
    },
    {
      "commit": "9c6d07b2a4bb2e87f91822ba6d2fcf34f61a2513",
      "tree": "f2b4773ba4fd8df192800046889ee7d532052a85",
      "parents": [
        "9b41455526f0c4a665252774a466c93a90cb5755",
        "f0a3d814ee6e01b0dd398a9df4af462eb91d0b59"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Feb 11 18:38:20 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 11 18:38:20 2022 +0000"
      },
      "message": "Merge \"ftl::Flags: Offer set and clear APIs for convenience and readability\""
    },
    {
      "commit": "f0a3d814ee6e01b0dd398a9df4af462eb91d0b59",
      "tree": "63bb5364af89c1be886672084eaba052a34ed98b",
      "parents": [
        "f24d8d6d71a865b4e6409420c42356c8bfd1bc87"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Mon Feb 07 02:54:39 2022 -0800"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Fri Feb 11 08:22:13 2022 -0800"
      },
      "message": "ftl::Flags: Offer set and clear APIs for convenience and readability\n\nBug: None\nTest: None\nChange-Id: Idbe075dd919fd71bdcb7b1fb4a182c44d243b378\n"
    },
    {
      "commit": "ec9f965bb167b9d64ad4dc38641a8b9809d9cf6c",
      "tree": "f28b4990a6871eb45ed2f1773adab587859523a4",
      "parents": [
        "577f4a6b99fc5f5c705e34b6659f37c4a30cc00e",
        "d35a5741259e3b5fa6e8f196a1cd8230c7c9abbd"
      ],
      "author": {
        "name": "Erik Staats",
        "email": "estaats@google.com",
        "time": "Wed Feb 09 15:04:44 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 09 15:04:44 2022 +0000"
      },
      "message": "Merge \"Add ASensorManager_getDynamicSensorList.\""
    },
    {
      "commit": "d35a5741259e3b5fa6e8f196a1cd8230c7c9abbd",
      "tree": "6c13f61c5d6a46b3f8d0df8fd2d944a949913c71",
      "parents": [
        "7ae2eac6b2b091afd7830bb9265d66a9c9e866bf"
      ],
      "author": {
        "name": "Erik Staats",
        "email": "estaats@google.com",
        "time": "Fri Feb 04 06:37:58 2022 -0800"
      },
      "committer": {
        "name": "Erik Staats",
        "email": "estaats@google.com",
        "time": "Tue Feb 08 14:13:08 2022 -0800"
      },
      "message": "Add ASensorManager_getDynamicSensorList.\n\nBug: 217890463\nTest: Used uhid-sample to add a dynamic sensor and verified it can be\n used with sensor_test.\nChange-Id: Ida2ce53c3d94ed530ba4981d299fa4855c35e337\n"
    },
    {
      "commit": "72c7104cab3a0e5bc886fab3acde0ba77fbabd49",
      "tree": "c0bfd5cc892b7b2ddf87800fdbb9a4007a3e72a0",
      "parents": [
        "9f3153648834dfa2222d3b001d0ecd3c4933127d"
      ],
      "author": {
        "name": "Eva Chen",
        "email": "evaschen@google.com",
        "time": "Mon Jan 10 21:07:51 2022 -0800"
      },
      "committer": {
        "name": "Eva Chen",
        "email": "evaschen@google.com",
        "time": "Thu Feb 03 23:34:06 2022 -0800"
      },
      "message": "Add TYPE_HEADING sensor type to sensor NDK.\n\nBug: 189983308\nTest: Presubmits\nChange-Id: I53bc59d6a1d03ab5e980920f0420ce0263cbc52c\n"
    },
    {
      "commit": "c0420b79bdfc7954a62fa10f3f29947e1130283c",
      "tree": "1fe056d60803a9bd70618c1c4f7a736eeaa22278",
      "parents": [
        "c945c1b8c2beda7f2b9041e88c6ddd1657a6afba"
      ],
      "author": {
        "name": "Eva Chen",
        "email": "evaschen@google.com",
        "time": "Fri Apr 09 15:44:12 2021 -0700"
      },
      "committer": {
        "name": "Eva Chen",
        "email": "evaschen@google.com",
        "time": "Thu Feb 03 13:52:33 2022 -0800"
      },
      "message": "Add limited axes imu sensor types to sensor NDK.\n\nIncluded sensors:\n- SENSOR_TYPE_ACCELEROMETER_LIMITED_AXES\n- SENSOR_TYPE_GYROSCOPE_LIMITED_AXES\n- SENSOR_TYPE_ACCELEROMETER_LIMITED_AXES_UNCALIBRATED\n- SENSOR_TYPE_GYROSCOPE_LIMITED_AXES_UNCALIBRATED\n\nThese changes will enable support for automotive style IMUs that have\nmore limited axes for accelerometers (x-axis and y-axis) and gyroscopes\n(z-axis).\n\nBug: 187342209\nTest: Presubmits\nChange-Id: I7f8ecd4f3323c71c723a6415e573413cb464a0f1\n"
    },
    {
      "commit": "599126ca2f033c17642dfeb0848a7fbd4ca4b60e",
      "tree": "e42116b39ccc832a1b0e4029e77934c09f49893d",
      "parents": [
        "25d42b5a2339ee29d4c52cab00ebcbcdb0496fd1",
        "ba0a8758240241a852d7fd78603be5c10cb0f05c"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Mon Jan 31 21:38:42 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 31 21:38:42 2022 +0000"
      },
      "message": "Merge \"Add ChromeOS palm rejection model\""
    },
    {
      "commit": "ba0a8758240241a852d7fd78603be5c10cb0f05c",
      "tree": "c3ed943e4502a6d3af9c44359c1b788cfabc0296",
      "parents": [
        "c22af23cc8c884ecfbdbc44883b350402e6ece00"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Tue Sep 14 14:43:25 2021 -0700"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Mon Jan 31 09:37:53 2022 -0800"
      },
      "message": "Add ChromeOS palm rejection model\n\nThis model will be used to block palm presses. It takes in a stream of\nevdev events, and reports back the pointers which should be considered\npalm.\n\nBug: 198472780\nTest: atest libpalmrejection_test inputflinger_tests\nTest: \"adb shell device_config put input_native_boot\npalm_rejection_enabled 0\" and make sure that \"adb shell dumpsys input\"\nshows that there aren\u0027t any palm rejectors inside\nUnwantedInteractionBlocker\n\nChange-Id: If979d335af29cf5e93b26336fea56a3a895cc562\n"
    },
    {
      "commit": "9c116bd7d1236ead78a87fe9a58d287f1fdd4430",
      "tree": "03e7d55785925b7bb3ba04b823e41052a32230c1",
      "parents": [
        "c22af23cc8c884ecfbdbc44883b350402e6ece00",
        "f6ce3989e8c149173244e9f872beffee42fbf86f"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Jan 29 17:51:08 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Jan 29 17:51:08 2022 +0000"
      },
      "message": "Merge \"Expose 1010102 config for bitmap\""
    },
    {
      "commit": "e713b77b854126703b6ab51e6a603a17c39ce5bf",
      "tree": "44434c40f60d372eee1765d86bcd6476c0be3b16",
      "parents": [
        "ce2d5b6830dceb7b7ceea0bf1a94e884b204ff1b",
        "406c8abeff595432782740345abad06280d18032"
      ],
      "author": {
        "name": "Bo Liu",
        "email": "boliu@google.com",
        "time": "Fri Jan 28 18:57:27 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 28 18:57:27 2022 +0000"
      },
      "message": "Merge \"Performance hint ndk APIs\""
    },
    {
      "commit": "390c0e9bf784711e4f4040f36d57d80dace70f58",
      "tree": "078d2e362e2d312bad8d4835832849316ccfd1a2",
      "parents": [
        "bc5f68fd1e3c3874a6c0832530254f8f1081fa2e",
        "0174738c28994b2c710c52cf0ebcfc51013ed833"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Thu Jan 27 17:03:39 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 27 17:03:39 2022 +0000"
      },
      "message": "Merge \"Add static_asserts for the size of InputMessage\""
    },
    {
      "commit": "0174738c28994b2c710c52cf0ebcfc51013ed833",
      "tree": "2fcb46706b8de111c67dacbbcad2cd6502e9e403",
      "parents": [
        "93970282ff05dbec8a387df40f89f2812b3ccfae"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Thu Jan 20 13:23:27 2022 -0800"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Wed Jan 26 23:34:16 2022 -0800"
      },
      "message": "Add static_asserts for the size of InputMessage\n\nInside InputTransport.cpp, we are reading and writing InputMessages.\nThis is done in the following way:\n\nread\n::recv(getFd(), msg, sizeof(InputMessage), MSG_DONTWAIT);\n\nwrite\n::send(getFd(), \u0026cleanMsg, msgLength, MSG_DONTWAIT | MSG_NOSIGNAL);\n\nWe are sending a variable-length message across the socket, and\nreceiving a maximum of sizeof(InputMessage) when reading it.\n\nIn this CL, we are adding asserts on the _maximum_ length of the message\nthat we would send across the socket. Since we typically only have a few\npointers at most, while MAX_POINTERS\u003d16, in reality the communication\nbetween system_server and app will use much less data.\n\nHowever, it\u0027s still useful to add these asserts to understand the\nworst-case scenario of message transfer.\n\nBug: 167946763\nTest: m StructLayout_test\nChange-Id: I281ecea62b392dea56936d031ab9c4ee18add93f\n"
    },
    {
      "commit": "a81824b8306af8e790fa7dbfc6d8ff627913906c",
      "tree": "976122ea7b218d88ea92dd988a90352e831beede",
      "parents": [
        "cfb660d156fac6bee70b9daf1895c8b0ca906e93",
        "f8437960340854120486a547f0687b661629c3d9"
      ],
      "author": {
        "name": "Philip Junker",
        "email": "philipjunker@google.com",
        "time": "Wed Jan 26 08:46:29 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 26 08:46:29 2022 +0000"
      },
      "message": "Merge \"Set keyboard type to maximum of all sub devices.\""
    },
    {
      "commit": "f8437960340854120486a547f0687b661629c3d9",
      "tree": "8dad75927d1e023ea807a404c910adcefb25a90b",
      "parents": [
        "4af3b3dcdfe9e8174d766f59e20e133df89be179"
      ],
      "author": {
        "name": "Philip Junker",
        "email": "philipjunker@google.com",
        "time": "Tue Jan 25 21:20:19 2022 +0100"
      },
      "committer": {
        "name": "Philip Junker",
        "email": "philipjunker@google.com",
        "time": "Tue Jan 25 23:50:12 2022 +0100"
      },
      "message": "Set keyboard type to maximum of all sub devices.\n\nBug: 216328642\nTest: atest KeyboardLayoutChangeTest\nChange-Id: Id01a7ea1c766dad0f5c6bb36f61d71a9eafa2d10\n"
    },
    {
      "commit": "f6ce3989e8c149173244e9f872beffee42fbf86f",
      "tree": "73c7633c0ccf7606b3c5d2cc914bb56058f021c5",
      "parents": [
        "5bf1372ee7374fe9ec4554cf4b615e31dbae5299"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Thu Jan 20 14:31:35 2022 -0800"
      },
      "committer": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Tue Jan 25 18:48:10 2022 +0000"
      },
      "message": "Expose 1010102 config for bitmap\n\nBug: 200307898\nTest: CtsGraphicsTestCases\nChange-Id: I0201bbf51458aefd6f6c1c092f91cf7739cbc293\n"
    },
    {
      "commit": "582c98b9be21d1bef49b8a7c8d5138c22c36b3ed",
      "tree": "e6b1e9b42eabacbe55dc0388ca9b28836ce83a87",
      "parents": [
        "6db68e1d8390a145bbfeb62e2f392052b1d5868a",
        "1fb2ddcb4cfb3c848b69ae2fe27b6c1b66ae792c"
      ],
      "author": {
        "name": "Rachel Lee",
        "email": "rnlee@google.com",
        "time": "Mon Jan 24 19:54:33 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 24 19:54:33 2022 +0000"
      },
      "message": "Merge \"Improve ASurfaceTransaction_setFrameTimeline docs.\""
    },
    {
      "commit": "04667b7f2d792ee498bde06af63cc3771849a3c3",
      "tree": "710997e7e70d3da392cab36bdba7249868c3755c",
      "parents": [
        "4e0d20d43aa955587e468a92a4b0a491b4733f8e"
      ],
      "author": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Wed Dec 15 13:14:54 2021 -0800"
      },
      "committer": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Fri Jan 14 17:00:07 2022 -0800"
      },
      "message": "FTL: Tidy up API\n\nMove array_traits.h to details, and rename enum_cast to its proposed\nC++23 counterpart.\n\nBug: 185536303\nTest: ftl_test\nChange-Id: I432448d388d388491066ef37db05c5b9d67550bc\n"
    },
    {
      "commit": "1fb2ddcb4cfb3c848b69ae2fe27b6c1b66ae792c",
      "tree": "69600e8ff05e4f83e08c2666d9daaa6565e4f5cd",
      "parents": [
        "14e7dc8bc7503d2ca0d525a0e5909c29056f8320"
      ],
      "author": {
        "name": "Rachel Lee",
        "email": "rnlee@google.com",
        "time": "Wed Jan 12 14:33:07 2022 -0800"
      },
      "committer": {
        "name": "Rachel Lee",
        "email": "rnlee@google.com",
        "time": "Fri Jan 14 16:01:05 2022 -0800"
      },
      "message": "Improve ASurfaceTransaction_setFrameTimeline docs.\n\nAlso use a new typedef AVsyncId shared in AChoreographer and\nASurfaceControl.\n\nTest: atest ASurfaceControlTest; atest ChoreographerNativeTest\nBug: 214063411\nChange-Id: If24f144404038064de2ba72cca44572aca507e44\n"
    },
    {
      "commit": "bd2fbcb8f8b568882eac6e6cb2839c2915270df7",
      "tree": "5d7b6bb8177a1af3c5daf8cf93d5cbefd022d092",
      "parents": [
        "30dfc654ec79056b03f4656901a27ab82c3f5e34",
        "6dbd0ce22d86e487b000d4eac75af35c1ffec58e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 14 18:48:14 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 14 18:48:14 2022 +0000"
      },
      "message": "Merge \"Use std::vector in Input.h\""
    },
    {
      "commit": "a45a7991c60d6d1447888aec084feda1d950c0ef",
      "tree": "b82a67856912040284adc2088ec21c2c5313cc64",
      "parents": [
        "106d17f6cb6d87abd789f44c2ea23d54df449ecd",
        "62eff3597b6cabba1052ce86e5caebda2f2a7de5"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 14 17:25:09 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 14 17:25:09 2022 +0000"
      },
      "message": "Merge changes I9b36d834,I3141992c\n\n* changes:\n  SF: Delete SchedulerUtils.{h,cpp}\n  FTL: Add variadic concatenation\n"
    },
    {
      "commit": "fd90d8e75a7eac6046c362028b0fdcab48363233",
      "tree": "320858983b20884427bd41e3b327596e10adadbb",
      "parents": [
        "d4c6a656d265504207e79fde2fcd988548cf4c37",
        "2825fa2979c783b879e2fe251baf37a139607ac0"
      ],
      "author": {
        "name": "Rachel Lee",
        "email": "rnlee@google.com",
        "time": "Thu Jan 13 22:44:30 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 13 22:44:30 2022 +0000"
      },
      "message": "Merge \"Rename AChoreographer frame timeline methods.\""
    },
    {
      "commit": "6dbd0ce22d86e487b000d4eac75af35c1ffec58e",
      "tree": "6b67a592ebd2ff3d7ab81ad09de6be273d7ab46b",
      "parents": [
        "08843dfa88678ab317a4f2515f716e8e21c0f349"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Thu Jan 13 01:24:14 2022 -0800"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Thu Jan 13 01:52:37 2022 -0800"
      },
      "message": "Use std::vector in Input.h\n\nConvert old code from android\u0027s Vector to std::vector.\n\nBug: 167946763\nTest: atest libinput_tests\nChange-Id: I5c53583f6f1e5d577882d94d356f23bdd516be1e\n"
    },
    {
      "commit": "f261da004a94303bc904971c2242d1294f6dab8a",
      "tree": "017ac717b1c066074c52126eb318975ff26d30c3",
      "parents": [
        "8361349b74e20391fa46553467dc702c86f8f1f1",
        "68207fd7480660a2952b97765323d41f1dd24320"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 13 06:39:20 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Jan 13 06:39:20 2022 +0000"
      },
      "message": "Merge \"Add tagSocket/untagSocket NDK APIs\" am: 8fc5367b3f am: f32288186b am: 0a506939d0 am: 68207fd748\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1940493\n\nChange-Id: I70bac3fd2c43fb56c9b23659561b20c069f14e8f\n"
    },
    {
      "commit": "68207fd7480660a2952b97765323d41f1dd24320",
      "tree": "3bb802c8993730f4629614e88bd7e10c7b178bcd",
      "parents": [
        "7888165b292b676f497fa02f816c8a5e7f205f67",
        "0a506939d0bf0689ac0bb015d543505e82f0d66c"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 13 06:24:56 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Jan 13 06:24:56 2022 +0000"
      },
      "message": "Merge \"Add tagSocket/untagSocket NDK APIs\" am: 8fc5367b3f am: f32288186b am: 0a506939d0\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1940493\n\nChange-Id: I7b687d3698bc7321b3aa48dc4014346c70443fa0\n"
    },
    {
      "commit": "2825fa2979c783b879e2fe251baf37a139607ac0",
      "tree": "af253c8e0c604a1fcdac2274847074be35055c91",
      "parents": [
        "14e7dc8bc7503d2ca0d525a0e5909c29056f8320"
      ],
      "author": {
        "name": "Rachel Lee",
        "email": "rnlee@google.com",
        "time": "Wed Jan 12 17:35:16 2022 -0800"
      },
      "committer": {
        "name": "Rachel Lee",
        "email": "rnlee@google.com",
        "time": "Wed Jan 12 17:50:31 2022 -0800"
      },
      "message": "Rename AChoreographer frame timeline methods.\n\nTest: atest ChoreographerNativeTest\nBug: 214303753\nChange-Id: Id7c6ddcf7e0d46fb0b6eff35e46b4f937b59a058\n"
    },
    {
      "commit": "a9b7f039c257c32947056a9bc0625adaaf9a427b",
      "tree": "ce769d36dd81e7388d15d76d77dbb0e38e8d081c",
      "parents": [
        "f82a5a92033f3d5e6d86890ee2b11e185063b0cc"
      ],
      "author": {
        "name": "Ken Chen",
        "email": "cken@google.com",
        "time": "Thu Jan 06 10:29:27 2022 +0800"
      },
      "committer": {
        "name": "Ken Chen",
        "email": "cken@google.com",
        "time": "Thu Jan 13 08:52:27 2022 +0800"
      },
      "message": "Add tagSocket/untagSocket NDK APIs\n\nProvide native APIs to tag the various sockets used for network\ntransfer, which helps apps tracking down data usage inside their app.\n\nWe\u0027ve had equivalent Java APIs since API level 14.\nhttps://developer.android.com/reference/android/net/TrafficStats.html#tagSocket(java.net.Socket)\nhttps://developer.android.com/reference/android/net/TrafficStats.html#untagSocket(java.net.Socket)\n\nGiven that the Java APIs implementation are in native side, providing\nNDK directly will be easier for native users to use it.\n\nBug: 29761778\nBug: 202086915\nTest: Tests in change Ic6554d9b98cef9b41b7eae06315d284c574c0a45\nChange-Id: I884522be1dc40e8e959684442b3d736b5dcfdf5c\n"
    },
    {
      "commit": "573da3b0f1d4381c2be5544709ad0cbec88fb982",
      "tree": "23e7828cb00a11c05b6d926ea8a10568293348fe",
      "parents": [
        "930c21573cbd68ba6ff3dbe3c82148868e7cd3eb"
      ],
      "author": {
        "name": "Brian Duddie",
        "email": "bduddie@google.com",
        "time": "Fri Dec 10 14:34:07 2021 -0800"
      },
      "committer": {
        "name": "Brian Duddie",
        "email": "bduddie@google.com",
        "time": "Wed Jan 12 09:58:04 2022 -0800"
      },
      "message": "Add NDK support for new head tracker sensor type\n\nBug: 210156629\nTest: presubmit (definitions only)\nChange-Id: Ie93f3a99a3215690ab585b2e248edf096712c8c0\n"
    },
    {
      "commit": "741b99e6b9cbf7b8f65fe25fedfb378bd670dd72",
      "tree": "905c6c167994a9854017398392411ad1bede99da",
      "parents": [
        "e7b13cfa8c730d8245937f5fc024f39de833ddf9",
        "6f28d23f07e70a91157880b5c9d9423c388de92d"
      ],
      "author": {
        "name": "Philip Junker",
        "email": "philipjunker@google.com",
        "time": "Mon Jan 10 17:23:50 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Mon Jan 10 17:23:50 2022 +0000"
      },
      "message": "Merge \"Fix KeyCharacterMap overlays by reloading base overlay before applying another overlay.\" into sc-v2-dev am: 6f28d23f07\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/16576705\n\nChange-Id: I77c772f65602f64e71d791dcfa3ea13ec98ff0b3\n"
    },
    {
      "commit": "c74e9e21d569956eb4e132f0521f785c29af3223",
      "tree": "9e4fd8be1696c505c91f10c6d819db7347107d99",
      "parents": [
        "83bd771ca25844f6f00c7b60e554f6566a7a3222"
      ],
      "author": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Thu Dec 02 09:49:12 2021 -0800"
      },
      "committer": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Sat Jan 08 18:55:32 2022 -0800"
      },
      "message": "FTL: Add variadic concatenation\n\nFor now, the arguments can only be integers, string literals, and\ntruncated string views, as this will mainly be used for tracing.\n\nBug: 185536303\nTest: ftl_test\nChange-Id: I3141992c6c9438710f04b056e67a5e8811d39f78\n"
    },
    {
      "commit": "b60596f638c493ad1c79b6f55634a86023893ad2",
      "tree": "2b016603eb57995f10903a50fbfa005783c1d3d4",
      "parents": [
        "aca25f60537453114bfe7f0f8587e551438ca7a5"
      ],
      "author": {
        "name": "Philip Junker",
        "email": "philipjunker@google.com",
        "time": "Fri Dec 10 18:39:42 2021 +0100"
      },
      "committer": {
        "name": "Philip Junker",
        "email": "philipjunker@google.com",
        "time": "Thu Jan 06 16:27:12 2022 +0000"
      },
      "message": "Fix KeyCharacterMap overlays by reloading base overlay before applying another overlay.\n\nAdd all fields to parcel (mLoadFileName, mLayoutOverlayApplied, mKeysByScanCode, mKeysByUsageCode).\nAdd all fields to equality operator.\nAdd tests to libinput_tests.\n\nBug: 210090260\nTest: Manually verified that layout changes correctly.\nTest: atest libinput_tests\nChange-Id: I1777b87e5c2ce8a0dbd42ad48748ea9e669c9139\n(cherry picked from commit 90bc949048f2b91fa841cb8272381af8c301c055)\n"
    },
    {
      "commit": "dd93d62c799c2f63f1de9ba1eab00b9ad819c13b",
      "tree": "89515bdda9ff4986448ee5900b372a880b0a025b",
      "parents": [
        "3c506b3d8d432fba7fd4f7d1f58afdcd2839bcbf",
        "90bc949048f2b91fa841cb8272381af8c301c055"
      ],
      "author": {
        "name": "Philip Junker",
        "email": "philipjunker@google.com",
        "time": "Thu Jan 06 14:35:46 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 06 14:35:46 2022 +0000"
      },
      "message": "Merge \"Fix KeyCharacterMap overlays by reloading base overlay before applying another overlay.\""
    },
    {
      "commit": "90bc949048f2b91fa841cb8272381af8c301c055",
      "tree": "b9496359745524c364a0241ece3bdd2da9de6b2e",
      "parents": [
        "f60ade6b4c52b1f41975ed9506df1dc0b28e8857"
      ],
      "author": {
        "name": "Philip Junker",
        "email": "philipjunker@google.com",
        "time": "Fri Dec 10 18:39:42 2021 +0100"
      },
      "committer": {
        "name": "Philip Junker",
        "email": "philipjunker@google.com",
        "time": "Fri Dec 31 10:26:15 2021 +0100"
      },
      "message": "Fix KeyCharacterMap overlays by reloading base overlay before applying another overlay.\n\nAdd all fields to parcel (mLoadFileName, mLayoutOverlayApplied, mKeysByScanCode, mKeysByUsageCode).\nAdd all fields to equality operator.\nAdd tests to libinput_tests.\n\nBug: 210090260\nTest: Manually verified that layout changes correctly.\nTest: atest libinput_tests\nChange-Id: I1777b87e5c2ce8a0dbd42ad48748ea9e669c9139\n"
    },
    {
      "commit": "bd9bc48ad88288418d58fd543b154c22262e57d2",
      "tree": "448e12eb3697fedeae4021eebbd8aaaf46e31e8c",
      "parents": [
        "23fc122d74d6baf02b9abc98426733be65cb7a76",
        "5beda769594b8a86439ae5969a8448f7b4c5e522"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Wed Dec 29 08:26:14 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 29 08:26:14 2021 +0000"
      },
      "message": "Merge changes from topic \"revert-16371733-revert-16336498-revert-16306432-revert-16295572-ORWQJPYRMQ-IQBEBXXQNX-CARGQZNFNA-ZVFVBFSHNR\"\n\n* changes:\n  Reland^2 \"Remove x/y offset from MotionEntry\"\n  Reland^2 \"Input injection: Assume transformed values are i...\"\n"
    },
    {
      "commit": "5beda769594b8a86439ae5969a8448f7b4c5e522",
      "tree": "79dd97ef5d6d5dd9f472a1fb85106668f8034923",
      "parents": [
        "daa2f14871c97919cf6922e9313a300bde4fb9b6"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Fri Dec 10 09:30:08 2021 +0000"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Fri Dec 24 13:20:34 2021 +0000"
      },
      "message": "Reland^2 \"Remove x/y offset from MotionEntry\"\n\nf7c99f3f2404f9605c2801caa20b236a595afa3d\n\nBug: 206842332\n\nChange-Id: Id42790e6c1d562c61efb6673407a2861927df40b\n"
    },
    {
      "commit": "ce3030f210a7631f60f5c6882e77758a838b2111",
      "tree": "704fb59fa457db0645ea823645475005ee1df7c5",
      "parents": [
        "db65e0e508a2628029702eed1d2644746405c72c",
        "9d43974f4d7110552d5ca39d0a8576b8c87fdb6f"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Mon Dec 20 12:07:54 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Dec 20 12:07:54 2021 +0000"
      },
      "message": "Merge \"Add lifecycle information to docs for AInputQueue_fromJava\""
    },
    {
      "commit": "db08d8c0e03f7a32a8643991829fd909013641f5",
      "tree": "a841ad7abd91edd1b92538a0c93bcf58a97c5bdc",
      "parents": [
        "903231e64b8ffdfa8318225a17ad277ec73a69ea",
        "b1e1e3914c8be41c83d3f6e7c71e53dffcd43f16"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Dec 16 17:58:03 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 16 17:58:03 2021 +0000"
      },
      "message": "Merge \"Pass JNIEnv explicitly into AInputQueue_fromJava\""
    },
    {
      "commit": "9d43974f4d7110552d5ca39d0a8576b8c87fdb6f",
      "tree": "56b9bf578cd6fb3f2496673301cd212153f89a28",
      "parents": [
        "b1e1e3914c8be41c83d3f6e7c71e53dffcd43f16"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Thu Dec 16 03:32:30 2021 -0800"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Thu Dec 16 03:32:30 2021 -0800"
      },
      "message": "Add lifecycle information to docs for AInputQueue_fromJava\n\nAdd documentation to AInputQueue_fromJava to make it explicit that the\nreturned native object is only valid as long as the java object has not\nyet been disposed.\n\nTest: None\nBug: 210727408\nChange-Id: I20ec68afba0ec79477d57b8a110d55220b7c01ff\n"
    },
    {
      "commit": "b1e1e3914c8be41c83d3f6e7c71e53dffcd43f16",
      "tree": "d96ad9b2dca342412ee161ec626a6f14e5525c19",
      "parents": [
        "d34795a625e9e286d277e8ce35e0961a744b87bc"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Thu Dec 16 03:28:20 2021 -0800"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Thu Dec 16 03:28:20 2021 -0800"
      },
      "message": "Pass JNIEnv explicitly into AInputQueue_fromJava\n\nInstead of assuming a JNIEnv*, the method should have the env passed\ninto it, which is the standard practice for native APIs.\n\nBug: 210727635\nTest: atest InputQueueTest\nChange-Id: I94d168e9370aed2081912971b82c472e18c65f12\n"
    },
    {
      "commit": "eb577945422ceddd4e7fbd0a94e215950ee732c3",
      "tree": "b467474b5eb431eef351ffaed4a000ec6cff993e",
      "parents": [
        "c747fcaa5047b48ca6077584a445ad266685d21e",
        "ed511efbdfac3408cb3ae237016f095fd64cebec"
      ],
      "author": {
        "name": "Rachel Lee",
        "email": "rnlee@google.com",
        "time": "Wed Dec 15 20:02:29 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 15 20:02:29 2021 +0000"
      },
      "message": "Merge \"Add frame timeline method to ASurfaceControl NDK.\""
    },
    {
      "commit": "52c5bf8d401421524b98c34de544afb3e620af58",
      "tree": "ee3805baf00e201ccf43b0b9ea414b72ff0d0497",
      "parents": [
        "dcc14283e83a3d312d4fb1ee24de2d02468881fa",
        "559361b67ec27a30e8dc52537833feb55f06f3a2"
      ],
      "author": {
        "name": "Jim Blackler",
        "email": "jimblackler@google.com",
        "time": "Wed Dec 15 16:07:35 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 15 16:07:35 2021 +0000"
      },
      "message": "Merge \"Game Loading Time improvement by boosting CPU via ADPF\""
    },
    {
      "commit": "ed511efbdfac3408cb3ae237016f095fd64cebec",
      "tree": "d4c3d5a85a94c90939b74648a7282ccbf1a6d94e",
      "parents": [
        "772b32776fb14cce1f03ce87676aacaf9f877565"
      ],
      "author": {
        "name": "Rachel Lee",
        "email": "rnlee@google.com",
        "time": "Mon Oct 11 15:09:51 2021 -0700"
      },
      "committer": {
        "name": "Rachel Lee",
        "email": "rnlee@google.com",
        "time": "Thu Dec 09 16:27:34 2021 -0800"
      },
      "message": "Add frame timeline method to ASurfaceControl NDK.\n\nBug: 198192003\nTest: atest ASurfaceControlTest\nperfetto trace\n\nChange-Id: I04310bd9190cfc227ff5ba892c7187d3b8a20463\n"
    },
    {
      "commit": "f355bf982478381f838e8d3318aa67cede2daf10",
      "tree": "7082819ae3168f500d948aa412fff2e9d00a374a",
      "parents": [
        "0abd019f7574c6e47628f8c4507094f843682300"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Thu Dec 09 10:43:21 2021 -0800"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Thu Dec 09 11:49:41 2021 -0800"
      },
      "message": "Reorder VerifiedKey/MotionEvent structs for hwasan\n\nNow, the \u0027nsecs_t\u0027 fields of this struct will no longer be falling on\n4-byte boundaries. This prevents a hwasan crash.\n\nBug: 209991446\nTest: atest inputflinger_tests\nChange-Id: If28c7ff66b9495a3d61f590464d2b995afbe0c2b\n"
    },
    {
      "commit": "559361b67ec27a30e8dc52537833feb55f06f3a2",
      "tree": "86dd0722bc32858c4530d26ab22a113d45697087",
      "parents": [
        "0943b46231230ad22d1f4d707959ff3259ee8388"
      ],
      "author": {
        "name": "Jim Blackler",
        "email": "jimblackler@google.com",
        "time": "Mon Nov 29 00:07:39 2021 +0000"
      },
      "committer": {
        "name": "Jim Blackler",
        "email": "jimblackler@google.com",
        "time": "Wed Dec 08 14:54:04 2021 +0000"
      },
      "message": "Game Loading Time improvement by boosting CPU via ADPF\n\nBug: 201769701\nTest: atest android.gamemanager.cts.GameManagerTest\nChange-Id: I7b6d0a892281360afcdcf3c2cb60e3f9640dd518\n"
    },
    {
      "commit": "0abd019f7574c6e47628f8c4507094f843682300",
      "tree": "7365b09afac543b1ffdaa8346143e04c71464ca7",
      "parents": [
        "f244445c5baa1fd419072e9ff8390b5ad012bb35",
        "663fc83b598d60621262eb61403b50ae868831fd"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Dec 03 13:19:19 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 03 13:19:19 2021 +0000"
      },
      "message": "Merge changes from topic \"revert-16336498-revert-16306432-revert-16295572-ORWQJPYRMQ-IQBEBXXQNX-CARGQZNFNA\"\n\n* changes:\n  Revert \"Reland \"Input injection: Assume transformed values are i...\"\"\n  Revert \"Reland \"Remove x/y offset from MotionEntry\"\"\n"
    },
    {
      "commit": "f7c99f3f2404f9605c2801caa20b236a595afa3d",
      "tree": "724c88da6281ceb4225f8105bc14e56b0d591464",
      "parents": [
        "d6a7f22182d88888c6ac2824a888766203d33dfc"
      ],
      "author": {
        "name": "Alex Chau",
        "email": "alexchau@google.com",
        "time": "Fri Dec 03 10:37:54 2021 +0000"
      },
      "committer": {
        "name": "Alex Chau",
        "email": "alexchau@google.com",
        "time": "Fri Dec 03 10:37:54 2021 +0000"
      },
      "message": "Revert \"Reland \"Remove x/y offset from MotionEntry\"\"\n\nRevert submission 16336498-revert-16306432-revert-16295572-ORWQJPYRMQ-IQBEBXXQNX\n\nReason for revert: b/208849306\nReverted Changes:\nI5afb6f7fd:Reland \"Remove x/y offset from MotionEntry\"\nI68b5619bf:Reland \"Input injection: Assume transformed values...\n\nChange-Id: Id944e4eb39b26e3ffd51998b315a06e87a2af3d5\n"
    },
    {
      "commit": "5bc9e109ad0b107d7f6c92f4b8aa9a560f49b686",
      "tree": "bae3debbc9ada4d1a3412bae2c3ae0bb9a6b4458",
      "parents": [
        "9aa979b5799213810b71f939cc25b460fcc25959",
        "d6a7f22182d88888c6ac2824a888766203d33dfc"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Dec 01 23:49:08 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 01 23:49:08 2021 +0000"
      },
      "message": "Merge changes from topic \"revert-16306432-revert-16295572-ORWQJPYRMQ-IQBEBXXQNX\"\n\n* changes:\n  Reland \"Remove x/y offset from MotionEntry\"\n  Reland \"Input injection: Assume transformed values are i...\"\n"
    },
    {
      "commit": "092f3a9b75b1fd465373730ca8d6038c89ed9220",
      "tree": "5adffe078021cfaafbc52eece0c01e181b41a0ab",
      "parents": [
        "48579875dd92c945b6fa36a4e32c1a538fe00732"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Thu Nov 25 10:53:27 2021 -0800"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Wed Dec 01 05:58:15 2021 -0800"
      },
      "message": "Add getSurfaceRotation API to MotionEvent\n\nAdd an API to get the current rotation value of the transform of the\nMotionEvent.\n\nBug: 207771136\nTest: atest MotionEventTest\nChange-Id: I05fb4455d0dcfc0de8c8564473ee8d43ac86c0bd\n"
    },
    {
      "commit": "d6a7f22182d88888c6ac2824a888766203d33dfc",
      "tree": "79dd97ef5d6d5dd9f472a1fb85106668f8034923",
      "parents": [
        "923373d52068c901437599b5cfbbe7878f1d1a78"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Wed Nov 24 15:36:43 2021 +0000"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Wed Dec 01 11:41:50 2021 +0000"
      },
      "message": "Reland \"Remove x/y offset from MotionEntry\"\n\n2b80b386c4ed5a1b3240da32080280b0a1ec9cef\n\nChange-Id: I5afb6f7fd25cd13e42a9b4368fa387bf574e5ec0\n"
    },
    {
      "commit": "de69f8ae323ccfbf150a368145525b619568469c",
      "tree": "44da2d64ebe7b79ac83acf24547e9979d4307b3c",
      "parents": [
        "7360d4323e99ee19efc942295ed123fc78b1546e"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Thu Nov 18 16:40:34 2021 +0000"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Mon Nov 22 18:16:34 2021 +0000"
      },
      "message": "Reland \"Change PointerController to display space\"\n\n259a2122aeafea0f20bfcc7c9bcd089511a5aa56\n\nBug: 188939842\nBug: 144544464\nBug: 206817973\nTest: forrest run - CtsHardwareTestCases\n\nChange-Id: I8f0312a502ec5c79038ef1697cf2d5b23db9fcfc\n"
    },
    {
      "commit": "2b80b386c4ed5a1b3240da32080280b0a1ec9cef",
      "tree": "724c88da6281ceb4225f8105bc14e56b0d591464",
      "parents": [
        "5e6b390919a9786a50f9d5cbd539e9dc53ad78c2"
      ],
      "author": {
        "name": "Jay Wang",
        "email": "jaytwang@google.com",
        "time": "Fri Nov 19 17:26:26 2021 +0000"
      },
      "committer": {
        "name": "Jay Wang",
        "email": "jaytwang@google.com",
        "time": "Sat Nov 20 00:40:38 2021 +0000"
      },
      "message": "Revert \"Remove x/y offset from MotionEntry\"\n\nRevert submission 16295572\n\nReason for revert: DroidMonitor-triggered revert due to breakage bug http://b/207128427.\nBUG: 207128427\n\nReverted Changes:\nI65c284e5e:Input injection: Assume transformed values are in ...\nIfd359ebb0:Remove x/y offset from MotionEntry\n\nChange-Id: Iab395d41d49db17c0a682bdd6c77fe2aacc004f4\n"
    },
    {
      "commit": "5e6b390919a9786a50f9d5cbd539e9dc53ad78c2",
      "tree": "79dd97ef5d6d5dd9f472a1fb85106668f8034923",
      "parents": [
        "f155b3ed59455b0fd301a4e8412164576e540995"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Thu Nov 18 07:54:09 2021 -0800"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Fri Nov 19 04:10:42 2021 -0800"
      },
      "message": "Remove x/y offset from MotionEntry\n\nWindow or display offsets are now captured in the various transforms, so\nwe can remove the ability to specify the offset by itself.\n\nBug: 188939842\nTest: presubmit\nTest: atest inputflinger_tests\nChange-Id: Ifd359ebb03850bb30efb358e84f0a7e77260a8b2\n"
    },
    {
      "commit": "259a2122aeafea0f20bfcc7c9bcd089511a5aa56",
      "tree": "2162e06fdae91cc53566128161feed25deffc391",
      "parents": [
        "6b430413d07b6afca1a4146ea91809567b5cfe9a"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Wed Nov 17 21:48:11 2021 +0000"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Wed Nov 17 21:48:11 2021 +0000"
      },
      "message": "Revert \"Change PointerController to display space\"\n\nRevert submission 16194643-pointer-controller-in-display-space\n\nReason for revert: b/206817973\nReverted Changes:\nI764c070ad:Change PointerController to display space\nI5e9e19c36:Change PointerController to display space\n\nChange-Id: If6e96f41873dd9601f49fc9f9f514a95394f3c58\n"
    },
    {
      "commit": "6b430413d07b6afca1a4146ea91809567b5cfe9a",
      "tree": "ceb69c9d88200e64d7779decdb8e640690da4937",
      "parents": [
        "3bb6799ff0b68f818eb4a01d2a6b07fe9575edf0"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Thu Nov 04 16:51:29 2021 -0700"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Wed Nov 17 02:14:06 2021 -0800"
      },
      "message": "Change PointerController to display space\n\nPointerController used to work in the logical display space, so\nTouchInputMapper and CursorInputMapper would need to transform the\ncoordinates before interacting with it.\n\nThis CL makes PointerController work in the display space. It will\ntransform incoming and outgoing coordinates to stay in the display\nspace using the DisplayInfo provided by SurfaceFlinger. Using info\nprovided by SF also means that there will be better synchonization\nbetween the pointers and display changes like rotation.\n\nBug: 188939842\nBug: 144544464\nTest: manual: ensure mouse and touch spots work in different display\norientations and sizes set using \"adb shell wm size\"\n\nChange-Id: I764c070adef7e9f26c0062f1b3466c7115a305ac\n"
    },
    {
      "commit": "3bb6799ff0b68f818eb4a01d2a6b07fe9575edf0",
      "tree": "2162e06fdae91cc53566128161feed25deffc391",
      "parents": [
        "c1a69dfedc30dcf8823dc4a74f42ccc83e429656",
        "d948957b396a9301e6e247023d8509f44f6cf87c"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Nov 16 22:53:10 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 16 22:53:10 2021 +0000"
      },
      "message": "Merge \"Look up source using \u0026 instead of equality\""
    },
    {
      "commit": "d948957b396a9301e6e247023d8509f44f6cf87c",
      "tree": "a8f38f159912be41d6e7de248c3f6907015f4b0c",
      "parents": [
        "c9963a2d6e1b8751541fa395115311bd50b90b87"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Fri Nov 12 20:08:38 2021 -0800"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Mon Nov 15 13:54:52 2021 -0800"
      },
      "message": "Look up source using \u0026 instead of equality\n\nSource for an input device may be composite. On some devices, the source\nis specified as TOUCHSCREEN | STYLUS. That means a regular lookup of a\nMotionRange using just SOURCE_TOUCHSCREEN fails.\n\nUpdate the code to allow composite sources.\n\nAlso, improve the source dump by printing words instead of numbers.\n\nBug: 198472780\nTest: adb shell dumpsys input\nChange-Id: I8d395f2bb5a6db031e5c2aa6c1f5152ff067a2bb\n"
    },
    {
      "commit": "3cfec7b162d40a53880f3cbaf863b0b39027db3d",
      "tree": "228bf2b16779a7a5ced2b962d62e20faa8ea5410",
      "parents": [
        "a0b0a06870f02da8edbc53962751075fa21db0dd"
      ],
      "author": {
        "name": "Antonio Kantek",
        "email": "kanant@google.com",
        "time": "Fri Nov 05 18:26:17 2021 -0700"
      },
      "committer": {
        "name": "Antonio Kantek",
        "email": "kanant@google.com",
        "time": "Thu Nov 11 15:46:26 2021 -0800"
      },
      "message": "TouchMode (6.2/n) Fully detaching touch mode from focus event (native)\n\nBug: 193718270\nTest: atest inputflinger_tests\nTest: atest libinput_tests\nTest: atest FrameworksCoreTests\nTest: atest CtsInputMethodTestCases\nTest: atest CtsInputTestCases\nTest: atest CtsSecurityTestCases\nTest: atest CtsWindowManagerDeviceTestCases\nChange-Id: I334c63d781ee8e8c13d21cc4a6cf323d885fc985\n"
    },
    {
      "commit": "406c8abeff595432782740345abad06280d18032",
      "tree": "4abcdc8d8ddd1491e6227bcb2bc34935214bd618",
      "parents": [
        "7804d910bf010c06e5d38bca68230defae06bc07"
      ],
      "author": {
        "name": "Bo Liu",
        "email": "boliu@google.com",
        "time": "Wed Nov 10 19:20:40 2021 -0500"
      },
      "committer": {
        "name": "Bo Liu",
        "email": "boliu@google.com",
        "time": "Wed Nov 10 19:25:05 2021 -0500"
      },
      "message": "Performance hint ndk APIs\n\nTest: atest PerformanceHintNativeTestCases\nChange-Id: I46644adc4e07f668dd82d261da0aabeeb5403e86\n"
    },
    {
      "commit": "5545a11c2898674bb8d8b877504c86de43aa5a1f",
      "tree": "b9abfbd540c90e4f0bb04026a641a88128697a29",
      "parents": [
        "3fe7096898cf8133630fefc64771c280bc54863c",
        "65c943e4e9c85f19ab6f49d8f3238fcabcb0310f"
      ],
      "author": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Wed Nov 10 08:05:52 2021 +0000"
      },
      "committer": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Wed Nov 10 08:05:52 2021 +0000"
      },
      "message": "Merge sc-qpr1-dev-plus-aosp-without-vendor@7810918\n\nBug: 205056467\nMerged-In: I129ee68719302e29045bb2aa13093c2864f305af\nChange-Id: I4fa8e7e32a61d5850dac19062615ea20b6d4d0d1\n"
    },
    {
      "commit": "7e1ee565b3fe4738e6771bceb2e9679562232992",
      "tree": "c0873dfce225a5c5ca3e5e4e161c851f3c491abd",
      "parents": [
        "a1273194684c9c0f1118b7f5127d05363d41cde7"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Tue Oct 26 10:19:49 2021 -0700"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Mon Nov 08 04:20:54 2021 -0800"
      },
      "message": "Move Joystick and Touchpad event transformation logic to MotionEvent\n\nWe would like to have all source and axis based transformations\ncalculated in the same place, which will be in the MotionEvent class.\nThis has the added benefit that MotionEvents created by developers\nthrough MotionEvent.obtain() in Java will behave like motion events\ngenerated from input devices in terms of how they\u0027re affected by\ntransformations.\n\nSince axes from joysticks and touchpads should never be transfomred,\nwe previously solved this by using identity matrices for them in\nInputDispatcher. Now, we move that logic to MotionEvent when applying\nthe transform.\n\nBug: 179274888\nTest: atest libinput_test\nTest: atest inputflinger_tests\nChange-Id: Ic02466e01f2ba3131aca73bd10933ff81cb38cc9\n"
    },
    {
      "commit": "9102d31629d50f2ea12ee3dbc632ce09f9891e36",
      "tree": "f9d3c3ec059bb996b29c37c0b386a515386a8a1d",
      "parents": [
        "c1b16c41f48519c0d48e97f3766adac39e764c73",
        "4c86be7fc99ea40d75ecead2fd039e83cc01b08c"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Thu Nov 04 23:05:05 2021 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Nov 04 23:05:05 2021 +0000"
      },
      "message": "Merge \"Remove Enum.h error-only header\" am: 134b8f0adf am: ec2fe4d478 am: a83c7535e4 am: 2850b7d89c am: 4c86be7fc9\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1879176\n\nChange-Id: Icce30c592f4af7e14a28a13bfd2cb977b20a5a52\n"
    },
    {
      "commit": "4c86be7fc99ea40d75ecead2fd039e83cc01b08c",
      "tree": "cef6409826bcdb0dd565e0d553cb42dd28b860b2",
      "parents": [
        "183580eaf71a1ea47511027885cae07534f66156",
        "2850b7d89c75b0f4ad4b2e169b0a8051fb57d68b"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Thu Nov 04 22:52:16 2021 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Nov 04 22:52:16 2021 +0000"
      },
      "message": "Merge \"Remove Enum.h error-only header\" am: 134b8f0adf am: ec2fe4d478 am: a83c7535e4 am: 2850b7d89c\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1879176\n\nChange-Id: I93334ba33e3d5b733e883cca0b1f3c92c2a73e1f\n"
    },
    {
      "commit": "2850b7d89c75b0f4ad4b2e169b0a8051fb57d68b",
      "tree": "292e088418751f496af194f3db8cd87b737ded93",
      "parents": [
        "f757fa6fd8fd17ee1846e11d2abe28addb81ac5f",
        "a83c7535e48b779db04d448bcec093f0e4288627"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Thu Nov 04 22:41:40 2021 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Nov 04 22:41:40 2021 +0000"
      },
      "message": "Merge \"Remove Enum.h error-only header\" am: 134b8f0adf am: ec2fe4d478 am: a83c7535e4\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1879176\n\nChange-Id: I1ae0f3d9865d53a5ee51ab4995eff5802d10e98a\n"
    },
    {
      "commit": "a83c7535e48b779db04d448bcec093f0e4288627",
      "tree": "40c492480b84c86572186afb67029b390e9117ab",
      "parents": [
        "59a742c2370ff6fb8bdb209174c0ab981745e77d",
        "ec2fe4d478dce96754de2b2b33018603f07b74b3"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Thu Nov 04 22:23:27 2021 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Nov 04 22:23:27 2021 +0000"
      },
      "message": "Merge \"Remove Enum.h error-only header\" am: 134b8f0adf am: ec2fe4d478\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1879176\n\nChange-Id: I9e25623155f26e05db2586eba2457523ac483f1f\n"
    },
    {
      "commit": "b975999b668bdfd8a3fff6a75ba5678039cdbe73",
      "tree": "aef7fd35e0727a93a5e680aa376031f1f826d728",
      "parents": [
        "3810e23fca73c189519866e447e2400ec162a8b1"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Nov 02 16:43:42 2021 -0700"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Nov 02 23:45:51 2021 +0000"
      },
      "message": "Remove Enum.h error-only header\n\nThis is supposed to map to libbinder \u0027Enums.h\u0027, but this file has a\ndifferent name, and including it is an error. Also, it\u0027s a nice error\nfor this one case, but we don\u0027t get errors for other cases, and we\nhaven\u0027t seen any more reports of b/169874616 even though this is named\ndifferently.\n\nBug: n/A\nTest: N/A\nChange-Id: I7182e54ed77fb247e81315adb82ad58c86014f32\n"
    }
  ],
  "next": "a64c272fa2fac03883ec858fcd5ceabcc6b0b1d1"
}
