)]}'
{
  "log": [
    {
      "commit": "4b8d36c0e1cbeaee7b23a3a1dd65eddb0fae11fa",
      "tree": "6466734f4ca6fcf2e5db2683e276b906c138bd4e",
      "parents": [
        "9a53b55af5228baef78a965d191dec83310009dc"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Fri Jun 07 15:10:46 2024 +0000"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Mon Jun 10 19:56:25 2024 +0000"
      },
      "message": "MotionEvent: Consolidate functions to transform PointerCoords\n\nRemove PointerCoords::transform(), which is a duplicate of\nMotionEvent::calculateTranformedCoords().\n\nBug: 342349872\nTest: atest inputflinger_tests libinput_tests\nChange-Id: I7610a0475a16e9964817f63efa67b291cb7aaf0a\n"
    },
    {
      "commit": "9a53b55af5228baef78a965d191dec83310009dc",
      "tree": "12d7c92a238bab9b242251510b6c6ff3e9c9c7fc",
      "parents": [
        "9ddc39d87e94828c3b2106eb19514f9325e12590"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Tue Jun 04 02:59:40 2024 +0000"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Mon Jun 10 19:56:17 2024 +0000"
      },
      "message": "MotionEvent: Differentiate directional support for AXIS_ORIENTATION\n\nWe have three cases for handling AXIS_ORIENTATION:\n1. Orientation is not supported by the input device, so the value for\n   AXIS_ORIENTATION should always be 0, regardless of display rotation.\n2. Orientation is supported, but a \"direction\" is not specified, like\n   for touchscreens and touchpads. The orientation must be in the range\n   [-pi/2, pi/2] for all display rotations.\n3. Orientation is fully supported, and the value is in the range [-pi,\n   pi] for all display rotations.\n\nIt is insufficient to rely on whether or not the PointerCoords has the\nbit for AXIS_ORIENTATION set to determine whether the event has a valid\norientation. This is because we always skip setting values of 0 for any\naxis in PointerCoords to save space during serialization.\n\nTo support these three cases, we introduce two new MotionEvent private\nflags. These are flags that are not exposed to Java and to the public\nAPIs.\n\nBug: 263310669\nTest: atest TouchScreenTest libinput_tests inputflinger_tests\nChange-Id: Iaa38afe35b00de74fbc5eefce25191bea52c2ea6\n"
    },
    {
      "commit": "cfbee5304f8fa7210e6f0816ca2ef2b6ab22c689",
      "tree": "95e36c55a539de10ccef28a5d5c66357990c7ab9",
      "parents": [
        "278e699ba51bb8c2bcde28f9d83565d7bf85d6a5"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Fri May 10 13:41:35 2024 -0700"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Tue May 14 08:31:17 2024 -0700"
      },
      "message": "Move ADISPLAY_ID_ definitions into LogicalDisplayId\n\nThese will eventually replace the existing definitions as follows:\n     ADISPLAY_ID_NONE --\u003e\u003e LogicalDisplayId::INVALID\n     ADISPLAY_ID_DEFAULT --\u003e\u003e LogicalDisplayId::DEFAULT\n\nWe are keeping the old definitions for now, to reduce the merge\nconflicts. These will be removed in subsequent CLs, after the\nframeworks/base and other repository patches go in.\n\nThe constant \"NONE\" was renamed to \"INVALID\" to make it consistent with\nthe Java definitions.\n\nBug: 339106983\nTest: m checkinput\nChange-Id: I0274be345159c85cb51fcea743d8acd3d298cd07\n"
    },
    {
      "commit": "b58c0c31025bc458204f35ae11f8b343535d27c6",
      "tree": "aea9c90a901773be84592ae29db414f343f2fbf7",
      "parents": [
        "870f4e7e579658f03b5c09a9928d35830bb7986f"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Fri May 10 17:24:06 2024 -0700"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Fri May 10 18:07:38 2024 -0700"
      },
      "message": "Remove __linux__ ifdefs where not needed\n\nThe downstream branches now know about Parcel and binder, so in some\nplaces, these #ifdef statements are not needed.\n\nThis CL should help reduce the divergence with downstream efforts. See\nthe merge conflict resolution CL as an example:\nhttps://googleplex-android-review.git.corp.google.com/c/platform/frameworks/native/+/27201796/-2..3\n\nBug: 309829647\nTest: presubmit\nChange-Id: Iec17cface5069ca79a565c205546db8ada8a07ee\n"
    },
    {
      "commit": "13bf76a87d9113d60f39e645c5453bf18d0a158d",
      "tree": "ad1bacb67e07c0040a8a983280ff8e74dd19da2c",
      "parents": [
        "5c636e3b4543a48cf64427cbf915af17cc7ded30"
      ],
      "author": {
        "name": "Linnan Li",
        "email": "lilinnan@xiaomi.corp-partner.google.com",
        "time": "Sun May 05 19:18:02 2024 +0800"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Thu May 09 11:00:42 2024 -0700"
      },
      "message": "Use a strongly typed LogicalDisplayId for displayId(2/n)\n\nCurrently, we use int32_t for displayId, which is not a safe type, and\nit may also lead to misdefinition of types. Here, we introduce\nLogicalDisplayId as a strong type for displayId and move all contents\nof constants.h into LogicalDisplayId.h.\n\nBug: 339106983\nTest: atest inputflinger_tests\nTest: atest InputTests\nTest: m checkinput\nTest: m libsurfaceflinger_unittest\nTest: presubmit\n\nChange-Id: If44e56f69553d095af5adb59b595e4a852ab32ce\nSigned-off-by: Linnan Li \u003clilinnan@xiaomi.corp-partner.google.com\u003e\n"
    },
    {
      "commit": "1a41fe079e3347a017134fc74d0fd145420e1847",
      "tree": "e9e8f5dc7e688bc5869edb8f3b7865db93e96bf2",
      "parents": [
        "25cf7faf4a428573bec0a900ec628d0919657b2b"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Mon Mar 11 18:38:40 2024 +0000"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Mon Mar 11 18:52:00 2024 +0000"
      },
      "message": "Increase leniency of precondition check for MotionEvent::split\n\nThe severity of a specific precondition check was unintentionally\npromoted from WARNING to FATAL in the following refactor:\nI6230b6aa0696dcfc275a5a14ab4af3d4b7bd0b45\n\nHere, we demote it back to a non-fatal check.\n\nBug: 328852741\nBug: 329107108\nTest: atest inputflinger_tests\nChange-Id: If2cb22d528d5e68c1e035a3e4291dae7fc32bb34\n"
    },
    {
      "commit": "08726fcf78a07498c7d7087586e341c73ff49819",
      "tree": "1b5e84fdbe98991c9326ea96a53091721600e4e9",
      "parents": [
        "890890a2fc0772004445f3ff1cb357e4ab3da2fc",
        "add8a4a9c3abd2c2b8d75b41bb99b7fb607e549a"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Wed Mar 06 19:19:39 2024 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 06 19:19:39 2024 +0000"
      },
      "message": "Merge \"MotionEvent: Get offsets in raw coordinate space\" into main"
    },
    {
      "commit": "add8a4a9c3abd2c2b8d75b41bb99b7fb607e549a",
      "tree": "727affec2e7716ec3cb2f6e0bba594f47f12e410",
      "parents": [
        "9180f87bfaac7d0f063d1f59fa572e4751899af6"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Tue Mar 05 22:18:09 2024 +0000"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Tue Mar 05 22:18:09 2024 +0000"
      },
      "message": "MotionEvent: Get offsets in raw coordinate space\n\nMotionEvents store the underlying axis values in the coordinate space of\nthe physical display, or \"untransformed\" space. The MotionEvent\u0027s\nmRawTransform takes those coordinates into the coordinate space of the\nlogical display, or \"raw\" coordinates. The MotionEvent\u0027s mTransform\ntakes those coordinates into the window/View\u0027s local coordinates.\n\nPreviously, getting the motion event offset would return the offset with\nrespect to the origin of the \"untransformed\" space. This is of little\nvalue to callers, since they are expecting the offset in \"raw\"\ncoordinates, which is the offset with respect to the logical display\u0027s\norigin.\n\nTo calculate the raw offset, we calculate where the raw point (0, 0)\nwould map to in untransformed coordinates by applying the inverse raw\ntransform, and then apply the window transform.\n\nBug: 249340921\nTest: atest libinput_tests\nTest: atest inputflinger_tests\nChange-Id: Iadbdde4dd45b5527b73be863b198b4c9a9e713cc\n"
    },
    {
      "commit": "bf9b0a854f2351e337fc7c7658cc03b75055276b",
      "tree": "07937d57e660c54d0ccf2dd2960d418f8d6f6c5e",
      "parents": [
        "9180f87bfaac7d0f063d1f59fa572e4751899af6"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Thu Feb 29 02:23:50 2024 +0000"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Tue Mar 05 04:23:01 2024 +0000"
      },
      "message": "Move MotionEvent#split implementation to native\n\nThere is already a native implementation of split in InputDispatcher.\nPrevent code duplication by moving the Java impl to native. The Java\nimpl is not correct, because it cannot access all values like the\ntransforms to initialize the split event with.\n\nBug: 326171104\nTest: atest libinput_tests\nTest: atest inputflinger_tests\nChange-Id: I6230b6aa0696dcfc275a5a14ab4af3d4b7bd0b45\n"
    },
    {
      "commit": "7438201514d9a11995dff49c6af3dd3045b08098",
      "tree": "bb794cecc2e6852dc5de1f3b8984b8fed9d9f035",
      "parents": [
        "77add0b0f163a11792da4e2f0e694ed34e87589f",
        "65a071a788a1f5e575d85460d08182d0726abc83"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Thu Feb 22 03:14:17 2024 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 22 03:14:17 2024 +0000"
      },
      "message": "Merge changes I2ab660ed,I308c12e2,I8c50a597,I14f77d61 into main\n\n* changes:\n  InputDispatcher_test: Verify all traced events match exactly\n  InputDispatcher_test: Consume all moves to prevent events from batching\n  InputDispatcher: Create new EventEntries for events with zero-ed coords\n  InputDispatcher: Improve pointer transform mapping in InputTarget\n"
    },
    {
      "commit": "65a071a788a1f5e575d85460d08182d0726abc83",
      "tree": "bbaa3064da0697e93e5ae40c4ecae8ad8a860902",
      "parents": [
        "9d5f9ce1b7ca608784f1eb4e40ef12a576123456"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Fri Jan 05 20:52:09 2024 +0000"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Tue Feb 20 23:02:01 2024 +0000"
      },
      "message": "InputDispatcher_test: Verify all traced events match exactly\n\nBug: 210460522\nTest: atest inputflinger_tests\nChange-Id: I2ab660ed0a6888c23bc711fb8494385c22b3c404\n"
    },
    {
      "commit": "65455c7f7ee20a68dffe6fdb569aecfa63c7d243",
      "tree": "aa5adb506a11a1e854a0492a7aaea3a32accb674",
      "parents": [
        "4497c862673b25ba675d52af23df18a45c5367b3"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Tue Feb 13 21:46:41 2024 +0000"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Tue Feb 13 22:02:32 2024 +0000"
      },
      "message": "InputDispatcher: Do not change focus when using transferTouch\n\nSince window focus requests are not fully synchronized between\nInputDispatcher and WM, there can be adverse impacts of rapid gesture\ntransfers on the focused window. This is because when transferring\ntouch, we synthesize a pointer DOWN, and if that event id directed to a\nnon-focused window, Dispatcher will notify the policy that\nonPointerDownOutsideFocus to get WM to change the focused window.\n\nWe want the concepts of touched windows and focused windows to be\northogonal. To support this, change the behavior of the transferTouch\nAPI to ensure that transfering touches don\u0027t result in changes in focus.\n\nBug: 324265767\nTest: atest inputflinger_tests\nChange-Id: I07607c6ac6c91a1a5ad4433b451aa8dfb23f42a7\n"
    },
    {
      "commit": "f5abab680574a7549d7f06b570794abca23d30cb",
      "tree": "add6b00f916da9e151758309b626d1bd23a292c6",
      "parents": [
        "59a530dcf4442de993f93c8d7559813dd6274fcb"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Thu Feb 01 20:51:32 2024 +0000"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Thu Feb 01 20:56:12 2024 +0000"
      },
      "message": "Print Motion/KeyEvent\u0027s eventId as a hex string\n\n...to make it more readable while debugging, since it\u0027s a 32-bit random\nnumber.\n\nBug: 210460522\nTest: None\nChange-Id: I223071a2d4c671c2cc91a49dd049c481ce4a2319\n"
    },
    {
      "commit": "1ff00ccedb48e83520d1376a86e3d72b50c05fd8",
      "tree": "d985a201da7fe8a6e24c8ec163f58795cbf5f2bc",
      "parents": [
        "96a1557c95545e5b466f1562ae77a63b299cf55d"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Wed Dec 13 16:12:13 2023 -0800"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Mon Dec 18 10:57:13 2023 -0800"
      },
      "message": "TouchedWindow: store tool type in addition to pointer id\n\nBefore this CL, we only stored the touching pointer id\u0027s inside\nTouchWindow. However, it is also necessary to know which of the touching\npointers are touch vs stylus. This would allow us in a later CL to\ndetermine whether the stylus is currently down anywhere on screen.\n\nIn this CL, instead of storing just the pointer ids, store\nPointerProperties in a vector. This includes the pointer id and the\ntooltype.\n\nThere should be no behaviour change in this CL.\n\nBug: 316225294\nTest: TEST\u003dinputflinger_tests; m $TEST \u0026\u0026 $ANDROID_HOST_OUT/nativetest64/$TEST/$TEST\nChange-Id: I7fb2bbd46e7da7e085679ee16da3a53773931875\n"
    },
    {
      "commit": "dcc6e6ede741905fa2ec2ff91722f85d3979276c",
      "tree": "45e98a56c399d5a4b9a6db619863f1ac61a9a7ea",
      "parents": [
        "59dd790de3a1d6f5b4dbc3b96eaff4bf888e8bea"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Wed Oct 18 09:20:07 2023 -0700"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Wed Oct 18 09:22:19 2023 -0700"
      },
      "message": "Change isStylusEvent behaviour\n\nThis function is now getting moved to Input.h.\n\nWe are also making its behaviour deterministic: if at least one pointer\nis stylus, then the event is a stylus event (unless the source wasn\u0027t\nset to \"stylus\").\n\nThis way, an event with 1 finger and 1 stylus pointers will have the\nsame consistent behaviour, regardless of the order that the pointers are\nstored inside the event.\n\nBug: 211379801\nTest: TEST\u003dinputflinger_tests; m $TEST \u0026\u0026 $ANDROID_HOST_OUT/nativetest64/$TEST/$TEST\nChange-Id: Ie164e32b7c0e9cf21b3819b01a03ac2885666191\n"
    },
    {
      "commit": "73e6d3788d4e904b927b1185cb7a299160a0268e",
      "tree": "a2a30a1217fda4d0cfb706a003d8beafad956b5c",
      "parents": [
        "7a039af79c5d04cd97385182ed93e59c794204c6"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Thu Jul 06 18:07:21 2023 -0700"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Fri Jul 07 16:08:34 2023 +0000"
      },
      "message": "Remove PointerProperties::copyFrom\n\nRemove copyFrom in favor of default-generated operator\u003d.\n\nBug: 271455682\nTest: m checkinput\nChange-Id: Ie00d027bcbf0a994e04e6b79a107c32077c3a3d8\n"
    },
    {
      "commit": "63b6361f3e23ab44c7e1adfe06ce9e11270d5100",
      "tree": "77f7eba10d46b433af628048fc5517affd5beafc",
      "parents": [
        "c2eb8505edd83a38f4f4ff0454ba958615ccda12"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Wed Apr 12 11:00:23 2023 -0700"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Thu Apr 13 08:42:08 2023 -0700"
      },
      "message": "Convert input event type to enum class\n\nThis will increase type safety and simplify some of the printing.\n\nBug: 274073185\nTest: m checkinput\nChange-Id: I848c2f156cc23232c50d2338b4788be3232dba1a\n"
    },
    {
      "commit": "6d73f83c0a0ba15a7488916a435d0b2985d4f2a0",
      "tree": "3af68b4ac5e85de49c765c334a3f9edc395182b7",
      "parents": [
        "fedaf918d50517fdff7ff7945ce032683c8e2b93"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Thu Jul 21 17:27:03 2022 -0700"
      },
      "committer": {
        "name": "Cherrypicker Worker",
        "email": "android-build-cherrypicker-worker@google.com",
        "time": "Tue Mar 28 13:25:59 2023 +0000"
      },
      "message": "Convert tool type to enum class\n\nFor better type safety, use enum class when sending tool type.\n\nBug: 198472780\nTest: atest libinput_tests inputflinger_tests\n(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:09a8fe42ba1d218c2f445e4fd5bc387e260ae067)\nMerged-In: I371f08087b9513b6f75966c124de77bc12f8324e\nChange-Id: I371f08087b9513b6f75966c124de77bc12f8324e\n"
    },
    {
      "commit": "00e029d8cfd1e5487d8c8997ec852ffd54252a57",
      "tree": "e8b10f40dd1400a8e166c00dc65d436f890bbae4",
      "parents": [
        "2c1f96e0d825463dc1e420982d31d77bd442d9e7"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Thu Mar 09 20:11:09 2023 +0000"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Fri Mar 10 20:53:39 2023 +0000"
      },
      "message": "MotionEvent: Round coordinates to a precision of 0.001\n\nWhen tests inject input events at a location on the screen, the\ndispatched event is expected to have the same coordinates. However, on\nscaled devices, this may not always be the case due to precision losses\nincurred through floating point arithmetics. For example, it was\npossible for an injected event with a coordinate of 1.0 to end up with\na value of 0.9997.\n\nTo combat this issue, we will round transformed axis values that are\nleaving a MotionEvent to a precision of 0.001. After this CL, even if\nthe injection process results in precision losses, they should be\novercome by rounding, assuming injection does not require greater\nprecision.\n\nThis will solve the issue where input injected to an inclusive edge of\nthe View bounds was not getting dispatched to the View due to precision\nlosses.\n\nBug: 264978231\nBug: 260965930\nTest: atest libinput_tests\nTest: atest inputflinger_tests\nTest: atest HoverTest (with screen size override)\nChange-Id: I81062597058361a1218e6873d34b9b0d2fbfad96\n"
    },
    {
      "commit": "5df3493d3cf633f8ac7447bc5474a0dfbc1a8359",
      "tree": "f7831ace6032ff030e3e83df5e17a8c503f454e0",
      "parents": [
        "0026b4cfc864e6cbd32ef911235e39b31de54aba"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Mon Jan 23 12:41:01 2023 -0800"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Tue Jan 24 04:52:17 2023 -0800"
      },
      "message": "Validate axes and led labels correctly\n\nBefore this CL, a number of checks for kl file validity were incorrect.\nSome of the APIs were supposed to return an invalid value, but instead\nwere always returning a valid value, no matter what the input was.\n\nCorrect these values by switching to std::optional.\n\nBug: 266400536\nTest: m libinput_tests \u0026\u0026 adb sync data \u0026\u0026 adb shell -t /data/nativetest64/libinput_tests/libinput_tests\nChange-Id: I4ef45f3249dca4f4f033fb85e9fecbc2ad1f1395\n"
    },
    {
      "commit": "d010b014dc42f55b5973c8329ab10dd69da92c77",
      "tree": "676cbbe4ba5593664d62183d80a9f765c990734c",
      "parents": [
        "d5095e769c6c4eaf2a5888a5828f272669a6e0a4"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Wed Jan 18 15:00:53 2023 -0800"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Mon Jan 23 03:47:29 2023 -0800"
      },
      "message": "Improve debug prints in InputDispatcher\n\nIt\u0027s useful sometimes to print out the events produced by the\ndispatcher. In this CL:\n- Switch (partially) to the C++-style prints from android-base\n- Add a way to print keyevents, motionevent into a stream\n- Add InputEventInjectionResult print\n\nAlso, improve the debug prints for outgoing events. When an entry is\ngetting dispatched, the dispatcher may modify its action, among other\nvariables. With this CL, this will be observable in the logs.\n\nBug: 211379801\nTest: atest AccessibilityEndToEndTest\nChange-Id: I221161af7903ae4da77733265c67a426a3e5b557\n"
    },
    {
      "commit": "b346e3ff84b1d89d31a6a3078507eeb782622f54",
      "tree": "1557ee201a0f0118fb9833ccaebaa944649c58d9",
      "parents": [
        "ee906aab67bdaa88aa9a5a2ef4fac8a406cd1a03",
        "b1e8355b5967159230b80b207396230c671f6280"
      ],
      "author": {
        "name": "Harry Cutts",
        "email": "hcutts@google.com",
        "time": "Fri Jan 13 13:36:31 2023 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 13 13:36:31 2023 +0000"
      },
      "message": "Merge \"Report pinch gestures\""
    },
    {
      "commit": "584afe21ecd44cf4d8a2118245a236d4ab9252df",
      "tree": "18fd729625ff55f92a696c33760b364b1ff2c2fa",
      "parents": [
        "c1e7628f3cc87ec21f55d38ea0c4de3652b8cece",
        "afb312889849d435e59f8e1014e1385ac419c4ea"
      ],
      "author": {
        "name": "Philip Quinn",
        "email": "pquinn@google.com",
        "time": "Tue Jan 10 01:16:22 2023 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 10 01:16:22 2023 +0000"
      },
      "message": "Merge \"Add isResampled field to PointerCoords.\""
    },
    {
      "commit": "b1e8355b5967159230b80b207396230c671f6280",
      "tree": "1e2b1e2588aadcad833972ecce1acfb9e27c099b",
      "parents": [
        "ef400b26ab180b0dd7a7cf8f306d2ac72fcfe40a"
      ],
      "author": {
        "name": "Harry Cutts",
        "email": "hcutts@google.com",
        "time": "Tue Dec 20 11:02:26 2022 +0000"
      },
      "committer": {
        "name": "Harry Cutts",
        "email": "hcutts@google.com",
        "time": "Mon Jan 09 15:03:30 2023 +0000"
      },
      "message": "Report pinch gestures\n\nBug: 251196347\nTest: check events received by a custom tester app, and touches shown by\n      pointer location overlay\nTest: atest inputflinger_tests\nChange-Id: I249ca6208091e3c4291c5be68c77339bf5f69a5b\n"
    },
    {
      "commit": "afb312889849d435e59f8e1014e1385ac419c4ea",
      "tree": "920730b1ad0334324ab1e1459bbe9cc45c0578f5",
      "parents": [
        "015ae27a731030bd87b8274fe64ac45eceb7d7f7"
      ],
      "author": {
        "name": "Philip Quinn",
        "email": "pquinn@google.com",
        "time": "Tue Dec 20 18:17:55 2022 -0800"
      },
      "committer": {
        "name": "Philip Quinn",
        "email": "pquinn@google.com",
        "time": "Thu Jan 05 18:08:33 2023 -0800"
      },
      "message": "Add isResampled field to PointerCoords.\n\nThis field is set if a pointer\u0027s coordinate data were generated by\ninput resampling and did not originate from the input device.\n\nBug: 167946721\nTest: atest libinput_tests\nChange-Id: I30d9aee85d462e6536fa33be5242365b52a11a6c\n"
    },
    {
      "commit": "c5748d198b4ee9819ba35bf4c5c4eecf817fee7a",
      "tree": "ba8110a38ecfa218445a017f3d6faf9f7a28e3f1",
      "parents": [
        "edf6ce710115b8871a8def72edbdfd6c0b15569e"
      ],
      "author": {
        "name": "Harry Cutts",
        "email": "hcutts@google.com",
        "time": "Fri Dec 02 17:30:18 2022 +0000"
      },
      "committer": {
        "name": "Harry Cutts",
        "email": "hcutts@google.com",
        "time": "Wed Jan 04 19:55:31 2023 +0000"
      },
      "message": "Report three- and four-finger swipes\n\nThe dispatcher still needs to be modified to only dispatch these to\nSysUI windows.\n\nBug: 251196347\nTest: check events received by a custom tester app, and touches shown by\n      pointer location overlay\nTest: atest inputflinger_tests\nChange-Id: I3a7211d4a67e6388231bef158d3748c2e72e128d\n"
    },
    {
      "commit": "e2e10b4a0143b4a90be2d6a52b8cc2757d18d4bf",
      "tree": "2979f4f4d12b14bf35f6c4b51201a315abf86445",
      "parents": [
        "675f25abd9341963827033a5cc4b7786a800a11d"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Thu Nov 17 20:59:36 2022 +0000"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Fri Dec 16 23:46:12 2022 +0000"
      },
      "message": "TouchInputMapper: Use ui::Transform to calculate orientation angles\n\nRather than manually re-orienting the calculated angles for orientation\nand tilt, we use the transform to compute the oriented values for these\nnon-planar axes. This approach is both less error-prone and less verbose.\n\nIn this CL, we also transform the coverage rect from raw to display\nspace using the computed transform.\n\nBug: 236798672\nTest: atest inputflinger_tests\nChange-Id: Ibfb6d2ab43e6fd7a63736ee7d9610c42be44affd\n"
    },
    {
      "commit": "635422be3e0e02b7221633b2eb1b112fc18bb65e",
      "tree": "35f14ed0d38563b8777c539863bb6bb4791b3393",
      "parents": [
        "a9cf419caeebb019a6ca39fd43aab69f0956ae85"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Fri Dec 02 00:43:56 2022 +0000"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Fri Dec 02 13:54:45 2022 +0000"
      },
      "message": "Convert MotionEvent#getSurfaceRotation to ui::Rotation\n\nBecause it might have an invalid rotation it needs to return\nstd::optional\u003cui::Rotation\u003e, but at least we\u0027re using the types\neffectively here.\n\nTest: compiles\nChange-Id: I27076edcc6ce33594552863caa8ee643027a81e7\n"
    },
    {
      "commit": "a9cf419caeebb019a6ca39fd43aab69f0956ae85",
      "tree": "e7a9fad8e46b1ea27641344faaebd7ef2c96056d",
      "parents": [
        "5956e69ecea469b9d51cd42a0d03852ca2236411"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Thu Dec 01 23:46:39 2022 +0000"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Fri Dec 02 13:54:39 2022 +0000"
      },
      "message": "Convert orientation values in input to ui::Rotation.\n\nui::Rotation both provides better typesafety as well as some convenience\nfunctions (e.g. operator+, operator-).\n\nTest: atest TouchVideoFrame_test.cpp InputReader_test.cpp\nChange-Id: Ib423457c742ed3d41f2e3fc269ddf86809cbf247\n"
    },
    {
      "commit": "e562696c7658102f63558be034a2fb7ab158840f",
      "tree": "18ab2137cd4a640b68814d90f11b066f5c53a4db",
      "parents": [
        "3f7545f4e6b09f652bb80807e177e381cf39ad9f"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Thu Oct 27 20:30:53 2022 +0000"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Wed Nov 16 15:28:08 2022 +0000"
      },
      "message": "Input: Add isStylusToolType() utility function\n\nUsing this utility function will ensure we don\u0027t forget to check for\nboth TOOL_TYPE_STYLUS and TOOL_TYPE_ERASER when we are looking to\nidentify a stylus.\n\nThis will cause a behavior change in UnwantedInteractionBlocker, where\nTOOL_TYPE_ERASER was not previously considered a stylus tool.\n\nBug: None\nTest: atest inputflinger_tests\nChange-Id: I3dae9b5037d7ac08a5672c6e4d6e3b62ee2bd352\n"
    },
    {
      "commit": "ae4d05384bebad96510969e859dc2af1bd6b81c4",
      "tree": "3d24bdf9c9dfc59be9f0ebb49b33a5bc8e193346",
      "parents": [
        "15c01e27967cbf5df7dd0c6adb3059063c4d05be"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Mon Oct 31 17:50:04 2022 +0000"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Mon Oct 31 21:55:37 2022 +0000"
      },
      "message": "Use std::array and default copy assignment for PointerCoords\n\nBug: 245989146\nTest: atest inputflinger_tests\nChange-Id: I5e008d03184204a2f34f369e2d5958f6cd4de952\n"
    },
    {
      "commit": "63740b961ea0aceb7153c374f9761c44506e6b1a",
      "tree": "5f37425ce1fe690ceeff916c4b55156246419569",
      "parents": [
        "6eafa9dd67010f05288c6e40881939f4cf01dcd5"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Thu Oct 20 10:28:08 2022 -0700"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Tue Oct 25 10:46:01 2022 -0700"
      },
      "message": "Use getrandom for device input event ID generation\n\nOn device, let\u0027s go back to using \u0027getrandom\u0027 for the generation of\nrandom input event ids. This should be faster than reading from\n/dev/urandom.\n\nThis is a partial revert of the previous patch. After this patch, we\nwill only use \u0027/dev/urandom\u0027 on host.\n\nWe may be able to switch to \u0027getrandom\u0027 for both if we ever switch to\nmusl for host. We can revisit it then.\n\nBug: 254215895\nTest: m \u0026\u0026  atest --host libinput_tests\nChange-Id: Idc6241facbd93f3f71ae90567db831d96a5fc98b\n"
    },
    {
      "commit": "31977184520e99110e1deadceb6197636f76450a",
      "tree": "647bdda2d1f182ae7ee7e7fb8390e168d77a8ece",
      "parents": [
        "c08105877d67f18d6592ffacaf2402f0d07953b4"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Fri Sep 30 08:51:23 2022 -0700"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Fri Oct 14 16:47:36 2022 -0700"
      },
      "message": "Run some inputflinger_tests on host\n\nSometimes, it\u0027s convenient to execute the input tests without having a\nconnected device. This is especially useful when doing cherry-picks of\npatch on a cloud device.\n\nAllow input code to build for host, and enable the tests for running on\nhost.\n\nBug: 249591924\nTest: atest --host --no-bazel-mode -c -m inputflinger_tests\nChange-Id: Ib9be6a5fb6c35ffc450e41cb2a5688bfb2c8d01a\n"
    },
    {
      "commit": "2800fb0c6b56711c6daf70491270dbea89fbf660",
      "tree": "4005bd4ceb50ddc62585e94e87df907ff56f48e1",
      "parents": [
        "9425077b65c67bea06e87ea06d6f16d7eb8ff845"
      ],
      "author": {
        "name": "Harry Cutts",
        "email": "hcutts@google.com",
        "time": "Thu Sep 15 13:49:23 2022 +0000"
      },
      "committer": {
        "name": "Harry Cutts",
        "email": "hcutts@google.com",
        "time": "Fri Sep 23 13:38:02 2022 +0000"
      },
      "message": "Use TWO_FINGER_SWIPE classification for touchpad scroll events\n\nThis allows apps to distinguish the fake finger created for touchpad\nscrolling from an actual finger.\n\nBug: 246758376\nTest: add classification to InputDispatcher\u0027s outbound event logs and\n      check the new value is used when scrolling\nChange-Id: Ia90f9984e75ad6fde2d0e42628ab42eab371b7a5\n"
    },
    {
      "commit": "0ee750f32bcd50dd1ab8dd449f5c5e4f75c473d1",
      "tree": "68d994321276f8df3828ab92a086de71b963d249",
      "parents": [
        "6195dbca2db7171cf97e966b05b311f32f8fe167",
        "ead9ee63705f06a17db7239edf4c069822201308"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Tue Sep 13 20:44:58 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Sep 13 20:44:58 2022 +0000"
      },
      "message": "Merge \"Toast: Fix MotionEvent has too many PointerCoords\" am: 583954b00a am: a826c8f3b7 am: 9877bcfdbc am: ead9ee6370\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/native/+/2200465\n\nChange-Id: I9c7cfe72d362dc5c0f92231de70901e5acdb5739\nSigned-off-by: Automerger Merge Worker \u003candroid-build-automerger-merge-worker@system.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "aa5a51a47e474749c33ad81132ba54e19357e92a",
      "tree": "d831bed2200699abbb719d420d6d4771a4da05e6",
      "parents": [
        "e812abddc0472c3a3d06ec4b705c44a9cf8c85c1"
      ],
      "author": {
        "name": "hupeng3",
        "email": "hp121520@gmail.com",
        "time": "Fri Sep 02 16:00:18 2022 +0800"
      },
      "committer": {
        "name": "Hu Peng",
        "email": "hp121520@gmail.com",
        "time": "Tue Sep 13 01:18:57 2022 +0000"
      },
      "message": "Toast: Fix MotionEvent has too many PointerCoords\n\nIf the MotionEvent has too many PointerCoords,\nit will lead to an infinite loop and cannot complete the operator\u003c\u003c.\n\nBug:244248855\nTest: printed MotionEvent in log to see the formatting\n\nSigned-off-by: hupeng3 \u003chp121520@gmail.com\u003e\nChange-Id: Id4a01152bc4103976d3f60e69eb375e3d32669a0\n"
    },
    {
      "commit": "d5fe5185d8b4d1ae017e2a27f8d14c459b880619",
      "tree": "4ca7a7f3f85c1641bbcac33c61fff40187cd8f89",
      "parents": [
        "229a880486fd617f31cf6c29f2575a895ca2eb8b"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Wed Jul 20 23:28:40 2022 +0000"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Fri Jul 29 20:49:51 2022 +0000"
      },
      "message": "Dynamic logs for motions in UnwantedInteractionBlocker\n\nCurrently, we have no way to debug the palm rejection operation in real\ntime. On some devices, we are observing touches rejected unreasonably.\n\nFor improved debugging, provide a way to turn on the logs at runtime.\n\nSample logs:\n07-29 20:50:51.938 21364 21461 D UnwantedInteractionBlocker: notifyMotion: NotifyMotionArgs(id\u003d437279320, eventTime\u003d681206765436000, deviceId\u003d4, source\u003dTOUCHSCREEN, action\u003dMOVE, pointerCount\u003d2 pointers\u003d{0: id\u003d0 x\u003d1998.0 y\u003d732.0 pressure\u003d1.0 major\u003d78.0 minor\u003d78.0 orientation\u003d1.6}, {1: id\u003d1 x\u003d1651.0 y\u003d705.0 pressure\u003d0.5 major\u003d14.0 minor\u003d14.0 orientation\u003d1.6}, flags\u003d0x00000000)\n07-29 20:50:51.939 21364 21461 D UnwantedInteractionBlocker: Filter: touches \u003d 0 : InProgressTouchEvdev(x\u003d1998, y\u003d732, tracking_id\u003d0, slot\u003d0, pressure\u003d0.996094, major\u003d78, minor\u003d78, tool_type\u003d0, altered\u003d1, was_touching\u003d1, touching\u003d1)\n07-29 20:50:51.939 21364 21461 D UnwantedInteractionBlocker: 1 : InProgressTouchEvdev(x\u003d1651, y\u003d705, tracking_id\u003d1, slot\u003d1, pressure\u003d0.546875, major\u003d14, minor\u003d14, tool_type\u003d0, altered\u003d1, was_touching\u003d1, touching\u003d1)\n07-29 20:50:51.939 21364 21461 D UnwantedInteractionBlocker: Response: slotsToHold \u003d 00000000000000000000, slotsToSuppress \u003d 00000000000000000011\n07-29 20:50:51.939 21364 21461 I UnwantedInteractionBlocker: Palm detected, removing pointer ids {0, 1} after 656ms from NotifyMotionArgs(id\u003d437279320, eventTime\u003d681206765436000, deviceId\u003d4, source\u003dTOUCHSCREEN, action\u003dMOVE, pointerCount\u003d2 pointers\u003d{0: id\u003d0 x\u003d1998.0 y\u003d732.0 pressure\u003d1.0 major\u003d78.0 minor\u003d78.0 orientation\u003d1.6}, {1: id\u003d1 x\u003d1651.0 y\u003d705.0 pressure\u003d0.5 major\u003d14.0 minor\u003d14.0 orientation\u003d1.6}, flags\u003d0x00000000)\n07-29 20:50:51.939 21364 21461 D UnwantedInteractionBlocker: enqueueOutboundMotionLocked: NotifyMotionArgs(id\u003d437279320, eventTime\u003d681206765436000, deviceId\u003d4, source\u003dTOUCHSCREEN, action\u003dCANCEL, pointerCount\u003d1 pointers\u003d{0: id\u003d1 x\u003d1651.0 y\u003d705.0 pressure\u003d0.5 major\u003d14.0 minor\u003d14.0 orientation\u003d1.6}, flags\u003d0x00000020)\n07-29 20:50:51.947 21364 21461 D UnwantedInteractionBlocker: notifyMotion: NotifyMotionArgs(id\u003d1057496278, eventTime\u003d681206774728000, deviceId\u003d4, source\u003dTOUCHSCREEN, action\u003dMOVE, pointerCount\u003d2 pointers\u003d{0: id\u003d0 x\u003d1996.0 y\u003d732.0 pressure\u003d1.0 major\u003d78.0 minor\u003d78.0 orientation\u003d1.6}, {1: id\u003d1 x\u003d1651.0 y\u003d705.0 pressure\u003d0.5 major\u003d14.0 minor\u003d14.0 orientation\u003d1.6}, flags\u003d0x00000000)\n07-29 20:50:51.947 21364 21461 D UnwantedInteractionBlocker: Filter: touches \u003d 0 : InProgressTouchEvdev(x\u003d1996, y\u003d732, tracking_id\u003d0, slot\u003d0, pressure\u003d0.996094, major\u003d78, minor\u003d78, tool_type\u003d0, altered\u003d1, was_touching\u003d1, touching\u003d1)\n07-29 20:50:51.947 21364 21461 D UnwantedInteractionBlocker: 1 : InProgressTouchEvdev(x\u003d1651, y\u003d705, tracking_id\u003d1, slot\u003d1, pressure\u003d0.542969, major\u003d14, minor\u003d14, tool_type\u003d0, altered\u003d1, was_touching\u003d1, touching\u003d1)\n07-29 20:50:51.948 21364 21461 D UnwantedInteractionBlocker: Response: slotsToHold \u003d 00000000000000000000, slotsToSuppress \u003d 00000000000000000011\n\nBug: 239463037\nBug: 198472780\nTest: looked at the logs with palm rejection enabled\nChange-Id: I10e54bd0c4ca26fd6197b3ff0069f9799ea91ccf\n"
    },
    {
      "commit": "258e2b909a91e893bf8cdd5b46ac7a9446de2549",
      "tree": "f76d8c5192a6f59b2818019f4138c7f26c71c749",
      "parents": [
        "c74de9f2ba14476ab8838acf18167d5b910aab7d"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Fri Jun 24 18:37:04 2022 +0000"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Tue Jun 28 21:22:39 2022 +0000"
      },
      "message": "Do not transform values from a SOURCE_MOUSE_RELATIVE device\n\nIn Pointer Capture mode, we want the API to report events directly\nas they are coming from the kernel without any transformations.\nWe already do this for SORUCE_TOUCHPAD. Here, we update the handling\nof SOURCE_MOUSE_RELATIVE so that when Pointer Capture is enabled,\nmouse events are not effected by the display or window state.\n\nBug: 233184154\nTest: Apply non-standard scaling to a device using\n\"adb shell wm size\" and run: atest MicrosoftSculpttouchTest\nTest: atest libinput_tests\nTest: atest inputflinger_tests\n\nChange-Id: Ia6ef5a21312da949ac2704e9bfe4638626d3a894\n(cherry picked from commit 208360bba3cae0953026dcf62809ddd3bc49ec9b)\n"
    },
    {
      "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": "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": "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": "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": "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": "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": "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": "9eb02c0ae27754f7230b4cfbd1d34bd837223c6f",
      "tree": "c7272de503ef42ea092a5b2f7bc082a9b0d41e74",
      "parents": [
        "d2b0267be035d42df75f0bf2e9bd653d8b5619ff"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Tue Oct 19 14:02:20 2021 -0700"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Tue Oct 26 09:44:14 2021 -0700"
      },
      "message": "MotionEvent: Report transformed orientation values\n\nPreviously, the AXIS_ORIENTATION value reported by MotionEvent was\nunaffected by the window transform. This meant that whatever value that\nwas generated by InputReader was the value reported to the window. This\nmeant that if the window was rotated or scaled respective to the logical\ndisplay and the window received an event, it could be the case that the\n0 value no longer corresponds with the \"up\" direction of the window.\n\nNow that the input pipeline works in the display panel\u0027s coordinate\nsystem, we need the orientation value reported by MotionEvent to be\naffected by the window transform.\n\nThis CL also refactors the shared logic by which transformed axis values\nare calculated into a common function.\n\nBug: 179274888\nTest: atest libinput_tests\nTest: atest inputflinger_tests\nTest: manual with test app and stylus\nChange-Id: Ibb6f135de47f7c1cbde3c023931a760dfbe08e45\n"
    },
    {
      "commit": "d2b0267be035d42df75f0bf2e9bd653d8b5619ff",
      "tree": "9ae1df6921431047cd292e4d2f89b458a598d93a",
      "parents": [
        "f367330f19ba02797ed82382ab10a5cd51e7db97"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Tue Oct 19 11:24:45 2021 -0700"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Tue Oct 26 05:29:31 2021 -0700"
      },
      "message": "MotionEvent: Avoid clipping tranformed orientation angle values\n\nA recent refactor (ag/14556109) exposed an issue in the existing\norientation angle transformation logic where the output was clipped\nincorrectly. There is no need to clip the ouput of atan2f because its\noutput is in the range [-pi, pi], which conforms to the MotionEvent\u0027s\norientation API.\n\nTest: manual with stylus and test app\nBug: 202534592\nChange-Id: I55df7470049922d0f579c2c1921dcacd0757ece1\n"
    },
    {
      "commit": "08dec6cfd6dcc25cd2452e62b4b0a57fb9de60ce",
      "tree": "523a54ca8dcf5a6628ac1f032eda241b3c116c32",
      "parents": [
        "aa561d166f41be8c7ced8f429c3c9a4cd2831ff0",
        "eb4a30c49f7f63296515c83b1f7999b6c7feb100"
      ],
      "author": {
        "name": "Antonio Kantek",
        "email": "kanant@google.com",
        "time": "Mon Oct 04 20:41:31 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Oct 04 20:41:31 2021 +0000"
      },
      "message": "Merge \"TouchMode (4.2/n) Enhancing recycle to support touch mode event\""
    },
    {
      "commit": "b5cb957254201f19a434898c249d59752e2a88b7",
      "tree": "1448609838a4c522f11ee3454eb227d2f83dee9e",
      "parents": [
        "c2872295a47436c5507c38ddac0393b76d5471d1"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Fri Sep 24 06:35:16 2021 -0700"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Mon Oct 04 04:00:44 2021 -0700"
      },
      "message": "VerifiedMotionEvent: Sign transformed raw values\n\nThe values for axes X/Y that are stored in MotionEvent are\ntransformed to values used for its getRaw API based on the source.\nThis is because non-pointer sources should not have translation applied\nto them.\n\nWe need to ensure that we use the same raw coordinates when we sign a\nVerifiedMotionEvent in InputDispatcher that we would get with the\nMotionEvent#getRaw API. To do this, we re-use the same logic used to\ntransform the raw coordinates in MotionEvent in InputDispatcher.\n\nBug: 179274888\nTest: atest inputflinger_tests\nTest: atest VerifyInputEventTest\nChange-Id: I552f94064f15573ddda8f7c0b588cd3b984b6a94\n"
    },
    {
      "commit": "eb4a30c49f7f63296515c83b1f7999b6c7feb100",
      "tree": "dc27be7bc1a60cbdaf4d54b05eb2108307f400e6",
      "parents": [
        "4803725c73a873ed80b8bc9fa74c389bea3eca9f"
      ],
      "author": {
        "name": "Antonio Kantek",
        "email": "kanant@google.com",
        "time": "Tue Sep 28 17:49:49 2021 -0700"
      },
      "committer": {
        "name": "Antonio Kantek",
        "email": "kanant@google.com",
        "time": "Wed Sep 29 19:20:33 2021 -0700"
      },
      "message": "TouchMode (4.2/n) Enhancing recycle to support touch mode event\n\nBug: 193718270\nTest: atest inputflinger_tests\nChange-Id: If165f0f7f9c379647d3091216fa2e908dd4ea51f\n"
    },
    {
      "commit": "81420cc49e1150c6fd64d3d8b595bd51fac8c15f",
      "tree": "4e4bc7cccb023ce7f748e24b3f3f562abc7a8d4c",
      "parents": [
        "5632d62f5bb790293d4fe2b44dcd0ebd5d20e7ca"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Mon Sep 06 10:28:50 2021 -0700"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Tue Sep 21 10:44:28 2021 -0700"
      },
      "message": "InputDispatcherPolicy: Transform incoming/outgoing events\n\nThe InputDispatcherPolicy expects events to be in the logical display\nspace. When per-window-input-rotation is enabled, the dispatcher works\nin the display space, so we need to transform events accordingly.\n\n1. MotionEvents that are injected from the policy are in logical display\ncoordinates. We need to transform them to display space before\nproceeding with injection.\n\n2. When sending events to the policy to be filtered by the InputFilter,\nwe need to include the display transform so that the events are in the\nlogical display space.\n\nThis also removes the flag gurad for the per-window-input-rotation\nfeature in Input.cpp, which is required for the tests to pass when the\nflag is disabled. This guard does not do anything anymore because the\nRawTransforms are blocked by the flag in SF.\n\nBug: 179274888\nTest: manual: adb shell input swipe 200 200 500 500 1000\nTest: atest InputShellCommandTest // CTS test for input injeciton\nTest: atest inputflinger_tests\nChange-Id: I122e511039ca629ab8982ed27d3d35f9e7b37d70\n"
    },
    {
      "commit": "b9b18509a6d0f5f074e86802b322a4fb01b43cd5",
      "tree": "879df11308da01c95b782935957cce8dcc718c6c",
      "parents": [
        "df41c269a359e35690f8dfd234f45fd05627db29"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Thu Aug 26 12:30:32 2021 -0700"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Fri Sep 17 04:58:55 2021 -0700"
      },
      "message": "Add display transform to MotionEvent for raw coords\n\nSince input now works in display coordinates, we need to include the\ndisplay projection with MotionEvent so that the getRaw API can continue\nto report logical display coordinates.\n\nIt is also important to highlight the difference in the coordinate\nsystems used by regular input windows and input monitors. MotionEvents\ncoming from input monitors will always report values in unrotated\nlogical display coordinates, because we do not yet have an API to report\nunrotated values in MotionEvents.\n\nBug: 179274888\nTest: presubmit\nTest: manual, ensure input works\nChange-Id: Ief3b2b31c6644beaa2f8c4b90302f441f93ab960\n"
    },
    {
      "commit": "ca20550407a1707c48f4c3a839ef55725962f19c",
      "tree": "3597c062045acb52c317fc15e828c95f1c4ea30e",
      "parents": [
        "2dcfdc1b5d30dcbb362ce18c6e7d862125e2cb25"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Fri Jul 16 21:31:58 2021 +0000"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Tue Sep 14 18:20:39 2021 -0700"
      },
      "message": "Cancel wallpaper touch stream when foreground window is gone\n\nWhen the foreground window is gone, we should also cancel the touch\nstream for its wallpaper window. We already cancel touch for the window\nitself, and for global monitor.\n\nWithout this patch, the wallpaper window simply stops receiving touches,\nand never gets CANCEL, either.\n\nThe behaviour is slightly strange for the global monitor in this case.\nFirst of all, the global monitor receives CANCEL, which is questionable\n(things like pointer location stop working). Also, it only gets cancel\nwhen a *new* event comes in.\n\nThat said, it\u0027s probably fine, so let\u0027s just document this behaviour by\nadding a test for it.\n\nBug: 192981537\nTest: atest inputflinger_tests\nChange-Id: I8a2ef7cd552acc5cf64b2e13a6df5d5988bd1808\n"
    },
    {
      "commit": "e5eef8fe6a45db8a484d74f5fccdb92dcdec8b68",
      "tree": "61907380ee98706aea31dbcece1ddb5dac21e2b5",
      "parents": [
        "d7ae69a195c29ac2ca1303430011eb499349444b",
        "d1d30934f4c83c6d544c47d7d153730c9c1ff696"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Aug 27 21:14:00 2021 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri Aug 27 21:14:00 2021 +0000"
      },
      "message": "Merge \"Revert^3 \"Enable input window rotation flag\"\" into sc-v2-dev am: 3590b6c8a2 am: d1d30934f4\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/15694000\n\nChange-Id: Idc8ba00c02d9ca2d18ef5d229f10b559080d245b\n"
    },
    {
      "commit": "7719c7d2437171385cd692338748af583b824565",
      "tree": "e04615ec11b999bd9ad6f50a286f11af5e625dca",
      "parents": [
        "0743a594c240c8aae4ec6d925d04f53876ccd96a"
      ],
      "author": {
        "name": "Vadim Tryshev",
        "email": "vadimt@google.com",
        "time": "Fri Aug 27 17:28:43 2021 +0000"
      },
      "committer": {
        "name": "Vadim Tryshev",
        "email": "vadimt@google.com",
        "time": "Fri Aug 27 20:45:57 2021 +0000"
      },
      "message": "Revert^3 \"Enable input window rotation flag\"\n\n0743a594c240c8aae4ec6d925d04f53876ccd96a\n\nReason for revert: b/197866364\nBug: 197866364\n\nChange-Id: I2f10f1b05168a353115067a397798896950dc75f\n"
    },
    {
      "commit": "a15300436a4f908d7d3ff9502561e781a081e05a",
      "tree": "a0cd55825814c3f0f16ced7976afba831ea3899c",
      "parents": [
        "3a7e84419c4919b003cdba9e9183226240938796",
        "239e1dd18b6de66ab2b7237c44f7c3b29f8e20b1"
      ],
      "author": {
        "name": "Android Build Prod User",
        "email": "android-build-prod@system.gserviceaccount.com",
        "time": "Wed Aug 25 20:35:55 2021 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Aug 25 20:35:55 2021 +0000"
      },
      "message": "Merge \"Revert^2 \"Enable input window rotation flag\"\" into sc-v2-dev am: f459a9f290 am: 239e1dd18b\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/15624996\n\nChange-Id: I8f7ae55c0d92e802a8cdccce7ee9273fb7ac53f9\n"
    },
    {
      "commit": "0743a594c240c8aae4ec6d925d04f53876ccd96a",
      "tree": "d84e0e3837f68764874deb9e02f2077d0c45b0fb",
      "parents": [
        "f334812daa74bb651590334f60229262dad11b81"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Thu Aug 19 13:19:19 2021 +0000"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Thu Aug 19 07:56:06 2021 -0700"
      },
      "message": "Revert^2 \"Enable input window rotation flag\"\n\nReland the per-window-input-rotation flag. It was reverted because it\nbroke touch on foldables. The issue is now fix, so attempt to reland\nthis.\n\n477c52ff408e7918f42e6acf23d9b54daec9d51d\n\nBug: 179274888\nTest: presubmit\nTest: manual using foldable\n\nChange-Id: I407112b9106cd12b3bfb602a39d4c0898cfd4c0d\n"
    },
    {
      "commit": "196cc3fd10f16ec0eabc0c32e1191336bdca47d8",
      "tree": "e4e1786e71d438d3d7da4d57113adf89955642c1",
      "parents": [
        "a5935a793c58794c3df624969b95663081f07ca0",
        "e1b77ba992de66e219d9cb643679b793320bd64a"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Thu Aug 05 13:41:01 2021 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Aug 05 13:41:01 2021 +0000"
      },
      "message": "Merge \"Revert \"Enable input window rotation flag\"\" into sc-v2-dev am: b998d92793 am: e1b77ba992\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/15468612\n\nChange-Id: I1d7e2e7a94258e6a5c032b5f9e96472c9d425ec5\n"
    },
    {
      "commit": "477c52ff408e7918f42e6acf23d9b54daec9d51d",
      "tree": "2d033bba4455403d57419dc8de69fef69c9a79a8",
      "parents": [
        "2919858e097178a240e0736399dfef8f18bdc31e"
      ],
      "author": {
        "name": "Arthur Hung",
        "email": "arthurhung@google.com",
        "time": "Thu Aug 05 08:29:32 2021 +0000"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Thu Aug 05 13:07:33 2021 +0000"
      },
      "message": "Revert \"Enable input window rotation flag\"\n\nThis reverts commit 2919858e097178a240e0736399dfef8f18bdc31e.\n\nReason for revert: This is causing touches on foldable/large screen devices to be registered in the incorrect orientation. b/195617582\n\nBug: 195617582\nChange-Id: I3659d8b19990eb85caa327ccab98f07692ac1f01\n"
    },
    {
      "commit": "60d495d18a7f7e0b046243e7a8705603ae9fa3fa",
      "tree": "deb693d0e20530c6ee58d230aaa5106e576c1f55",
      "parents": [
        "fb2a75f83ff72dc2b668fbbf4958d6a52ab659a0",
        "1d83f2092e17ea53f945d3c5ab64f63729bcf734"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Wed Aug 04 14:19:00 2021 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Aug 04 14:19:00 2021 +0000"
      },
      "message": "Merge changes from topic \"cherrypick-enable_input_rot_flag-ev5656cryw\" into sc-v2-dev am: 061db8082b am: 1d83f2092e\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/14669175\n\nChange-Id: I813e328494613d4a1748437b73a561204b208ba2\n"
    },
    {
      "commit": "2919858e097178a240e0736399dfef8f18bdc31e",
      "tree": "83f87f2b7923ee89914b42b792665ec2f1acffbb",
      "parents": [
        "c14266fd4e63859c25991266e4447e6e11e711d2"
      ],
      "author": {
        "name": "Evan Rosky",
        "email": "erosky@google.com",
        "time": "Tue May 11 10:39:55 2021 -0700"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Thu Jul 29 14:01:31 2021 +0000"
      },
      "message": "Enable input window rotation flag\n\nBug: 179274888\nTest: no-changes, existing tests pass\nChange-Id: I11818a5c1be86c48dd8d6c15bdf88580364594e0\n"
    },
    {
      "commit": "d8208f18db61fef00afb5f598826059942d21bb7",
      "tree": "e49568ac4d7c5a688a269a4999f786cfb7d09f3e",
      "parents": [
        "47539161a7945697b9601477f833305763cf4cac",
        "ec016950c078c45081a3f83597828b8ccb9b102d"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Wed Jul 28 17:44:32 2021 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Jul 28 17:44:32 2021 +0000"
      },
      "message": "Merge \"MotionEvent: Guard getRawX/Y compatibility logic using feature flag\" into sc-dev am: 15c1c683fd am: ec016950c0\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/15371962\n\nChange-Id: I153b4547e1b0927718061eff425a340ef8e52e42\n"
    },
    {
      "commit": "921daeb4bc6208ec608d1d14a9a1c3a07de2f029",
      "tree": "24c86eb9a4fad83d7653620f51f4737f1cd15837",
      "parents": [
        "a62ca85c60b1705cd6044f94a9cfed71dc16c75b",
        "15c1c683fd5a19c63fc6a74973d67839f4687523"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Wed Jul 28 17:30:18 2021 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Jul 28 17:30:18 2021 +0000"
      },
      "message": "Merge \"MotionEvent: Guard getRawX/Y compatibility logic using feature flag\" into sc-dev am: 15c1c683fd\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/15371962\n\nChange-Id: Iabba246d11b32d38f1b3d75ff7d09809b76555d5\n"
    },
    {
      "commit": "7e1443fba3f81742b29e28f246e8d6b236c251a7",
      "tree": "23a79721365503cf8a68452e29c272f85194b4b2",
      "parents": [
        "4d56aeed596b259d2355478c5d4505bb429a5634"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Fri Jul 23 21:01:55 2021 +0000"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Mon Jul 26 11:13:47 2021 +0000"
      },
      "message": "MotionEvent: Guard getRawX/Y compatibility logic using feature flag\n\nThe getRawX/Y API contains compatibility logic that should only be used\nwhen the per-window-input-rotation feature is enabled.\n\nThe compatibility logic was previously unguarded because it was assumed\nthat the logic was a no-op when the flag was not enabled. However, this\nturned out to be untrue, resulting in the bug.\n\nBug: 187686656\nTest: manual: using repro steps listed in the bug.\nChange-Id: I6603694f9872e7df4b6f72c7fb2555b3249687a6\n"
    },
    {
      "commit": "2ab7a803bb4e934cbf8d08384fcaf5028cfed59e",
      "tree": "d29d6c7e2f3908a157b61d514b886cf739705802",
      "parents": [
        "57ca2a902aa9714c59ebd822f78fea9ca66d9f46",
        "7cdf8ef17636cdc5cc5fe41578951b4b1f23865c"
      ],
      "author": {
        "name": "Antonio Kantek",
        "email": "kanant@google.com",
        "time": "Tue Jul 20 23:53:10 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 20 23:53:10 2021 +0000"
      },
      "message": "Merge \"TouchEvent (1/n): Adding TouchModeEvent to InputChannel\""
    },
    {
      "commit": "742875964f223372a12d9ac14a4b8dd817524de7",
      "tree": "56fbaf66e7992f04edfc6bce8d88b930cdce74fc",
      "parents": [
        "27039bdf16e77721028820c2b48671ecf68de7d9",
        "f854dad74885926eff7d832dd71519cc179daa04"
      ],
      "author": {
        "name": "Evan Rosky",
        "email": "erosky@google.com",
        "time": "Thu Jul 15 09:01:00 2021 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Jul 15 09:01:00 2021 +0000"
      },
      "message": "Plumb through display orientation separate from transform am: 0957669e41 am: f854dad748\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/15177988\n\nChange-Id: I4715756a8369f7b8b7c00698cba480828eeb9128\n"
    },
    {
      "commit": "7cdf8ef17636cdc5cc5fe41578951b4b1f23865c",
      "tree": "56f026c7cbdb7efc01ba46ae526afdfb5d55eb31",
      "parents": [
        "81fc73800743003c669f4d2bacdb9ab6408696eb"
      ],
      "author": {
        "name": "Antonio Kantek",
        "email": "kanant@google.com",
        "time": "Tue Jul 13 18:04:53 2021 -0700"
      },
      "committer": {
        "name": "Antonio Kantek",
        "email": "kanant@google.com",
        "time": "Wed Jul 14 17:48:48 2021 -0700"
      },
      "message": "TouchEvent (1/n): Adding TouchModeEvent to InputChannel\n\nThis CL detaches the touch mode state update from focus update. It does\nthat by introducing a new internal event (TouchModeEvent). This CL also\nadds this event to InputChannel and related processing logic to\nInputPublisher and InputConsumer. InputDispatcher will process two\ndifferent events now: FocusEvent when gaining/losing focus and\nTouchModeEvent when entering/leaving touch mode.\n\nTest: atest libinput_tests\nBug: 193718270\nChange-Id: Ie4e5b6e8e798f12d7203127b4559fa40d38788de\n"
    },
    {
      "commit": "0957669e413216016e33649a6fd5fe939604dccf",
      "tree": "1a328f22051ddca9d5ce96399ff9d23ad5960c69",
      "parents": [
        "bf465a61376b9616d14c3143833de1d09c500f70"
      ],
      "author": {
        "name": "Evan Rosky",
        "email": "erosky@google.com",
        "time": "Thu Jul 01 12:22:09 2021 -0700"
      },
      "committer": {
        "name": "Evan Rosky",
        "email": "erosky@google.com",
        "time": "Wed Jul 14 15:14:12 2021 -0700"
      },
      "message": "Plumb through display orientation separate from transform\n\nThis is exclusively used for getRaw compatibility. The input\ntransform can include window rotation and also, apparently,\nnested view rotations as it the events get mutated by ui-toolkit.\n\nBug: 187686656\nTest: cd frameworks/native/services/inputflinger \u0026\u0026 atest\nChange-Id: I2fd7a2b2acbe422d962d0646d41c60eb48160620\n"
    },
    {
      "commit": "3277faf86d598a2ee1080b0bb4dd476fe1fddba8",
      "tree": "4234f214c82163f62575a7570e0b877506c87475",
      "parents": [
        "438d352932acde680c1038e1827838aca3506845"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Wed May 19 16:45:23 2021 -0500"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Tue Jun 29 10:56:57 2021 -0500"
      },
      "message": "Renamed and moved InputWindow and related files\n\nIn preparation for the hierarchy listener interface, moved the\nInputWindow structs into libgui and have libinput dependant on libgui.\nAlso renamed InputWindow to exclude Input since it will be used for more\ngeneric purposes.\n\nTest: Builds and flashes\nBug: 188792659\n\nChange-Id: I24262cbc14d409c00273de0024a672394a959e5f\nMerged-In: I24262cbc14d409c00273de0024a672394a959e5f\n"
    },
    {
      "commit": "98318de954ba00293cfd179266f09f266dc1c82b",
      "tree": "8c1c91d3f306c5d5b1300e2971807acafeb83129",
      "parents": [
        "99dbf9141032cb3c1453803b9a732f553b1301fc"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Wed May 19 16:45:23 2021 -0500"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Mon Jun 28 09:27:55 2021 -0500"
      },
      "message": "Renamed and moved InputWindow and related files\n\nIn preparation for the hierarchy listener interface, moved the\nInputWindow structs into libgui and have libinput dependant on libgui.\nAlso renamed InputWindow to exclude Input since it will be used for more\ngeneric purposes.\n\nTest: Builds and flashes\nBug: 188792659\n\nChange-Id: I24262cbc14d409c00273de0024a672394a959e5f\n"
    },
    {
      "commit": "5211ae5ea98fda6ec52c1c6c10a83bc66ca7e55e",
      "tree": "e487ce7bd4e944139db7fe0871c47ee0f2463903",
      "parents": [
        "c3dc750687c17195673a820f10fc1478016682ce",
        "98d5cfe8904c08f48e47742e7c6cf5890f10a5eb"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jun 22 01:07:05 2021 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Jun 22 01:07:05 2021 +0000"
      },
      "message": "Merge changes from topics \"motion-event-offset-pointer-sources\", \"motionevent-rotate-relative-xy-sv2\" into sc-v2-dev am: 20f5567143 am: 98d5cfe890\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/14791792\n\nChange-Id: I62ccd7b5d3894c6fe1cf49c6922d3ce68a149978\n"
    },
    {
      "commit": "4b19bd0d193d0fa06212d2e96f3971daed01b6e3",
      "tree": "bb8959ae2763987f74e1aeb3daca6df201b7828a",
      "parents": [
        "c652358755a933991bc8bf99b48d9c5f3df03907"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Tue Jun 01 17:34:59 2021 -0700"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Mon Jun 21 14:18:05 2021 -0700"
      },
      "message": "MotionEvent: Transform mouse cursor position\n\nWhen calling MotionEvent::applyTransform, the x/y coordinates for all\nPointerCoords are transformed accordingly. When this happens, we also\nneed to transform the mouse cursor position.\n\nBug: 179274888\nTest: atest InputShellCommandTest (when the display is rotated to\ndifferent orientations)\n\nChange-Id: I10db8238150b1bd20f3f53c3a7514a111e362adb\n"
    },
    {
      "commit": "c652358755a933991bc8bf99b48d9c5f3df03907",
      "tree": "1a103a18b67e29a2445260ebb054b00e55975c6f",
      "parents": [
        "664834b64dc949cb5e1d33491ee07d0a0a6c3d51"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Fri May 14 18:02:55 2021 -0700"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Mon Jun 21 14:18:05 2021 -0700"
      },
      "message": "MotionEvent: Rotate relative axes according to window orientation\n\nWe rotate the X and Y coordinates of MotionEvents when the window\ntransform also contains a rotation. This means we should rotate the\nrelative axes (AXIS_RELATIVE_{X,Y}) as well, making sure not to\ntranslate these relative values.\n\nBug: 179274888\nTest: libinput_tests\nTest: manual with test app\nChange-Id: I8c716b14ee2b3cd5362f4e9f1554ee37d6875c2d\n"
    },
    {
      "commit": "9f38881a1b333c16b5ed46384d45ecaf276e7707",
      "tree": "5f78320cbcdff0c66b5aaa538472f44a912ec2f5",
      "parents": [
        "d2c9e8e37c6c7d11e3268e1011e149e7586ae91a"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Thu May 13 16:54:53 2021 -0700"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Mon Jun 21 14:10:27 2021 -0700"
      },
      "message": "Apply translation/offset to events from pointer sources only\n\nNon-pointer events from a relative motion device such as a trackball or\nrelative mouse (Pointer Capture) should be oriented in the same way as\nthe window it is directed to. We want them to be rotated if the window\ntransform has a rotation applied to it, but these relative events should\nnot be translated.\n\nWe only apply window translation to events from pointer sources because\nthey are the only ones that refer to absolute coordinates on the\ndisplay. We apply rotation for all motion events.\n\nBug: 179274888\nTest: atest inputflinger_tests\nTest: manual with test app\nChange-Id: I8170697119d3d8e121b7b86de3201bac0edaaed9\n"
    },
    {
      "commit": "41ca6a10ad0ac63690175baa00542bd1f64d5949",
      "tree": "8a51e035f818b08046f8c671cba99598e634d826",
      "parents": [
        "911d90671856c5b7a4eb17eba98a760c008b2dbe",
        "7d0e81e2995a61fe9f43647cfd00edc0fab2d3b9"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Tue May 25 01:39:58 2021 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue May 25 01:39:58 2021 +0000"
      },
      "message": "MotionEvent: Simplify logic around transformations am: 6b38461a39 am: afc72f738d am: 7d0e81e299\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/14556109\n\nChange-Id: I39517a088f637cfe79773256804ee901691a0f54\n"
    },
    {
      "commit": "6b38461a39eca271da55cf14682b6dfef764529b",
      "tree": "966c8d7b9ed6f0f1be7d88e64473f30afddf4858",
      "parents": [
        "accebe0f914df759e13135d93ed8a0c61606fc87"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Fri May 14 16:56:25 2021 -0700"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Mon May 24 17:39:02 2021 -0700"
      },
      "message": "MotionEvent: Simplify logic around transformations\n\nThis is a refactor that simplifies logic around Transforms applied to\nMotionEvents.\n\nPointerCoords should only contain raw values that are unmodified by\nMotionEven transformations. The MotionEvent\u0027s Transform should only be\napplied when getting these values through MotionEvent\u0027s getAxisValue\nAPIs.\n\nBug: 179274888\nTest: atest libinput_tests\nTest: manual with test app\nChange-Id: If60d98ade84d481afd655a3abc921e50697071b3\n"
    },
    {
      "commit": "0cc1fb587152d487f811ab93f5bc550acf869ec3",
      "tree": "2e35d2f5a6c6fffd598d1669f67414d0b900fa13",
      "parents": [
        "5161fa3f80d1cf70b31d8f051de206f3c8c95876",
        "00c2e36c3b9aa33b3457f47c08ab804291fcc64c"
      ],
      "author": {
        "name": "Evan Rosky",
        "email": "erosky@google.com",
        "time": "Thu May 06 22:14:18 2021 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu May 06 22:14:18 2021 +0000"
      },
      "message": "Merge \"Add a hidden API to apply a transform the content of an event.\" into sc-dev am: 00c2e36c3b\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/14420241\n\nChange-Id: I9417fb4121e8a4cc0549afef2a4062caebee7411\n"
    },
    {
      "commit": "d4d4d80f73ad7c389af3dc2357582d989eb5957e",
      "tree": "637114f1243b4f67dba6d644e78350c8de1635cb",
      "parents": [
        "0a63f543a8fa8ff7585773254aeb72cf1d5f2100"
      ],
      "author": {
        "name": "Evan Rosky",
        "email": "erosky@google.com",
        "time": "Mon May 03 20:12:21 2021 -0700"
      },
      "committer": {
        "name": "Evan Rosky",
        "email": "erosky@google.com",
        "time": "Thu May 06 12:11:05 2021 -0700"
      },
      "message": "Add a hidden API to apply a transform the content of an event.\n\nUnlike normal transform, this actually transforms each\npoint directly. This is only useful for transforming\ninjected events.\n\nBug: 179274888\nTest: atest libinput_tests:MotionEventTest\nChange-Id: Ifbd90649156d2dd00087bf5a97a372ccaea3d5f3\n"
    },
    {
      "commit": "426aa09855bb2f24b301472f5def1eac2da1f40d",
      "tree": "e0cc060cddbd57dc73bb2175e2145c08af5ffb25",
      "parents": [
        "61e6f82175949cc26681baaa80d28ec92267e5bf",
        "84f07f0cbec87736f3d04846a7558869d69a2005"
      ],
      "author": {
        "name": "Evan Rosky",
        "email": "erosky@google.com",
        "time": "Thu Apr 29 23:45:36 2021 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Apr 29 23:45:36 2021 +0000"
      },
      "message": "Add enough information to compatibility-transform getRaw() am: 84f07f0cbe\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/14213061\n\nChange-Id: I293c02847ec910add4b30449ee6d5b031ce31b69\n"
    },
    {
      "commit": "84f07f0cbec87736f3d04846a7558869d69a2005",
      "tree": "3c53336d3f203a99953f64a1827f6325a78426c6",
      "parents": [
        "9e8dd09f886e14585d2018f713b7d384e768856a"
      ],
      "author": {
        "name": "Evan Rosky",
        "email": "erosky@google.com",
        "time": "Fri Apr 16 10:42:42 2021 -0700"
      },
      "committer": {
        "name": "Evan Rosky",
        "email": "erosky@google.com",
        "time": "Thu Apr 29 13:24:06 2021 -0700"
      },
      "message": "Add enough information to compatibility-transform getRaw()\n\nMany apps are mis-using getRaw (assuming it means screen-coordinates).\n\nThis means, for now, we have to do a compatibility transform on the\nAPI to prevent breaking said apps.\n\nFortunately, since the input window transform includes rotation,\nthe only extra information we need to calculate this compat-raw\nis the display size.\n\nThis CL topic pipes the display size around so that it makes into the\nMotionEvent and can be used to calculate getRaw()\n\nBug: 179274888\nTest: atest inputflinger_tests:InputDispatcherTest\nChange-Id: Iff893643312e8ec9f38eeb96d76a41fdb3a28350\n"
    },
    {
      "commit": "0b8f43bad30ba0a4e7509c876b9ef2f0a337c7e8",
      "tree": "ef5f95b1c4fbb7716875f9551c00a499f0d1a57b",
      "parents": [
        "211bae35b3d30ee1921f15830ab26f438e105694",
        "30c6ac31bd18b9ea045cf39b125a5fb145300248"
      ],
      "author": {
        "name": "Arthur Hung",
        "email": "arthurhung@google.com",
        "time": "Thu Mar 11 02:01:42 2021 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Mar 11 02:01:42 2021 +0000"
      },
      "message": "Merge \"Move drag event to InputDispatcher (1/n)\" into sc-dev am: 30c6ac31bd\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/13434267\n\nMUST ONLY BE SUBMITTED BY AUTOMERGER\n\nChange-Id: If4a3f71b2751ee4924b7b21e927fa014a869eb6f\n"
    },
    {
      "commit": "7632c3391394a47cface411997ce03d126d1e4da",
      "tree": "f4c4ab55383c089cb766c95442dfd958a5c78fb3",
      "parents": [
        "335c73a433ab3e7e158204d09a6f1f5f6a2ff1dc"
      ],
      "author": {
        "name": "arthurhung",
        "email": "arthurhung@google.com",
        "time": "Wed Dec 30 16:58:01 2020 +0800"
      },
      "committer": {
        "name": "arthurhung",
        "email": "arthurhung@google.com",
        "time": "Mon Mar 08 21:40:13 2021 +0800"
      },
      "message": "Move drag event to InputDispatcher (1/n)\n\nThis CL adds the ability to send a DRAG event through the\nInputChannel, and adds the appropriate processing logic to\nInputPublisher and InputConsumer.\n\nBug: 158242495\nTest: atest libinput_tests InputPublisherAndConsumerTest\nChange-Id: I7aead341a9851facf654024c476bd6d7eaae4590\n"
    },
    {
      "commit": "d0729e1ec2498d3c1dd780063085d352f3436423",
      "tree": "fd5f56eea496067940cfb434952466328e23952d",
      "parents": [
        "2587c83e21057d80ff324fd6fb2d5840c2533f70"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Wed Dec 05 16:46:06 2018 -0800"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Thu Feb 25 17:27:05 2021 -1000"
      },
      "message": "Remove unused function\n\nThe function is unused. Remove it.\n\nBug: none\nTest: presubmit only\n\nChange-Id: If5af47bbdb119b106021ea79da0bd4b06ea27548\n"
    },
    {
      "commit": "3f37b7b1d750190f15afd0d6c0a54e1ea76cbd40",
      "tree": "6da90b8365b50b4502f2d544c538d1cd8c45358d",
      "parents": [
        "7e186182c8181458ec9d0072bc1f3d7f34ba88a6"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Tue Nov 10 16:50:18 2020 -0800"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Tue Nov 17 14:55:52 2020 -0800"
      },
      "message": "SyncPointerCapture (3/n): Add Capture event to InputChannel\n\nThis CL adds the ability to send a CAPTURE event through the\nInputChannel, and adds the appropriate processing logic to\nInputPublisher and InputConsumer.\n\nThis will be used by the InputDispatcher to notify windows when they\nhave either lost or gained Pointer Capture.\n\nBug: 141749603\nTest: atest libinput_tests\nChange-Id: I102833e6f0fd1e8e9c4b3c12e7a5a737eeda2377\n"
    },
    {
      "commit": "faa986c076dffff0be41dd866462494a76d0ad90",
      "tree": "767586452e7f9b522df5f4f00ad48e54c342afbd",
      "parents": [
        "a267bd3745798d20270dff422bafc73a64d227ae"
      ],
      "author": {
        "name": "Brett Chabot",
        "email": "brettchabot@google.com",
        "time": "Wed Nov 04 17:39:36 2020 -0800"
      },
      "committer": {
        "name": "Brett Chabot",
        "email": "brettchabot@google.com",
        "time": "Wed Nov 04 18:56:42 2020 -0800"
      },
      "message": "Fix libinput mac build, hopefully.\n\nRestore the ifdefs removed in go/ag/12549959, but using\nifdef __linux__ instead of __ANDROID__.\n\nTest: m libinput\nBug: 172023026\nChange-Id: Iafbf592e7b937b780e5ffc2df490a6c17f5f6cf5\n"
    },
    {
      "commit": "08a8d53960e91d453ab479e6f41eb8c46a556d1f",
      "tree": "54264daa087aa883dd6da8d5084843da5b0b61bd",
      "parents": [
        "f4b1410afa384815ea89dd4b089df4ebce2068ff",
        "5820852c0f0fe634a104f81691ad3e0026caecdc"
      ],
      "author": {
        "name": "Brett Chabot",
        "email": "brettchabot@google.com",
        "time": "Thu Oct 29 17:43:49 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Oct 29 17:43:49 2020 +0000"
      },
      "message": "Merge \"Build all of libinput for linux host.\""
    },
    {
      "commit": "5820852c0f0fe634a104f81691ad3e0026caecdc",
      "tree": "3e430545bfdf4788230f9dcfbaca29c8eee47778",
      "parents": [
        "1ac550d7973e5a1f90a3cd9b661a0fa0668d6516"
      ],
      "author": {
        "name": "Brett Chabot",
        "email": "brettchabot@google.com",
        "time": "Wed Sep 09 13:55:24 2020 -0700"
      },
      "committer": {
        "name": "Brett Chabot",
        "email": "brettchabot@google.com",
        "time": "Wed Oct 28 11:16:53 2020 -0700"
      },
      "message": "Build all of libinput for linux host.\n\nIncluding enabling parcel-related code in source already building for\nhost.\n\nTest: m libandroid_runtime\nChange-Id: Ia569e5158ba6ead28486069036f6a3595662bbf8\n"
    }
  ],
  "next": "c68fdecad27ad2061ae27f27cab02b2eb13b423f"
}
