)]}'
{
  "log": [
    {
      "commit": "b0977e0f2f6ef1c250ce8b1075d8c9a4c241774c",
      "tree": "7c566890de3629a6f2735869aeb44fc4d2e4dc72",
      "parents": [
        "fb7b7a4d70964f5753b7638d222ed8d7b4753c36",
        "dfabf8a8f21a4c186e8a4410c68f52484b3cae42"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Feb 04 12:54:51 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 04 12:54:51 2022 +0000"
      },
      "message": "Merge \"InputDispatcher: Remove gesture monitor implementation\""
    },
    {
      "commit": "d2afdfcbc44135e74f6a025d526e3b8fd9739c99",
      "tree": "45ccbcc0744c39ad98e9742244902aad79f179d2",
      "parents": [
        "9f3153648834dfa2222d3b001d0ecd3c4933127d",
        "e0eafa8e477891069538422bc3a1fc865182176d"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Feb 04 09:40:49 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 04 09:40:49 2022 +0000"
      },
      "message": "Merge \"CompositionEngine: fix memory leak in unit tests\""
    },
    {
      "commit": "9f3153648834dfa2222d3b001d0ecd3c4933127d",
      "tree": "077a158fc0181586d8d31510d2189b198d2b58d5",
      "parents": [
        "0bce09f9a7db332dd690125a9becc0d174e1a37e",
        "1756166758bcb5809a597b7eabf7643104773870"
      ],
      "author": {
        "name": "Eva Chen",
        "email": "evaschen@google.com",
        "time": "Fri Feb 04 07:08:31 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 04 07:08:31 2022 +0000"
      },
      "message": "Merge \"Add AIDL conversion for Limited Axes IMU sensors\""
    },
    {
      "commit": "0bce09f9a7db332dd690125a9becc0d174e1a37e",
      "tree": "608d29244ac407a0f88b8501ea63c66e04086d8e",
      "parents": [
        "1d0560e4752c8d25f02535a35a0dd08c174ecaf6",
        "c7b9263a7ad9a25f8f47ed51a800f25a25b29e77"
      ],
      "author": {
        "name": "Eva Chen",
        "email": "evaschen@google.com",
        "time": "Fri Feb 04 07:08:31 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 04 07:08:31 2022 +0000"
      },
      "message": "Merge \"Created new virtual LimitedAxesImuSensor.\""
    },
    {
      "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": "7ae2eac6b2b091afd7830bb9265d66a9c9e866bf",
      "tree": "9ee74b049a489ac3d91addceda85acff0faf84f9",
      "parents": [
        "c00c606060bc3d12096f21620bf3921dda3ff442",
        "4af15ae1f6059c697a37193c8f82846f903f8367"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Thu Feb 03 15:17:27 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 03 15:17:27 2022 +0000"
      },
      "message": "Merge \"SF: Remove \"-fvisibility\u003dhidden\" flag from sf build\""
    },
    {
      "commit": "dfabf8a8f21a4c186e8a4410c68f52484b3cae42",
      "tree": "b6e2876744f8b54b594d775a371d1b06e765d7bc",
      "parents": [
        "1376fcd48480139fc36f6a7c54952961d2959a43"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Fri Jan 21 08:19:30 2022 -0800"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Thu Feb 03 02:40:40 2022 -0800"
      },
      "message": "InputDispatcher: Remove gesture monitor implementation\n\nBug: 162194035\nTest: atest inputflinger_tests\nChange-Id: I4404c9625f879d805aabdbda6d502dac1d0cd881\n"
    },
    {
      "commit": "e0eafa8e477891069538422bc3a1fc865182176d",
      "tree": "b9c97b2d0388e58d988c77e9080db5cdfee394d0",
      "parents": [
        "51ae9d7ef8309c2f9d80f3a04826589039e59b7e"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Wed Feb 02 19:30:47 2022 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Wed Feb 02 19:35:27 2022 -0800"
      },
      "message": "CompositionEngine: fix memory leak in unit tests\n\nLayerFE implements RefBase, and instantiating it on stack\ncauses a memory leak of the shared state.\n\nBug: 198190384\nTest: libcompositionengine_test\nChange-Id: If0f847bdf93359b206f7ce77ded9a8d5feb4e31c\n"
    },
    {
      "commit": "4af15ae1f6059c697a37193c8f82846f903f8367",
      "tree": "c7a1943aacbed5901c1f768a55fcca44f62ab772",
      "parents": [
        "fde595b0ff0dae1f770ab949ed4d1923375a6002"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Wed Feb 02 16:14:54 2022 -0800"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Wed Feb 02 16:14:54 2022 -0800"
      },
      "message": "SF: Remove \"-fvisibility\u003dhidden\" flag from sf build\n\nThis flag along with -fwhole-program-vtables may result in ODR violations. See\nbug for more details.\n\nFixes: 217612145\nTest: ag/16761579 no longer repros\nChange-Id: Ic85d934c6e1a3706382a80cf09048b86543208b6\n"
    },
    {
      "commit": "d2f163706c069639aef10939e9bd41f2fdaaa739",
      "tree": "93db6b08529b39eaca1291ddcaf8395a70146ab3",
      "parents": [
        "84505726244d3845735c0bd6aee7e96e4968745f",
        "1376fcd48480139fc36f6a7c54952961d2959a43"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Wed Feb 02 21:27:12 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 02 21:27:12 2022 +0000"
      },
      "message": "Merge \"InputDispatcher: Update tests to verify spy window gesture monitors\""
    },
    {
      "commit": "84505726244d3845735c0bd6aee7e96e4968745f",
      "tree": "b391af1ae22a0e868dd47b603246cea2ec42a28c",
      "parents": [
        "fe423e31c13ebb0e46350651474bd5164d407351",
        "a3ab87ae7608955fea5c96e3fbd1d36bbec417f9"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 02 21:12:24 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 02 21:12:24 2022 +0000"
      },
      "message": "Merge \"InputDispatcher_test: Fix death tests\""
    },
    {
      "commit": "fe423e31c13ebb0e46350651474bd5164d407351",
      "tree": "4bc97aa7fee5bb4fee370975989d9d92912d6469",
      "parents": [
        "9f9dccb229a762c3722a40a9a94638526e71a3f8",
        "16ca297c1c6a5a1b95d463c07d2f6f09e04ef862"
      ],
      "author": {
        "name": "Kriti Dang",
        "email": "kritidang@google.com",
        "time": "Wed Feb 02 17:14:21 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 02 17:14:21 2022 +0000"
      },
      "message": "Merge \"Correct error handling in getPreferredBootDisplayMode\""
    },
    {
      "commit": "16ca297c1c6a5a1b95d463c07d2f6f09e04ef862",
      "tree": "7eb78a819c93961227ca829d499e208ba718b67c",
      "parents": [
        "a27a21081f4d4b29454acef431d4bbde5cc9a87f"
      ],
      "author": {
        "name": "Kriti Dang",
        "email": "kritidang@google.com",
        "time": "Tue Feb 01 20:07:03 2022 +0100"
      },
      "committer": {
        "name": "Kriti Dang",
        "email": "kritidang@google.com",
        "time": "Wed Feb 02 16:52:25 2022 +0000"
      },
      "message": "Correct error handling in getPreferredBootDisplayMode\n\nBug: 217335654\nTest: verified on forrest\nChange-Id: I685a2e3b4f80c0898f778a170a30f882f640adb4\n"
    },
    {
      "commit": "a3ab87ae7608955fea5c96e3fbd1d36bbec417f9",
      "tree": "7cea1db04f726c5fc356218a3dfff24f7ca780e4",
      "parents": [
        "9f9dccb229a762c3722a40a9a94638526e71a3f8"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Thu Jan 27 10:00:21 2022 -0800"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Wed Feb 02 16:29:45 2022 +0000"
      },
      "message": "InputDispatcher_test: Fix death tests\n\n1. All death tests should be in a test suite with a name ending in\n   \"DeathTest\".\n2. Silence signal reporting to supress debuggerd stack traces on a\n   per-test basis and prevent expected deaths from showing up in system\n   stability metrics.\n\nBug: 212662036\nTest: atest inputflinger_tests\nChange-Id: Idc070b4c13eea270f76294a3c21f4553363017dc\n"
    },
    {
      "commit": "9f9dccb229a762c3722a40a9a94638526e71a3f8",
      "tree": "a4d9d70c0a8bd465f726bc289d810b76b5e0bca5",
      "parents": [
        "254054370df069c84e9262ae696eb3b08a78e97f",
        "2c3de224a5bf7ab375aabf21a345c52ce2f9e144"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 02 15:54:45 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Feb 02 15:54:45 2022 +0000"
      },
      "message": "Merge \"When user presses the power key while playing a local video, the surfaceflinger will crash.\" am: 60aac74fbc am: 08aa41473c am: ab5057e8c0 am: 2c3de224a5\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1920360\n\nChange-Id: I620ee0f42b2234802b92cb85506c3fd2e9cc9fbf\n"
    },
    {
      "commit": "2c3de224a5bf7ab375aabf21a345c52ce2f9e144",
      "tree": "e98e3d07f9a9398caef353d16587abd06ce4a48a",
      "parents": [
        "d1347913f109865df620af3ab8ea76f5439ea357",
        "ab5057e8c0f2b5c21cb9196f39fd0ab4e19ecba7"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 02 15:39:58 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Feb 02 15:39:58 2022 +0000"
      },
      "message": "Merge \"When user presses the power key while playing a local video, the surfaceflinger will crash.\" am: 60aac74fbc am: 08aa41473c am: ab5057e8c0\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1920360\n\nChange-Id: I31b79cd93828a586bbde7421a166545f4422721a\n"
    },
    {
      "commit": "ab5057e8c0f2b5c21cb9196f39fd0ab4e19ecba7",
      "tree": "cf3bdda1f928036664037e970e130ca911c4e9ed",
      "parents": [
        "5838e98c61b0d6cfd4f8825d36ab753d70ee4c25",
        "08aa41473c87aa37ec2fc679e0a4f9108c2aaf49"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 02 15:30:07 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Feb 02 15:30:07 2022 +0000"
      },
      "message": "Merge \"When user presses the power key while playing a local video, the surfaceflinger will crash.\" am: 60aac74fbc am: 08aa41473c\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1920360\n\nChange-Id: I27b3c33dbbbc5d65c7aedd4bd9f5dee4e123828d\n"
    },
    {
      "commit": "60aac74fbc7ae26d82accb3aa017ae3045da9ed0",
      "tree": "d22af95d8e8757eb39ac001033fdf4b317188e72",
      "parents": [
        "433448527019306bebd8c6537de75bb249f6340b",
        "5061611b6e0e121dd6dc53c3c778dc8713e1a3dd"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 02 14:54:57 2022 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 02 14:54:57 2022 +0000"
      },
      "message": "Merge \"When user presses the power key while playing a local video, the surfaceflinger will crash.\""
    },
    {
      "commit": "8d5a43763e4ce489466600678b74ee2ba324a833",
      "tree": "22ea6403e9fbfdae294614d1b2d60d86ed847f33",
      "parents": [
        "c4b5a89b7c336645f5cf5c9114b60900f6a3df6f",
        "3fc5f4b76576f9c0c35933b3d5f832ba08f3507b"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 01 22:09:14 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Feb 01 22:09:14 2022 +0000"
      },
      "message": "Merge \"Ensure deferred cleanup when display is off\" am: 5cc75e347f am: bd970d02bc am: 4d22ff3782 am: 3fc5f4b765\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1952223\n\nChange-Id: I9ff741dd575cfa3e9cf83861d31787c9d6a18310\n"
    },
    {
      "commit": "3fc5f4b76576f9c0c35933b3d5f832ba08f3507b",
      "tree": "76de324d638292d2b2e9c83dd7c83a6253a3be06",
      "parents": [
        "f5be7bb70465f364a1e9c12ac8cb110eac9128e3",
        "4d22ff37827670eafb72cfa361dac2f7b807906c"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 01 21:55:32 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Feb 01 21:55:32 2022 +0000"
      },
      "message": "Merge \"Ensure deferred cleanup when display is off\" am: 5cc75e347f am: bd970d02bc am: 4d22ff3782\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1952223\n\nChange-Id: If8a085c2e88386527044eeb0af9ac89fa09258d7\n"
    },
    {
      "commit": "4d22ff37827670eafb72cfa361dac2f7b807906c",
      "tree": "189eedb302c3f42fdc3c6ceb73fcc79d2b69a58b",
      "parents": [
        "11ea0f2eeb202d7722dbc30e7721735239464bb7",
        "bd970d02bc3721f9bf37181259e516a730f340cc"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 01 21:44:48 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Feb 01 21:44:48 2022 +0000"
      },
      "message": "Merge \"Ensure deferred cleanup when display is off\" am: 5cc75e347f am: bd970d02bc\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1952223\n\nChange-Id: I65ae8da429a12380143ffc18281e6c58f2be770d\n"
    },
    {
      "commit": "5cc75e347f53b5a06b989a2a69bdba9831c2ec32",
      "tree": "5115c3b735114abd51c97f05a025ddd6cc27b5f2",
      "parents": [
        "0793bb709a812aed1bf59a18351f803b6f1a2763",
        "d9e54691c35c715c096d25e656911f818e1fb706"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 01 21:13:56 2022 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 01 21:13:56 2022 +0000"
      },
      "message": "Merge \"Ensure deferred cleanup when display is off\""
    },
    {
      "commit": "1376fcd48480139fc36f6a7c54952961d2959a43",
      "tree": "a9e3c1c556182974cc8c62cbbea0f08217bc4db9",
      "parents": [
        "a27a21081f4d4b29454acef431d4bbde5cc9a87f"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Fri Jan 21 09:56:35 2022 -0800"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Tue Feb 01 09:40:07 2022 -0800"
      },
      "message": "InputDispatcher: Update tests to verify spy window gesture monitors\n\nBefore we enable spy window gesture monitors, we update the tests to\nensure that the behavior of a gesture monitor will not change when its\nimplementation is switched to a spy window.\n\nBug: 162194035\nTest: atest inputflinger_tests\nChange-Id: Id2130d782a04abbdcbf0cc412e53ad849ccb9275\n"
    },
    {
      "commit": "fba97961aefcfa8fa2d4eb1cb45fbe5a41b9ef8e",
      "tree": "ba6947a6dafcf267f502d30131492f3311b668ab",
      "parents": [
        "d66080249411f358496dc206cf1d8ee836c43a36",
        "60a1588747b29c274f5eee5478c4f6c8bd932e55"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jan 31 23:34:00 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 31 23:34:00 2022 +0000"
      },
      "message": "Merge changes from topic \"link libinput dynamically for tests\"\n\n* changes:\n  Use C++20 in libinput\n  Revert \"Link libinput statically for inputflinger_tests\"\n"
    },
    {
      "commit": "d66080249411f358496dc206cf1d8ee836c43a36",
      "tree": "8e203e71f58341e0d08abcea304f2f719159cd73",
      "parents": [
        "599126ca2f033c17642dfeb0848a7fbd4ca4b60e",
        "8c59b2724c295db6f255220c6bbfc5701111edfb"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jan 31 22:22:40 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 31 22:22:40 2022 +0000"
      },
      "message": "Merge \"Revert^2 \"Added surfaceflinger_displayhardware_fuzzer\"\""
    },
    {
      "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": "8c59b2724c295db6f255220c6bbfc5701111edfb",
      "tree": "28a6ace13580b3ea2f9b81938fb290c0e072287c",
      "parents": [
        "624d5609e9fb34442a08fedc6d5e89f34a1ae04a"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Sat Jan 15 00:34:20 2022 +0000"
      },
      "committer": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Mon Jan 31 19:47:17 2022 +0000"
      },
      "message": "Revert^2 \"Added surfaceflinger_displayhardware_fuzzer\"\n\nfdfec1572230a541882a7d4ce2d880994377b91f\n\nChange-Id: Ie108c2f0789dc845e64d623474e4aa4c6bcdca73\n"
    },
    {
      "commit": "60a1588747b29c274f5eee5478c4f6c8bd932e55",
      "tree": "b87aa8b8933a9342348a5215557ea520c40551fe",
      "parents": [
        "031498c9cb01b608ae6127641b55d7d8fdea8234"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Mon Jan 31 09:00:15 2022 -0800"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Mon Jan 31 10:50:27 2022 -0800"
      },
      "message": "Use C++20 in libinput\n\nThis is needed to support features like default comparators.\n\nBug: 217165277\nBug: 216232380\nTest: atest inputflinger_tests\nChange-Id: Ifb8b074678e87b56271b207c1806d8b41b1ee9e9\n"
    },
    {
      "commit": "031498c9cb01b608ae6127641b55d7d8fdea8234",
      "tree": "4234b7354efec878d0107ce030831f077e677a17",
      "parents": [
        "ba0a8758240241a852d7fd78603be5c10cb0f05c"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Mon Jan 31 18:43:20 2022 +0000"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Mon Jan 31 10:50:27 2022 -0800"
      },
      "message": "Revert \"Link libinput statically for inputflinger_tests\"\n\nThis reverts commit bb19287fee88ab0437f7c79dbbc792f121db6b91.\n\nReason for revert: causes a crash in inputflinger_tests b/217165277\n\nBug: 217165277\nTest: atest inputflinger_tests\n\nChange-Id: I7174d75ccc7e323646c503070174d6791570d394\n"
    },
    {
      "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": "f06d1361e03b3e1d9d855867516fbcab75abf459",
      "tree": "51ce32a5d374155ef28e9aba00744c4d7ae24ca5",
      "parents": [
        "89ef52678ed9110ca4fa894cf214ffdb031e9e42",
        "9a0afda7680840a704f179b20f97d5a4a3cf8780"
      ],
      "author": {
        "name": "Leon Scroggins",
        "email": "scroggo@google.com",
        "time": "Mon Jan 31 15:01:23 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 31 15:01:23 2022 +0000"
      },
      "message": "Merge \"Set blockingRegion for DISPLAY_DECORATION layers\""
    },
    {
      "commit": "89ef52678ed9110ca4fa894cf214ffdb031e9e42",
      "tree": "11daf3160f62143ba1876f08453c15d0c24f17f7",
      "parents": [
        "24cb2435d74260618e330436e9b8284457c04e62",
        "c9589c17c0394b8ae9c738a8bdb3daa057ed4f9c"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Mon Jan 31 11:12:57 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 31 11:12:57 2022 +0000"
      },
      "message": "Merge changes Ia1ed53b6,Ic561e8b3\n\n* changes:\n  SF: Clean up input info calculations\n  SF: Enforce that layers with invalid input bounds are not focusable\n"
    },
    {
      "commit": "24cb2435d74260618e330436e9b8284457c04e62",
      "tree": "93b8008adb7c5441de800d2a44612d42583945b2",
      "parents": [
        "9c116bd7d1236ead78a87fe9a58d287f1fdd4430",
        "785482543d33b17f4452bed8d1f560521c0f24f3"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Jan 29 18:36:11 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Jan 29 18:36:11 2022 +0000"
      },
      "message": "Merge \"Multiply stale event detection threshold by HwTimeoutMultiplier\""
    },
    {
      "commit": "9a0afda7680840a704f179b20f97d5a4a3cf8780",
      "tree": "6c3e8b507f7e4969f09645ebbc9e1195fd7b0772",
      "parents": [
        "701625279bbe4e08d7cc638835b098dbccecf00d"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Tue Jan 11 16:53:09 2022 -0500"
      },
      "committer": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Fri Jan 28 15:48:47 2022 -0500"
      },
      "message": "Set blockingRegion for DISPLAY_DECORATION layers\n\nDevices that have support for DISPLAY_DECORATION layers may also have\nsupport for a blockingRegion, which will allow the DPU to skip regions\nthat are known to be transparent, in order to save power.\n\nUse the transparentRegionHint to compute the blockingRegion. It may not\nbe accurate for all layers, which is why it is only used for\nDISPLAY_DECORATION layers.\n\nAdd tests.\n\nBug: 212736475\nTest: libcompositionengine_test\nChange-Id: I6c5d29614dc8d65d8481150ce717a440192083a0\n"
    },
    {
      "commit": "588dcee9962de9e843ba55c18b7a46f6fe16b97b",
      "tree": "5c44b920934eba75d193ea959ce2243321d72faf",
      "parents": [
        "2586229ce8d936fdf2923fde35c52b9d25fedf69",
        "646f8ecfa96f04fb001d7edce54123946ab8929f"
      ],
      "author": {
        "name": "Kriti Dang",
        "email": "kritidang@google.com",
        "time": "Fri Jan 28 20:05:36 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 28 20:05:36 2022 +0000"
      },
      "message": "Merge \"Removing getSystemPreferredDisplayMode and adding it as part of DynamicDisplayInfo\""
    },
    {
      "commit": "e98acad781a583d42aa6d31c6bb806d11dc0d111",
      "tree": "9bdf737ae31c7533db03b3237dbb425deff6a96a",
      "parents": [
        "e713b77b854126703b6ab51e6a603a17c39ce5bf",
        "6fa425a82c0ff753d7bd1b98eef1d70154c54f88"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 28 19:46:30 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 28 19:46:30 2022 +0000"
      },
      "message": "Merge \"SF: Calculate WindowInfo frame correctly for all layers\""
    },
    {
      "commit": "ce2d5b6830dceb7b7ceea0bf1a94e884b204ff1b",
      "tree": "a0633e3990d873c4f6ed491ec695002e7578ee09",
      "parents": [
        "624d5609e9fb34442a08fedc6d5e89f34a1ae04a",
        "2a2293c804c6ade6ab7192b6b619ee247c7064a5"
      ],
      "author": {
        "name": "Christine Franks",
        "email": "christyfranks@google.com",
        "time": "Fri Jan 28 18:16:06 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 28 18:16:06 2022 +0000"
      },
      "message": "Merge \"Update uniqueId association native methods\""
    },
    {
      "commit": "646f8ecfa96f04fb001d7edce54123946ab8929f",
      "tree": "65df7d87cc43acd591f43a3103ddf942bb4939a4",
      "parents": [
        "0054f4122db1b93d617e8a58c604fdba23684256"
      ],
      "author": {
        "name": "Kriti Dang",
        "email": "kritidang@google.com",
        "time": "Tue Jan 18 14:35:02 2022 +0100"
      },
      "committer": {
        "name": "Kriti Dang",
        "email": "kritidang@google.com",
        "time": "Fri Jan 28 18:41:22 2022 +0100"
      },
      "message": "Removing getSystemPreferredDisplayMode and adding it as part of\nDynamicDisplayInfo\n\nBug: 209598222\nTest: atest CtsBootDisplayModeTestCases\nTest: atest libcompositionengine_test\nChange-Id: I1ce0a5a3916b14e25212dd1d2fc4f5e82674fcd1\n"
    },
    {
      "commit": "c9589c17c0394b8ae9c738a8bdb3daa057ed4f9c",
      "tree": "ea84bbbfdea1ad63b7e15e70f57454081d3e40a9",
      "parents": [
        "8c2859824db8f602a72ceff458f4374e6faf0a2a"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Wed Sep 22 06:11:43 2021 -0700"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Fri Jan 28 09:20:51 2022 -0800"
      },
      "message": "SF: Clean up input info calculations\n\nThis CL simplifies the calculation of the input transform and frame for\nLayers.\n\nIt also switches the calculations to use floats rather than intergers\nfor greater precesion when scaling.\n\nBug: 200787840\nBug: 179274888\nTest: atest libgui_test\nChange-Id: Ia1ed53b669caa867e5b98e72d5d71ed615222f8f\n"
    },
    {
      "commit": "8c2859824db8f602a72ceff458f4374e6faf0a2a",
      "tree": "c9c2ccbfef68661940126084da5cffd348ce01f1",
      "parents": [
        "6fa425a82c0ff753d7bd1b98eef1d70154c54f88"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Fri Jan 28 09:19:39 2022 -0800"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Fri Jan 28 09:19:39 2022 -0800"
      },
      "message": "SF: Enforce that layers with invalid input bounds are not focusable\n\nBug: 162194035\nTest: atest libgui_test\nChange-Id: Ic561e8b3e52faae28888ef3d323583e09aa278c0\n"
    },
    {
      "commit": "6fa425a82c0ff753d7bd1b98eef1d70154c54f88",
      "tree": "8094f246fb640f61053ae8d73066dd1675d39fd4",
      "parents": [
        "163ccac62a7c185800de10b3f3dccdd57a025ab5"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Thu Dec 16 07:16:04 2021 -0800"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Fri Jan 28 09:18:22 2022 -0800"
      },
      "message": "SF: Calculate WindowInfo frame correctly for all layers\n\nThe old logic skipped transform calculation using an early return if the\nlayer bounds were invalid. This skipped the calculations which\ntransformed the WindowInfo frame into display space. This also resulted in\ncontainer layers being misconfigured, since they did not have their\ninput bounds calculated correctly.\n\nAllow all layers to have their WindowInfo calculated correctly in\ndisplay space, even if their input bounds happen to be invalid.\n\nBug: 162194035\nTest: atest libgui_test\nTest: manual\nChange-Id: I7b3c361bb9a12adf52586d3a940501e4d8a9e667\n"
    },
    {
      "commit": "785482543d33b17f4452bed8d1f560521c0f24f3",
      "tree": "5f74776da00adf5ab221464200019dabeb242185",
      "parents": [
        "bc8ab0211f5693e6f8901b9484894ac5c651fc9e"
      ],
      "author": {
        "name": "Vadim Tryshev",
        "email": "vadimt@google.com",
        "time": "Thu Jan 27 19:32:46 2022 +0000"
      },
      "committer": {
        "name": "Alex Chau",
        "email": "alexchau@google.com",
        "time": "Fri Jan 28 14:34:12 2022 +0000"
      },
      "message": "Multiply stale event detection threshold by HwTimeoutMultiplier\n\nBug: 202433017\nChange-Id: I76c71865238d43712cd0af020505a32a21db3ed9\nTest: presubmit\n"
    },
    {
      "commit": "bb19287fee88ab0437f7c79dbbc792f121db6b91",
      "tree": "96249d824fe4fa72af038262158ac7f0ec9003e1",
      "parents": [
        "e123883bbd92a1fd95c77fa5ea9eb267f8d9878c"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Thu Dec 09 17:14:49 2021 -0800"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Fri Jan 28 01:10:19 2022 -0800"
      },
      "message": "Link libinput statically for inputflinger_tests\n\nLinking statically makes it easier to debug tests by letting developer\nadd logs to libinput and have that reflected in the \u0027atest\u0027 runs for\ninputflinger_tests without having to resync.\n\nAlso in this CL, enable C++20 for libinput, which would allow us to do\nthings like specify the default comparison operator.\n\nBug: 167946763\nTest: cd services/inputflinger \u0026\u0026 atest\nChange-Id: Iaa3f2e34d79fa000ef42b74237efae6233b44674\n"
    },
    {
      "commit": "e123883bbd92a1fd95c77fa5ea9eb267f8d9878c",
      "tree": "d469c3b036bb5c913eb376cc5e30acaa9e96377e",
      "parents": [
        "bc8ab0211f5693e6f8901b9484894ac5c651fc9e"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Thu Dec 09 17:14:49 2021 -0800"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Fri Jan 28 01:07:17 2022 -0800"
      },
      "message": "Add libpalmrejection_test to inputflinger presubmit\n\nThe libpalmrejection library is going to be used in the input code, so\nlet\u0027s run the libpalmrejection_test unit test whenever we change input\ncode to prevent regressions.\n\nBug: 198472780\nTest: cd services/inputflinger \u0026\u0026 atest\nChange-Id: I4fabb51395b758c578bdef967899c76d17959c18\n"
    },
    {
      "commit": "ea08cec6382e8b8e92856cabba791b43da535f80",
      "tree": "f98a95e492e6eaed1ce10a72febb6c286c73ccf0",
      "parents": [
        "701625279bbe4e08d7cc638835b098dbccecf00d",
        "b2089a38b63ccdcbacaa3d37eede6c18d921d64b"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 27 22:15:39 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 27 22:15:39 2022 +0000"
      },
      "message": "Merge \"Revert^2 \"Added surfaceflinger_fuzzer\"\""
    },
    {
      "commit": "701625279bbe4e08d7cc638835b098dbccecf00d",
      "tree": "94c87a5d7152c4a3c5e0f204163e6a3c0719b6f7",
      "parents": [
        "e22425bd6dc9dc8a3bedcede2bf354c038f98fe8",
        "01b867f2d57ada85cfaac84811a853d07867ccbb"
      ],
      "author": {
        "name": "Leon Scroggins",
        "email": "scroggo@google.com",
        "time": "Thu Jan 27 19:57:32 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 27 19:57:32 2022 +0000"
      },
      "message": "Merge \"Omit DISPLAY_DECORATION layers from CachedSets\""
    },
    {
      "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": "01b867f2d57ada85cfaac84811a853d07867ccbb",
      "tree": "271dcfdddc4e157e48d7717e22d07bd005c18d89",
      "parents": [
        "bc5f68fd1e3c3874a6c0832530254f8f1081fa2e"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Wed Jan 12 16:14:52 2022 -0500"
      },
      "committer": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Thu Jan 27 09:05:02 2022 -0500"
      },
      "message": "Omit DISPLAY_DECORATION layers from CachedSets\n\nCaching such a layer defeats hardware optimizations that allow the layer\nto be inexpensive in power and perf.\n\nFixes: 210707794\nTest: libcompositionengine_test\nChange-Id: I1a415f9b21446dbbe60488d66b00a5da231d42c3\n"
    },
    {
      "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": "1756166758bcb5809a597b7eabf7643104773870",
      "tree": "392bd48bad1a368e394fb206c698537e2fe9ddb6",
      "parents": [
        "89f42eb1ea966d77358365d2c46c37afad590c2c"
      ],
      "author": {
        "name": "Tyler Trephan",
        "email": "tylertrephan@google.com",
        "time": "Thu Jan 20 21:33:48 2022 +0000"
      },
      "committer": {
        "name": "Tyler Trephan",
        "email": "tylertrephan@google.com",
        "time": "Wed Jan 26 18:31:50 2022 +0000"
      },
      "message": "Add AIDL conversion for Limited Axes IMU sensors\n\nBug: 187342209\nTest: m sensorservice\nChange-Id: Iacfeab7eb52080a6ff9c088552b513cf1bee9d00\n"
    },
    {
      "commit": "05593c3a5f8f7c5d78bb15067c03e348021592f1",
      "tree": "7cbeb08db31b46089af2af3ac995d7f8bdd431c5",
      "parents": [
        "86ce717d57c600cf032aaf837e1c01e88f8ad3a2",
        "e9b1e96808150f52a0532f3bee1a5f48d3e5a3da"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Wed Jan 26 18:08:54 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Jan 26 18:08:54 2022 +0000"
      },
      "message": "Merge changes Ia14551e0,Idd32600c,I694e2aa5 am: 69ff677626 am: e9b1e96808\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1953900\n\nChange-Id: I8b43f96d6ac6d08320bcd0d5a11c2528cdea21d4\n"
    },
    {
      "commit": "86ce717d57c600cf032aaf837e1c01e88f8ad3a2",
      "tree": "5470526595c2fd918ab53d02a50266d8ed76e994",
      "parents": [
        "99f71443362592ee900182d286271f7493fd29eb",
        "21ce06abe5fb1c4f99af2d81485aff816dd451f0"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Wed Jan 26 18:08:53 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Jan 26 18:08:53 2022 +0000"
      },
      "message": "SF: give a higher score to frame rates which exact matches am: 03c020873e am: 21ce06abe5\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1953899\n\nChange-Id: I28871b1cbd787ab15d0a9b5b21c7e80ceda2ac53\n"
    },
    {
      "commit": "99f71443362592ee900182d286271f7493fd29eb",
      "tree": "fe0e3cb2ddb14c6001bbb4ac8877c6191b7d68ec",
      "parents": [
        "9a8543c84fe7e34c74204a9573fab4223644f2f1",
        "2d9f9037b02dc0cfbea5679dd428833b9e57d1cc"
      ],
      "author": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Wed Jan 26 18:08:51 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Jan 26 18:08:51 2022 +0000"
      },
      "message": "Tune RefreshRateConfigs for fractional refresh rates am: e09237fbc1 am: 2d9f9037b0\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1953898\n\nChange-Id: I1e728825697026ef5f484b931c3ae8aa4e528571\n"
    },
    {
      "commit": "21ce06abe5fb1c4f99af2d81485aff816dd451f0",
      "tree": "a77ab1cae58a55619594aaf45c005a1be56ca0af",
      "parents": [
        "2d9f9037b02dc0cfbea5679dd428833b9e57d1cc",
        "03c020873e4a8c57c585f4c272390bce1f6252ac"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Wed Jan 26 17:51:33 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Jan 26 17:51:33 2022 +0000"
      },
      "message": "SF: give a higher score to frame rates which exact matches am: 03c020873e\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1953899\n\nChange-Id: I8fea473e5e06935598ddf4d81d0a95e398b038b4\n"
    },
    {
      "commit": "2d9f9037b02dc0cfbea5679dd428833b9e57d1cc",
      "tree": "04bb9ba15527f502b77aee0c32c806e88ca170c3",
      "parents": [
        "16257f6e7d11804b83750981b5257861814e5f7c",
        "e09237fbc1a3afcd2561f7ecf60349a690c13907"
      ],
      "author": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Wed Jan 26 17:51:32 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Jan 26 17:51:32 2022 +0000"
      },
      "message": "Tune RefreshRateConfigs for fractional refresh rates am: e09237fbc1\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1953898\n\nChange-Id: Ib63ee14b3a3cdcfae7a3b82f58f0c6f82abf3025\n"
    },
    {
      "commit": "69ff6776269e2860b981822791282167a26a9707",
      "tree": "9f31ec706cd550636b4d60017f9267e387f8b6ca",
      "parents": [
        "c7f873566a3203b8bb7b9a059a87053add73593a",
        "76ec9fad38902888c169f98941d9784b95bab4aa"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Wed Jan 26 17:30:56 2022 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 26 17:30:56 2022 +0000"
      },
      "message": "Merge changes Ia14551e0,Idd32600c,I694e2aa5\n\n* changes:\n  SF: adjust kNonExactMatchingPenalty\n  SF: give a higher score to frame rates which exact matches\n  Tune RefreshRateConfigs for fractional refresh rates\n"
    },
    {
      "commit": "327d6a70ed3a2870159ed48a42afc2107f375808",
      "tree": "21a5deb423e5b20b7936afa778848c45d24cd598",
      "parents": [
        "d4520d56b6a72a899cd65415c9d3bfc7df44c11d",
        "a8626ecd4e7ec237d9fe8066f578944fd10f1045"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 26 16:17:58 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 26 16:17:58 2022 +0000"
      },
      "message": "Merge \"SF: Simplify getBestRefreshRate caching\""
    },
    {
      "commit": "2a2293c804c6ade6ab7192b6b619ee247c7064a5",
      "tree": "3c4df322ebcb0153ed68bfec20f46b8c303d3208",
      "parents": [
        "e1d187233e664764023c38bfb98069e45c01afdb"
      ],
      "author": {
        "name": "Christine Franks",
        "email": "christyfranks@google.com",
        "time": "Tue Jan 18 11:51:16 2022 -0800"
      },
      "committer": {
        "name": "Christine Franks",
        "email": "christyfranks@google.com",
        "time": "Wed Jan 26 02:08:33 2022 -0800"
      },
      "message": "Update uniqueId association native methods\n\nChange the association mechanism from names to physical port locations\n(PHYS). In addtion, read and match the associations for touchscreens as\nwell as for cursor input devices.\n\nBug: 202273865\nTest: atest inputflinger_tests\nChange-Id: I4ed2f140d2125833f239ffcb16f5efff9d342acf\n"
    },
    {
      "commit": "d4520d56b6a72a899cd65415c9d3bfc7df44c11d",
      "tree": "b40740815df3435c7ced3ec391e67f4a3ef86153",
      "parents": [
        "a81824b8306af8e790fa7dbfc6d8ff627913906c",
        "0c2527089f319bf6bb0a93bfd707f700b9640875"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 26 09:04:18 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 26 09:04:18 2022 +0000"
      },
      "message": "Merge \"SF: Clean up RefreshRateConfigs tests\""
    },
    {
      "commit": "b2089a38b63ccdcbacaa3d37eede6c18d921d64b",
      "tree": "481f1ea39f4d088e2bc18e192dcc8d0168f83e8d",
      "parents": [
        "e5eb7deb125553876b664f4301cb5e0c3b545823"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Sat Jan 15 00:34:20 2022 +0000"
      },
      "committer": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Wed Jan 26 03:42:35 2022 +0000"
      },
      "message": "Revert^2 \"Added surfaceflinger_fuzzer\"\n\nb1e4314856cded61f5db5864d0598d1c68ba79b7\n\nChange-Id: I67191c6efd915fa498978f67f4b0ddd154da2b03\n"
    },
    {
      "commit": "cfb660d156fac6bee70b9daf1895c8b0ca906e93",
      "tree": "1b934947d8b611909fe6e271288a9e3cb32de6b6",
      "parents": [
        "e1d187233e664764023c38bfb98069e45c01afdb",
        "1a417af29164258264e68f76e586391a56c53687"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 26 03:04:51 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 26 03:04:51 2022 +0000"
      },
      "message": "Merge changes from topic \"hwc3_idle_timer_control\"\n\n* changes:\n  sf: change the mock method for callback APIs\n  sf: Add basic implementation of onVsyncIdle\n"
    },
    {
      "commit": "a8626ecd4e7ec237d9fe8066f578944fd10f1045",
      "tree": "863fba0ecba674598d849addd9386c301c2bf4d5",
      "parents": [
        "0c2527089f319bf6bb0a93bfd707f700b9640875"
      ],
      "author": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Wed Dec 15 18:13:30 2021 -0800"
      },
      "committer": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Tue Jan 25 18:17:20 2022 -0800"
      },
      "message": "SF: Simplify getBestRefreshRate caching\n\nCache the arguments/result as std::pair by removing the out parameter\nfor GlobalSignals.\n\nBug: 185535769\nTest: libsurfaceflinger_unittest\nChange-Id: Ibfb2aa4ca327b378844554bcd96620f84fc0460a\n"
    },
    {
      "commit": "e1d187233e664764023c38bfb98069e45c01afdb",
      "tree": "25c3af19129720ea841dc78fea7c9ed9b44841fb",
      "parents": [
        "b13f2c8fa7697f53044e035bee498b295f1f2ff4",
        "e5eb7deb125553876b664f4301cb5e0c3b545823"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Wed Jan 26 00:56:08 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 26 00:56:08 2022 +0000"
      },
      "message": "Merge \"Revert^2 \"Group surfaceflinger mock files for use in fuzzers\"\""
    },
    {
      "commit": "0c2527089f319bf6bb0a93bfd707f700b9640875",
      "tree": "bf9659d227502eaf892f5586f2e5c7b5cca14e9a",
      "parents": [
        "b13f2c8fa7697f53044e035bee498b295f1f2ff4"
      ],
      "author": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Mon Dec 20 20:32:09 2021 -0800"
      },
      "committer": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Tue Jan 25 16:47:29 2022 -0800"
      },
      "message": "SF: Clean up RefreshRateConfigs tests\n\nFinish renaming `config` to `mode`, and reduce repetition in preparation\nof RefreshRateConfigs::RefreshRate removal.\n\nBug: 185535769\nBug: 129481165\nTest: libsurfaceflinger_unittest\nChange-Id: I9a87cec76387edbdfaeb31c1f24cff341489e45a\n"
    },
    {
      "commit": "b13f2c8fa7697f53044e035bee498b295f1f2ff4",
      "tree": "dc3fa75467007b376ed2d99533e7f43d3ffebb29",
      "parents": [
        "2e731f8312f96ad230fbfbf7ae04566ea41f9065",
        "de6d7b467e572d384f2bc1bc788259340ebe2f93"
      ],
      "author": {
        "name": "Rob Carr",
        "email": "racarr@google.com",
        "time": "Tue Jan 25 22:08:34 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 25 22:08:34 2022 +0000"
      },
      "message": "Merge \"SurfaceFlinger: Add Transaction#sanitize\""
    },
    {
      "commit": "52fa8e59db5e2298498857dd95cf0c63e61c091a",
      "tree": "e719960ccd953b85bc1f465daba775561bd7151e",
      "parents": [
        "f41c93858add97c4fa948352f26964ae945ca235",
        "3ef084b180f7d1449d9aebec0402a1fc1887ebde"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Jan 25 20:22:59 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Jan 25 20:22:59 2022 +0000"
      },
      "message": "SF: adjust kNonExactMatchingPenalty am: 3ef084b180\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/16686200\n\nChange-Id: I4a38a5cc3ffc137d2a8416df596feea803855942\n"
    },
    {
      "commit": "f41c93858add97c4fa948352f26964ae945ca235",
      "tree": "7f8f7fc31606165e275475aa7a53d5d5c12049c2",
      "parents": [
        "9c647ace3c953a7eda3acbacdbbce498ebf68a22",
        "b351245a4d39de4d0cb02dd21f1ccaf4773eeb93"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Jan 25 20:22:57 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Jan 25 20:22:57 2022 +0000"
      },
      "message": "SF: give a higher score to frame rates which exact matches am: b351245a4d\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/16667170\n\nChange-Id: I95eded510968b4f06dd423e4976a698ec6cd2dfb\n"
    },
    {
      "commit": "9c647ace3c953a7eda3acbacdbbce498ebf68a22",
      "tree": "5f91b8aa4e0957d7be91579c4bde5902e69bb0c7",
      "parents": [
        "5502d9f7a2ac88aa344a5f296243be5c4e1105ad",
        "e3e68adf683d76a83197ac921b7c2b3632117880"
      ],
      "author": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Tue Jan 25 20:22:55 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Jan 25 20:22:55 2022 +0000"
      },
      "message": "Tune RefreshRateConfigs for fractional refresh rates am: e3e68adf68\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/16667169\n\nChange-Id: I6d23995cd8bebb8216d5a09fe4c8e4c35d0f51eb\n"
    },
    {
      "commit": "de6d7b467e572d384f2bc1bc788259340ebe2f93",
      "tree": "1a2dbd6003e5f71449debe31c7cc7975ec829b50",
      "parents": [
        "6db68e1d8390a145bbfeb62e2f392052b1d5868a"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Fri Jan 07 18:23:06 2022 -0800"
      },
      "committer": {
        "name": "Rob Carr",
        "email": "racarr@google.com",
        "time": "Tue Jan 25 18:27:23 2022 +0000"
      },
      "message": "SurfaceFlinger: Add Transaction#sanitize\n\nVarious elements of the Transaction interface require\na permission in order to apply. In particular the setTrustedOverlay\nand setInputWindowInfo fields. These permission checks are\nimplemented by checking the PID and the UID of the process which\nsent the transaction. Unfortunately widespread use of transaction\nmerging makes this inadequate. At the moment\nIWindowSession#finishDrawing seems to be the only boundary on which\ntransactions move from client to system processes, and so we expose\na sanitize method and use it from there to resolve the situation\nin an easily backportable way.\n\nMoving forward it likely make sense to move security sensitive\ninterfaces off of Transaction. Most of the things behind permissions\ncurrently are not truly security sensitive, more of just a request\nnot to use them.\n\nIt was also considered to sanitize transactions at all process\nboundaries through writeToParcel, however this could be disruptive\nas previously permissioned processes (WM and SysUI) could freely\nexchange transactions. As the change needs to be backportable the\nlowest risk option was chosen.\n\nBug: 213644870\nTest: Existing tests pass\nChange-Id: I424f45bc30ea8e56e4c4493203ee0749eabf239c\n"
    },
    {
      "commit": "84218a21b931a6a47aa0e45a6b961642880ad3d3",
      "tree": "74e60ad74a65ead6178d8566ac3c1a7a863cdd65",
      "parents": [
        "a97c991f04d9698a865f8c581aeeec7fb0637804",
        "b21d94e6b46a269e9960118c7c8d61ce984aea3e"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Tue Jan 25 17:40:18 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 25 17:40:18 2022 +0000"
      },
      "message": "Merge \"Supply extra brightness parameters to RenderEngine\""
    },
    {
      "commit": "1a417af29164258264e68f76e586391a56c53687",
      "tree": "01d12230b7411d2d1925f0cf586f2ef382691c62",
      "parents": [
        "3401b5693959d3a3b5f77f2cb60bc2d3518cc598"
      ],
      "author": {
        "name": "Yichi Chen",
        "email": "yichichen@google.com",
        "time": "Fri Jan 21 15:29:52 2022 +0800"
      },
      "committer": {
        "name": "Yichi Chen",
        "email": "yichichen@google.com",
        "time": "Tue Jan 25 21:01:39 2022 +0800"
      },
      "message": "sf: change the mock method for callback APIs\n\nFollowing the change in callback function, the patch changes the mock\nmethods in unit tests and also removes the requirement of calling\nisSupported function since it is not necessary in all implementations.\n\nBug: 194068871\nTest: atest libsurfaceflinger_unittest\nChange-Id: I22dc25b4118878623871b4547c83f4ab51923985\n"
    },
    {
      "commit": "a97c991f04d9698a865f8c581aeeec7fb0637804",
      "tree": "acb714145000518ec9f89ece6d6ad49389c0b59a",
      "parents": [
        "d37a1776dbcbae6869a8d8814a53366db249a19d",
        "5502d9f7a2ac88aa344a5f296243be5c4e1105ad"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jan 25 03:04:30 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Jan 25 03:04:30 2022 +0000"
      },
      "message": "Merge \"BatteryService: support Dock charging\" am: 0d692ed940 am: 051db486c8 am: c77c261f95 am: 5502d9f7a2\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1946294\n\nChange-Id: I231b3a1fd54b7cdc1e2b5824a6fb35f88166812d\n"
    },
    {
      "commit": "5502d9f7a2ac88aa344a5f296243be5c4e1105ad",
      "tree": "504de47b601dbe86a51b0224106d7335cd36b564",
      "parents": [
        "1b5e52f83e4532499cf6e684f542201e324ef528",
        "c77c261f95636cf29efab660bc3e08d3b55345d1"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jan 25 02:46:37 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Jan 25 02:46:37 2022 +0000"
      },
      "message": "Merge \"BatteryService: support Dock charging\" am: 0d692ed940 am: 051db486c8 am: c77c261f95\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1946294\n\nChange-Id: Id09208738a1629ae47427e4391b9ff6a00ec1834\n"
    },
    {
      "commit": "c77c261f95636cf29efab660bc3e08d3b55345d1",
      "tree": "546cbbcefd116eae9dd9bb7eba3ab590c09bc305",
      "parents": [
        "5677c83259ac38c7190198b653d7038e8fbf69ef",
        "051db486c833452efd9820518cf4d5524f821ef7"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jan 25 02:30:27 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Jan 25 02:30:27 2022 +0000"
      },
      "message": "Merge \"BatteryService: support Dock charging\" am: 0d692ed940 am: 051db486c8\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1946294\n\nChange-Id: I4a82c1031acc10b22eb7ee9bd3a875035979aa11\n"
    },
    {
      "commit": "0d692ed940b70078088e110512a20f333ede4c9e",
      "tree": "f3115a9975e2db6ff8199c2ecd9b8986eca16c01",
      "parents": [
        "fda5ae6a7850814ab97830e94179c505b03ec357",
        "43bf3ee1eff9c799b5a3f07f8f1df324f8d2c68d"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jan 25 01:55:20 2022 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 25 01:55:20 2022 +0000"
      },
      "message": "Merge \"BatteryService: support Dock charging\""
    },
    {
      "commit": "0a6888d1122600360a25583ac86b14791becbd64",
      "tree": "df3acc64e605426a98d4b3be6bb064c741566deb",
      "parents": [
        "203ff82d2a9facf917bef23eec85f19eafdd5caa",
        "46d8a1e86d7a922c3ba4b08ccdd05e01ed4d9175"
      ],
      "author": {
        "name": "Christine Franks",
        "email": "christyfranks@google.com",
        "time": "Tue Jan 25 01:19:08 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 25 01:19:08 2022 +0000"
      },
      "message": "Merge \"Add pointer acceleration native APIs\""
    },
    {
      "commit": "63fcbac38195980a2c6ab6265ce02d525772d0a7",
      "tree": "820ec97e1255e9e6de743d2fe301300ec5599836",
      "parents": [
        "582c98b9be21d1bef49b8a7c8d5138c22c36b3ed",
        "b64a3b46c2870ab7ded787ea317cc84db4e255c3"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jan 24 20:10:35 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 24 20:10:35 2022 +0000"
      },
      "message": "Merge changes I693c514a,Ibfdf403d,Ie260fb09,If07953b4\n\n* changes:\n  SF: Pass timestamps into layer tracing\n  SF: Commit created layers without using transactions\n  SF: Only create a starting entry if there are starting states\n  SF: Allow privileged clients to create layers offscreen\n"
    },
    {
      "commit": "46d8a1e86d7a922c3ba4b08ccdd05e01ed4d9175",
      "tree": "97db70ef810567c59cdf69ef0413e8a3aa11969a",
      "parents": [
        "6db68e1d8390a145bbfeb62e2f392052b1d5868a"
      ],
      "author": {
        "name": "Christine Franks",
        "email": "christyfranks@google.com",
        "time": "Wed Jan 05 16:11:48 2022 -0800"
      },
      "committer": {
        "name": "Christine Franks",
        "email": "christyfranks@google.com",
        "time": "Mon Jan 24 11:09:52 2022 -0800"
      },
      "message": "Add pointer acceleration native APIs\n\nBug: 202273865\nTest: manual\nChange-Id: I61cca8e313f183ff421147d25f11819959e4345a\n"
    },
    {
      "commit": "6db68e1d8390a145bbfeb62e2f392052b1d5868a",
      "tree": "375f4364423ea0e110b826ab7dfb955c4d29db48",
      "parents": [
        "8850555f49cbd94ce3daaa9f2ea6fbd967c56987",
        "4af3b3dcdfe9e8174d766f59e20e133df89be179"
      ],
      "author": {
        "name": "Philip Junker",
        "email": "philipjunker@google.com",
        "time": "Mon Jan 24 18:39:17 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 24 18:39:17 2022 +0000"
      },
      "message": "Merge \"Add API to get KeyCode produced by physical key location.\""
    },
    {
      "commit": "3401b5693959d3a3b5f77f2cb60bc2d3518cc598",
      "tree": "e4d3235a3d6f70b28f190a83a4a17ae0d02172e0",
      "parents": [
        "0054f4122db1b93d617e8a58c604fdba23684256"
      ],
      "author": {
        "name": "Yichi Chen",
        "email": "yichichen@google.com",
        "time": "Mon Jan 17 15:42:35 2022 +0800"
      },
      "committer": {
        "name": "Yichi Chen",
        "email": "yichichen@google.com",
        "time": "Tue Jan 25 00:48:06 2022 +0800"
      },
      "message": "sf: Add basic implementation of onVsyncIdle\n\nTo adopt the new AIDL composer callback API, the patch changes the\narchitecture to pass HWC2::ComposerCallback directly in the\nregisterCallback function. The underlying implementations can use their\nown bridge to adapt with different versions of callback APIs.\n\nBug: 194068871\nTest: atest libsurfaceflinger_unittest\nChange-Id: I08bcf481747f38805fb2527e18293585ede51554\n"
    },
    {
      "commit": "533c2f808d99a2c6fb93accbc1ff103bcb4b6af9",
      "tree": "dd12683de84efc3d0c48b8e3da5ecab4af3465ed",
      "parents": [
        "129a513d957da768aa55f3f536cb1f1af4a6c0bc"
      ],
      "author": {
        "name": "Nataniel Borges",
        "email": "natanieljr@google.com",
        "time": "Fri Jan 21 12:07:02 2022 +0100"
      },
      "committer": {
        "name": "Nataniel Borges",
        "email": "natanieljr@google.com",
        "time": "Sun Jan 23 18:58:43 2022 +0100"
      },
      "message": "Add API for writing SF traces to file\n\nCurrently the API supports only starting or stopping the trace, and writes to file when the trace is stopped. However, in some scenarios we would like to maintain the trace active, and just dump the trace.\n\nBug: 205138504\nTest: all API, check if files are created under /data/misc/wmtrace\nChange-Id: I0102d5f9a96afc159372c5b8ad2261b72f13462f\n"
    },
    {
      "commit": "129a513d957da768aa55f3f536cb1f1af4a6c0bc",
      "tree": "d59ee35af56a4cd5f82849cf06b36cd0d6989995",
      "parents": [
        "51ae9d7ef8309c2f9d80f3a04826589039e59b7e",
        "d0a896595f0aa62b36fdcc5a54214dcefbf46f73"
      ],
      "author": {
        "name": "Tiger Huang",
        "email": "tigerhuang@google.com",
        "time": "Sat Jan 22 08:01:00 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Jan 22 08:01:00 2022 +0000"
      },
      "message": "Merge \"Pipe display install orientation 1/2\""
    },
    {
      "commit": "163ccac62a7c185800de10b3f3dccdd57a025ab5",
      "tree": "df7ac3b91bbefe46b3e2cb3a8a2799c0cf4e8aad",
      "parents": [
        "b1aa60c9bd9e0ede48592b3cce8bfdafe6a06a65",
        "b768bb488e050f7edbcc85986e061f569e05275d"
      ],
      "author": {
        "name": "Christine Franks",
        "email": "christyfranks@google.com",
        "time": "Fri Jan 21 20:34:27 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 21 20:34:27 2022 +0000"
      },
      "message": "Merge \"Add pointer capture eligibility native APIs\""
    },
    {
      "commit": "b1aa60c9bd9e0ede48592b3cce8bfdafe6a06a65",
      "tree": "5dcdce120835acf58cf91d842ed15dcb5f31bd7d",
      "parents": [
        "f1e9f02a8cab0b08b2d425fec01a1f12d4b48670",
        "ff793876a98bc5d75b04e1ea74b3aae37aba0501"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Fri Jan 21 19:42:16 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 21 19:42:16 2022 +0000"
      },
      "message": "Merge \"Move DisplayIdentification parsing to libui\""
    },
    {
      "commit": "f1e9f02a8cab0b08b2d425fec01a1f12d4b48670",
      "tree": "41276ce3789f7f2d8cc60fa58b4123732ab887e3",
      "parents": [
        "bcef9e6899287c0f4fabbf94beeb538c3087bffe",
        "1c595501f628bffc2bc1acaba4d10deb1c749b8d"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri Jan 21 19:25:37 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 21 19:25:37 2022 +0000"
      },
      "message": "Merge \"SF: adjust kNonExactMatchingPenalty\""
    },
    {
      "commit": "bcef9e6899287c0f4fabbf94beeb538c3087bffe",
      "tree": "9b6d77ec975e87ff5f2be479207a795e2ad267fd",
      "parents": [
        "eb98d0e02fc6fd8b197564701808daf681313f5e",
        "4cdc8ba51524cc2ffc89829a16ea3ea90a322978"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 21 18:53:27 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 21 18:53:27 2022 +0000"
      },
      "message": "Merge \"Add AIDL conversion for head tracker sensor\""
    },
    {
      "commit": "4af3b3dcdfe9e8174d766f59e20e133df89be179",
      "tree": "f8abd1e2c2323d876b21fa20242104dc552191f8",
      "parents": [
        "f22b3b79abb741f7e44dc359c621592bfba450fe"
      ],
      "author": {
        "name": "Philip Junker",
        "email": "philipjunker@google.com",
        "time": "Tue Dec 14 10:36:55 2021 +0100"
      },
      "committer": {
        "name": "Philip Junker",
        "email": "philipjunker@google.com",
        "time": "Fri Jan 21 18:01:04 2022 +0100"
      },
      "message": "Add API to get KeyCode produced by physical key location.\n\nThe physical key location is provided as a location KeyCode pointing to a location on a US keyboard layout.\n\nBug: 179812917\nTest: atest KeyboardLayoutChangeTest\nTest: atest android.hardware.input.cts.tests -m\nTest: atest inputflinger_tests -m\nChange-Id: Ib5ed41890cbbe393ee9ada1a04cbaaf82c9bb1fc\n"
    },
    {
      "commit": "76ec9fad38902888c169f98941d9784b95bab4aa",
      "tree": "046817446f5c4dd51bb6ddddb835086b78a0e449",
      "parents": [
        "03c020873e4a8c57c585f4c272390bce1f6252ac"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Jan 13 21:58:32 2022 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Jan 20 20:36:52 2022 -0800"
      },
      "message": "SF: adjust kNonExactMatchingPenalty\n\nGive a higher score to frame rates which exact matches by lowering\nthe scores for other refresh rates, to favor exact (or multiple)\nmatches when there are multiple refresh rate with a close value.\n\nBug: b/190578904\nTest: SF unit tests\nChange-Id: Ia14551e000ee1651a04ab580c4df2afcb2f8edeb\nMerged-In: Ia14551e000ee1651a04ab580c4df2afcb2f8edeb\n"
    },
    {
      "commit": "3ef084b180f7d1449d9aebec0402a1fc1887ebde",
      "tree": "f2639eab9bfbd81590befae74169237207c65748",
      "parents": [
        "b351245a4d39de4d0cb02dd21f1ccaf4773eeb93"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Jan 13 21:58:32 2022 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Jan 20 20:35:59 2022 -0800"
      },
      "message": "SF: adjust kNonExactMatchingPenalty\n\nGive a higher score to frame rates which exact matches by lowering\nthe scores for other refresh rates, to favor exact (or multiple)\nmatches when there are multiple refresh rate with a close value.\n\nBug: b/190578904\nTest: SF unit tests\nChange-Id: Ia14551e000ee1651a04ab580c4df2afcb2f8edeb\nMerged-In: Ia14551e000ee1651a04ab580c4df2afcb2f8edeb\n"
    },
    {
      "commit": "7ce9810e40115bdc7e944e0275443bb298eedc9d",
      "tree": "598d10995e3aa412fc86ebc081cec276602aa450",
      "parents": [
        "93b523ced3c34d44430c45c7a1f74940f33b6296",
        "080e1e6fcbd3cb44f45044f90cf7fa9854195397"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 20 23:18:38 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Jan 20 23:18:38 2022 +0000"
      },
      "message": "Merge \"libaudiomanager: Add static variant of library\" am: ebf9ccac30 am: a758c8fd25 am: cfa53dd598 am: 080e1e6fcb\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1952547\n\nChange-Id: I56dbf81401120bd3d18cb8a856630841b99977ae\n"
    },
    {
      "commit": "080e1e6fcbd3cb44f45044f90cf7fa9854195397",
      "tree": "e79f7ee76389ddef45a939c28530125da08165aa",
      "parents": [
        "b0c4c748d61a50ffd1f56e03a734486a87f03a4e",
        "cfa53dd598ec34a1d6d5989d771c71d22d8cfb3b"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 20 23:00:20 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Jan 20 23:00:20 2022 +0000"
      },
      "message": "Merge \"libaudiomanager: Add static variant of library\" am: ebf9ccac30 am: a758c8fd25 am: cfa53dd598\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1952547\n\nChange-Id: I04f30a106ebe5738f9a2442ce5fc8e3eb2a22b9e\n"
    },
    {
      "commit": "cfa53dd598ec34a1d6d5989d771c71d22d8cfb3b",
      "tree": "cc58d0406ea56e0f6b61cc41b946a2ba00f6196e",
      "parents": [
        "de330d57046452471efb6cb8535acf831128ca97",
        "a758c8fd25ce71269a4ac0100af718763f69d2bf"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 20 22:49:09 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Jan 20 22:49:09 2022 +0000"
      },
      "message": "Merge \"libaudiomanager: Add static variant of library\" am: ebf9ccac30 am: a758c8fd25\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1952547\n\nChange-Id: Ie9ae03b2a0da183c8b012229a4a6ab2b48e54712\n"
    },
    {
      "commit": "b768bb488e050f7edbcc85986e061f569e05275d",
      "tree": "63fad12dd6fed6d0e5369520d79e0e7fcc0fa4b7",
      "parents": [
        "0054f4122db1b93d617e8a58c604fdba23684256"
      ],
      "author": {
        "name": "Christine Franks",
        "email": "christyfranks@google.com",
        "time": "Mon Nov 29 12:11:31 2021 -0800"
      },
      "committer": {
        "name": "Christine Franks",
        "email": "christyfranks@google.com",
        "time": "Thu Jan 20 10:28:41 2022 -0800"
      },
      "message": "Add pointer capture eligibility native APIs\n\nBug: 202273865\nTest: manual\nChange-Id: I98a31f4cae1a12f45f789cb1344a258e3de30317\n"
    },
    {
      "commit": "4cdc8ba51524cc2ffc89829a16ea3ea90a322978",
      "tree": "96a0d16bf7b77d76977e77302cad0b233aa4b533",
      "parents": [
        "c862a8a71eaaa1b80c95806c58e754c22fba413a"
      ],
      "author": {
        "name": "Brian Duddie",
        "email": "bduddie@google.com",
        "time": "Wed Jan 19 14:31:48 2022 -0800"
      },
      "committer": {
        "name": "Brian Duddie",
        "email": "bduddie@google.com",
        "time": "Thu Jan 20 10:04:20 2022 -0800"
      },
      "message": "Add AIDL conversion for head tracker sensor\n\nBug: 210156629\nTest: compilation only at this stage\nChange-Id: I9d97d7f913dd857cbc8d588bab5e41c60c8a29fa\n"
    },
    {
      "commit": "d0a896595f0aa62b36fdcc5a54214dcefbf46f73",
      "tree": "0e9e92624b449894575f00455809bbfd32949d0a",
      "parents": [
        "f22b3b79abb741f7e44dc359c621592bfba450fe"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Thu Jan 13 12:05:54 2022 -0800"
      },
      "committer": {
        "name": "Tiger Huang",
        "email": "tigerhuang@google.com",
        "time": "Thu Jan 20 11:19:55 2022 +0800"
      },
      "message": "Pipe display install orientation 1/2\n\nThis is a step to move the layout logic to the client side. We won\u0027t\ninvoke IWindowSession#relayout then, and the client should be able to\nset the transform hint on its own.\n\nBug: 161810301\nTest: presubmit\nChange-Id: I541b70fb921e22ab46ccb22391b8ca65eeb3d1a4\n"
    },
    {
      "commit": "686406cd5674ec21f67f34ce2bc6dff675ee526f",
      "tree": "f47d3403b992f32a6685f8c76861fbe43cf203c3",
      "parents": [
        "d4fd4a1affb6b1b118b3fc14c617adad86b253fb",
        "2ae6b6bc57089a726edf6ef7cc8582ec524c736f"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 20 01:28:21 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 20 01:28:21 2022 +0000"
      },
      "message": "Merge \"Implement game mode framerate override\""
    },
    {
      "commit": "b64a3b46c2870ab7ded787ea317cc84db4e255c3",
      "tree": "bd80480ccc1ab2a23366a25890c7abc4f48586a9",
      "parents": [
        "0fc7af50fc3402bcf6fdd3c9cedff59fd4c31f61"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Thu Jan 13 15:29:32 2022 -0800"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Wed Jan 19 16:58:03 2022 -0800"
      },
      "message": "SF: Pass timestamps into layer tracing\n\nThis will allow us to recreate layer traces that\nreflect the same timeline as the transaction\ntrace.\n\nTest: presubmit\nBug: 200284593\n\nChange-Id: I693c514ae56ed2137ad53b007a6722ba9396ecde\n"
    },
    {
      "commit": "0fc7af50fc3402bcf6fdd3c9cedff59fd4c31f61",
      "tree": "f2f88d96c59d32916c5527afa6fd10c58804e4b2",
      "parents": [
        "b8f2a2d5ada9bed7e430b3a5f64fa79e376ab905"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Thu Jan 13 08:11:34 2022 -0800"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Wed Jan 19 16:58:03 2022 -0800"
      },
      "message": "SF: Commit created layers without using transactions\n\nThis solves a couple of issues:\n1. This will remove the need to maintain a transaction\nqueue and a pending transaction queue. If we remove\none of the queues, we have to maintain transactions\nby apply tokens and layer creation transactions will\ncreate an order dependency between apply tokens.\n\n2. For transaction tracing, layer creations are\ntracked at the layer creation binder call. Tracking\ninternal layer creation transactions as well will\ncreate an invalid state since the transaction is\na side effect not a client request.\n\nTest: presubmit\nBug: 200284593\nChange-Id: Ibfdf403dd0129801fcfb4c64229616d48f84fe9b\n"
    },
    {
      "commit": "b8f2a2d5ada9bed7e430b3a5f64fa79e376ab905",
      "tree": "afb8d4133e92a51aefa561d7f4dcfe8a85fcb4be",
      "parents": [
        "858a3b4c8dfa03a5952cad4b0b695ee2cb4c31e8"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Thu Jan 13 08:10:10 2022 -0800"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Wed Jan 19 16:58:02 2022 -0800"
      },
      "message": "SF: Only create a starting entry if there are starting states\n\nTest: atest TransactionTracingTest\nBug: 200284593\nChange-Id: Ie260fb094117ec754778f8277602d10df6606fb2\n"
    },
    {
      "commit": "858a3b4c8dfa03a5952cad4b0b695ee2cb4c31e8",
      "tree": "6cd182985b0b775b4cd29bc093ccd644b2f32745",
      "parents": [
        "d4fd4a1affb6b1b118b3fc14c617adad86b253fb"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Wed Jan 12 20:42:28 2022 -0800"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Wed Jan 19 16:58:02 2022 -0800"
      },
      "message": "SF: Allow privileged clients to create layers offscreen\n\nIf the caller is privileged and a new layer has a null parent,\nthe new layer will be added to root. When recreating layer\nstate, we create layers as a privileged client so we need to\nspecify if a layer need to be added offscreen.\n\nTest: presubmit\nBug: 200284593\nChange-Id: If07953b401020b115b0e364ff03ac65503bdc0ed\n"
    }
  ],
  "next": "c7b9263a7ad9a25f8f47ed51a800f25a25b29e77"
}
