)]}'
{
  "log": [
    {
      "commit": "1e5ec0a0542e150cff46ba117022d3d8fb9794da",
      "tree": "fbbfa32009cb8ddbdb9a6a4139885cf09759ea41",
      "parents": [
        "ef19b194c8a1723c63cda9bf5f6d3ac416dc8809"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Wed Mar 01 17:21:51 2023 -0800"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Thu Mar 02 01:28:14 2023 +0000"
      },
      "message": "Initialize mLayoutOverlayApplied\n\nThis variable is left uninitialized. On some platforms, this causes the\nlibinput_tests to fail when sanitizers are enabled.\n\nBug: 251249010\nTest: m libinput_tests \u0026\u0026 adb sync data \u0026\u0026 adb shell -t /data/nativetest64/libinput_tests/libinput_tests --gtest_filter\u003d\"*keyCharacterMapParcelingTest*\"\nChange-Id: I05063efdde9a826f7001dca828b84bbec5beb0df\n"
    },
    {
      "commit": "1e63fc2fcb3d965d1df95e20b192565915d32fe8",
      "tree": "a610b04422579ad7f127d7bacef9c2b15c10c636",
      "parents": [
        "b2bd83cb33bb9dce0a441c5f0ff178d9a0c7f6e9"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Thu Feb 23 19:03:03 2023 +0000"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Thu Feb 23 19:06:39 2023 +0000"
      },
      "message": "Improve logging of evdev events by using labels for recognized values\n\nWhen logging evdev events, use the human-readable labels for recognized\nvalues for the event type, the event code, and event value.\n\nBug: 193231132\nTest: Manual, by enabling raw events logging:\n    setprop log.tag.InputReaderRawEvents DEBUG\nChange-Id: I8ed700a1e2d8659031514d2d8f9aef420b129dbc\n"
    },
    {
      "commit": "92c8fd5ad1b044f9a4dc0e1462b1b48dd9c1b5d6",
      "tree": "91681a33a945089c89b91917f187dba46a86a74c",
      "parents": [
        "e38446b90e6c2967b23a52c4e5b53dcf2749731f"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Sun Jan 29 14:57:43 2023 -0800"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Wed Feb 22 15:54:24 2023 +0000"
      },
      "message": "Ensure channel receives a consistent touch stream\n\nAdd an event verifier to check the touch streams that are being sent to\nthe input channel.\n\nIf a stream is inconsistent, crash.\n\nFor now, only touch streams are being verified. Disable the feature\nwhile the bugs are being fixed.\n\nBug: 267082966\nTest: m inputflinger_tests \u0026\u0026 $ANDROID_HOST_OUT/nativetest64/inputflinger_tests/inputflinger_tests\nMerged-In: Ibb8ab70b0019789c1a17dae0077be6b23d3d9139\nChange-Id: Ibb8ab70b0019789c1a17dae0077be6b23d3d9139\n(cherry picked from commit f06b672b3e433121037398c7255098ed0130c649)\n"
    },
    {
      "commit": "dd0635d5169003c1119f78853289135cbfc71121",
      "tree": "71d9569f03949dcaf612a22978eddd6753710c52",
      "parents": [
        "5fc135bf77a1d4379aca32d2b400cd3ff864d6fc"
      ],
      "author": {
        "name": "Zixuan Qu",
        "email": "zixuanqu@google.com",
        "time": "Mon Feb 06 04:52:38 2023 +0000"
      },
      "committer": {
        "name": "Zixuan Qu",
        "email": "zixuanqu@google.com",
        "time": "Tue Feb 21 17:05:30 2023 +0000"
      },
      "message": "Add virtual input device native classes.\n\nAdd VirtualInputDevice base class and a set of subclasses for each\ndevice type. Each virtual input device wraps a fd representing the\nuinput device and a set of write...event() methods.\n\nMost logic are moved from InputController JNI code: see ag/21294055 for\nreference.\n\nTest: atest VirtualInputTest VirtualMouseTest VirtualKeyboardTest\nVirtualTouchscreenTest VirtualDpadTest\n\nBug: 267515782\n\nChange-Id: Ie3a580acc890ac5af7461f012e05eb9ed3709a5f\nMerged-In: Ie3a580acc890ac5af7461f012e05eb9ed3709a5f\n"
    },
    {
      "commit": "bd66e62069a5495ee8ba8b9ff8c35d3a2075a06d",
      "tree": "5762c35299ccce6890fae8a8c6f29075ded84d92",
      "parents": [
        "cb3229aaf2233ebb917d967a6e73d48cce1a1480"
      ],
      "author": {
        "name": "Philip Quinn",
        "email": "pquinn@google.com",
        "time": "Fri Feb 10 11:45:01 2023 -0800"
      },
      "committer": {
        "name": "Philip Quinn",
        "email": "pquinn@google.com",
        "time": "Fri Feb 10 11:46:38 2023 -0800"
      },
      "message": "Postpone loading the TFLite model until a supported event is recorded.\n\nBug: 267050081\nTest: atest libinput_tests\nChange-Id: I09666da123a58786e8a6d47d4c29a475e92f2bbf\n"
    },
    {
      "commit": "cb3229aaf2233ebb917d967a6e73d48cce1a1480",
      "tree": "ff19ed484f5f0e967f8182d972b8bdea6a4f3802",
      "parents": [
        "da6a448e2dfbfa7f13ce243e9273ceb9bcda4388"
      ],
      "author": {
        "name": "Philip Quinn",
        "email": "pquinn@google.com",
        "time": "Wed Feb 08 22:50:59 2023 -0800"
      },
      "committer": {
        "name": "Philip Quinn",
        "email": "pquinn@google.com",
        "time": "Thu Feb 09 22:33:05 2023 -0800"
      },
      "message": "Use mmap to read TFLite model.\n\nThe buffers in the model file are used directly by TFLite, and so a\nsmall memory saving can be achieved by backing those memory pages with\nthe file itself.\n\nBug: 267050081\nTest: atest libinput_tests\nChange-Id: I743a3c94477d4bb778b6e0c4b4890a44f4e19aa4\n"
    },
    {
      "commit": "da6a448e2dfbfa7f13ce243e9273ceb9bcda4388",
      "tree": "f7ca67497673677a37a8d7b7d944c4c730084842",
      "parents": [
        "b7f27919553dc4e8f47d5d3c79a5871df3824460"
      ],
      "author": {
        "name": "Philip Quinn",
        "email": "pquinn@google.com",
        "time": "Tue Feb 07 10:09:57 2023 -0800"
      },
      "committer": {
        "name": "Philip Quinn",
        "email": "pquinn@google.com",
        "time": "Thu Feb 09 22:32:58 2023 -0800"
      },
      "message": "Replace shared libtflite dependency with static library.\n\nThis allows us to only include the ops required to run the model and\nhave the linker strip the rest out, reducing memory overhead.\n\nBug: 267050081\nTest: atest libinput_tests\nChange-Id: I4055a0c8971ed4308ccfa425ab5e5ba560deb58c\n"
    },
    {
      "commit": "6c94ce4393a530159863324832aad5b482937a5a",
      "tree": "ecb40508b08e5b8f0c5a2d86ba40c10fb5d699f7",
      "parents": [
        "216b1543d738ee64f731e657eb8ec711df96a797",
        "9b8926eda5f03ab378fffb49d3c757ecd882c613"
      ],
      "author": {
        "name": "Philip Quinn",
        "email": "pquinn@google.com",
        "time": "Mon Feb 06 22:28:29 2023 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 06 22:28:29 2023 +0000"
      },
      "message": "Merge \"Add a simple ring buffer and use it for holding TFLite model inputs.\""
    },
    {
      "commit": "9b8926eda5f03ab378fffb49d3c757ecd882c613",
      "tree": "fe59ee99fbe594e1298c62c6d8207ace80b53a7e",
      "parents": [
        "ba75fbf758e90610799975c7c11e15a85c8e614e"
      ],
      "author": {
        "name": "Philip Quinn",
        "email": "pquinn@google.com",
        "time": "Tue Jan 31 14:50:02 2023 -0800"
      },
      "committer": {
        "name": "Philip Quinn",
        "email": "pquinn@google.com",
        "time": "Mon Feb 06 12:16:34 2023 -0800"
      },
      "message": "Add a simple ring buffer and use it for holding TFLite model inputs.\n\nBug: 167946763\nTest: atest libinput_tests\nChange-Id: I7e50d38ed0c593aebc5fdc6af4b25868505d48bc\n"
    },
    {
      "commit": "75789cd72bc516f3f9680a3f3c31a1e0015c1c98",
      "tree": "1fcc0912f928b24216196c37195a38027008234c",
      "parents": [
        "032c7dcf744f4c2c16755b4c34e0cc24abe54a7d"
      ],
      "author": {
        "name": "Seunghwan Choi",
        "email": "sbee.choi@samsung.corp-partner.google.com",
        "time": "Fri Jan 13 20:31:59 2023 +0900"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Thu Feb 02 08:33:29 2023 +0000"
      },
      "message": "Separate default pointer for mouse and stylus (native part)\n\nLet PointerController (MouseCursorController) know the source of\nthe current event, either mouse or stylus.\nMouseCursorController will show the proper default pointer for\nthe active source, if the requested pointer type is TYPE_NOT_SPECIFIED.\n\nTest: Manual Test\nBug: b/215436642\nChange-Id: I91f702db661846fc7ad857f71656903c8aa4334a\n"
    },
    {
      "commit": "dff1554cc8c39f4a64e74a50c0371bd0b794239f",
      "tree": "73fa435facdb02f609cf0db763b79515b6497934",
      "parents": [
        "400a20aa77ec1167b781580f5914de0023deee3b",
        "8f953ab5a1deea03a6abb4019008bac8c3ea2561"
      ],
      "author": {
        "name": "Philip Quinn",
        "email": "pquinn@google.com",
        "time": "Sat Jan 28 21:45:46 2023 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Jan 28 21:45:46 2023 +0000"
      },
      "message": "Merge \"Add TFLite model for motion prediction.\""
    },
    {
      "commit": "8f953ab5a1deea03a6abb4019008bac8c3ea2561",
      "tree": "734c9d8623546798ea2aabf4c81438079ce43abc",
      "parents": [
        "492cf57ab68bdcedb6f3985433183cb5ed15e697"
      ],
      "author": {
        "name": "Philip Quinn",
        "email": "pquinn@google.com",
        "time": "Tue Dec 06 15:37:07 2022 -0800"
      },
      "committer": {
        "name": "Philip Quinn",
        "email": "pquinn@google.com",
        "time": "Thu Jan 26 15:30:38 2023 -0800"
      },
      "message": "Add TFLite model for motion prediction.\n\nThis model generates probabilistic motion predictions based on a\nsequence of relative input movements. The input movements are converted\ninto polar coordinates (distance and angle) based on an axis that\nfollows the current path. This ensures that the orientation of the\ndevice and of the inputs do not affect the predictions. The orientation\nof the input device is also transformed to be relative to the path axis.\n\nThe test cases verifying model efficacy are consolidated into CTS.\n\nBug: 167946763\nTest: atest libinput_tests\nPiperOrigin-RevId: 492068340\nChange-Id: Icd8d90bd5a7ce79c699bfdb6367a4cbd8130441a\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": "53e1dac44c8267ffb454ce969d39d2f88c7f366d",
      "tree": "a971560f70d06e9f377e9970d68e69dde24eafce",
      "parents": [
        "6d1c002eb5764dbb716073bf2f2ff5905558bfe1",
        "ea73eaa7cb640654d6cd5b423196a7beeb781416"
      ],
      "author": {
        "name": "Harry Cutts",
        "email": "hcutts@google.com",
        "time": "Fri Jan 20 14:13:16 2023 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 20 14:13:16 2023 +0000"
      },
      "message": "Merge changes I036d0251,I7723dcba\n\n* changes:\n  TouchpadInputMapper: add dump method\n  TouchpadInputMapper: Add gesture property provider\n"
    },
    {
      "commit": "ea73eaa7cb640654d6cd5b423196a7beeb781416",
      "tree": "6311c08d1330e1664b2b0ddef5e03781ddfd1248",
      "parents": [
        "1b217913fbc80d3b8042a628d1a3eb7a3842e7ff"
      ],
      "author": {
        "name": "Harry Cutts",
        "email": "hcutts@google.com",
        "time": "Mon Jan 16 17:55:46 2023 +0000"
      },
      "committer": {
        "name": "Harry Cutts",
        "email": "hcutts@google.com",
        "time": "Fri Jan 20 11:44:48 2023 +0000"
      },
      "message": "TouchpadInputMapper: add dump method\n\nThis dumps the state from the gesture converter, and a list of gesture\nproperties, which is useful for debugging settings.\n\nBug: 251196347\nTest: run dumpsys input with touchpad connected, check output\nChange-Id: I036d0251b06489b645b883a239ff345a98448497\n"
    },
    {
      "commit": "b096ea0dc94f2570207744dce7bac5579f77cae7",
      "tree": "480553e690a35980768b0642773ae49bbe8f32f3",
      "parents": [
        "e3f93479c020fc243bbbcf8c7c081103a58aa977",
        "b581f7f0d2aa1f385de2be47c1f3773795d2c131"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 20 08:08:30 2023 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 20 08:08:30 2023 +0000"
      },
      "message": "Merge \"Track hovering pointers explicitly -- try 2\""
    },
    {
      "commit": "b581f7f0d2aa1f385de2be47c1f3773795d2c131",
      "tree": "67cf3ff4e962b5e6816a7f011bc9c7c64ebc8f1e",
      "parents": [
        "ae0b8d1d9bbada6795d81ab20f7470cb4f3cdc60"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Wed Dec 07 20:23:06 2022 +0000"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Thu Jan 19 07:44:13 2023 -0800"
      },
      "message": "Track hovering pointers explicitly -- try 2\n\nUpdate:\nCompared to the first version of this CL that got reverted, this version\nalso adds Flags::FOREGROUND to the windows whenever appropriate.\n\nBefore this CL, hovering window was tracked separately inside\nInputDispatcher. This window was getting updated in various places.\nInconsistent motion streams, like HOVER_ENTER-\u003eDOWN-\u003eUP-\u003eHOVER_EXIT were\npossible.\n\nIn this CL, we track hovering pointers inside TouchedWindow. At all\ntimes, the currently tracked pointer must always be in the touch state.\nThe hovering pointer is removed when HOVER_EXIT is received.\n\nThis CL also establishes the foundation for multi-device, multi-pointer\nstreams, by storing hovering pointers inside TouchedWindow per-device.\n\nEventually, we can look into separately creating touched targets from\nupdating the touch state. This approach is partially used in this CL.\n\nTouchState is used to keep track of where the hovering pointer is\ncurrently. The \u0027addHoveringWindowsLocked\u0027 function returns the\nequivalent of InputTargets. Eventually, we can change this to return\nInputTargets.\n\n39d37cfb471c69f924e90f8e35afcff4ad4e6042\n\nBug: 211379801\nTest: atest android.accessibilityservice.cts.AccessibilityEndToEndTest\nTest: atest VirtualMouseTest\nTest: m inputflinger_tests \u0026\u0026 adb sync data \u0026\u0026 adb shell -t /data/nativetest64/inputflinger_tests/inputflinger_tests\n\nChange-Id: I0aa77bc9f680786b154312c4c936da2cf6efffa1\n"
    },
    {
      "commit": "961656ae5864744ae22d66904e6b04b773c04a00",
      "tree": "a1b3895b9e584ac2e0bd52ffc1f5fc5615c9afd3",
      "parents": [
        "e2823f4d47324188167522010152eb7021c10f75",
        "92d7fd07adcc59291152e6e9212a416b5ff5c36a"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Thu Jan 19 06:06:59 2023 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 19 06:06:59 2023 +0000"
      },
      "message": "Merge \"[scribe] Add index of handwriting icon on native\""
    },
    {
      "commit": "d3cf4c284e5cea24b665b6489a7750eb222ad9b2",
      "tree": "fe28c4f0178682e4dbc7c4fa5436b32515f446b4",
      "parents": [
        "5568dbecd6f433f668d5eae3a00a12128480db64",
        "e04ffaaaa0ded909d69b8641ca30cc8a639fc1d1"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Thu Jan 19 02:52:57 2023 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 19 02:52:57 2023 +0000"
      },
      "message": "Merge \"Add an API to get the supported USI version for a display\""
    },
    {
      "commit": "e04ffaaaa0ded909d69b8641ca30cc8a639fc1d1",
      "tree": "a91fe74bf57731670abfccaadd1633cf31e37453",
      "parents": [
        "7ac691e131b24e2b420290c841023364fcca6208"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Tue Dec 13 23:04:04 2022 +0000"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Tue Jan 17 16:48:50 2023 +0000"
      },
      "message": "Add an API to get the supported USI version for a display\n\nThe InputManager#getHostUsiVersion(displayId) API can be used to tell if\na display supports the Universal Stylus Initiative protocol for styluses,\nand can be used to address version compatibility issues.\n\nWe first dynamically attempt to find an InputDevice associated with the\ndisplay that supports USI. If there are none, we check the statically\nadd USI version for the display in config_displayUsiVersionArray.\nChecking the config as a fallback means the USI InputDevice does not\nhave be registered/open perpetually for the getHostUsiVersion() API to\nreturn the correct values.\n\nBug: 261596890\nTest: manual with device\nTest: atest TouchScreenTest\nChange-Id: Ifabd00aa996ba88258d8112e5de3582adaf27629\n"
    },
    {
      "commit": "68950fb9e6d9a987bb0e849469a491d4242ac1b5",
      "tree": "bae531f3a6613de34fa78c06b0051b57b142b85e",
      "parents": [
        "30b0c842b5f288bd013565f625eb57465ae2e9ef",
        "8d23203ec6d923aaf7d44f77faea2ac42a963227"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jan 16 19:18:40 2023 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 16 19:18:40 2023 +0000"
      },
      "message": "Merge \"Per-pointer processing in VelocityTracker\""
    },
    {
      "commit": "30b0c842b5f288bd013565f625eb57465ae2e9ef",
      "tree": "31ce4e366a681a07faf3d30aa5a0932cf4e8b210",
      "parents": [
        "8704ef5a5b9871284e00566c231b07d638b18094",
        "657a17320045f45ce4a71a6d4ea5daddc302d223"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jan 16 10:09:32 2023 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 16 10:09:32 2023 +0000"
      },
      "message": "Merge \"Use std::optional for active pointer id\""
    },
    {
      "commit": "92d7fd07adcc59291152e6e9212a416b5ff5c36a",
      "tree": "77042861f439fe4ce4061fe79048d7af0c763434",
      "parents": [
        "7ac691e131b24e2b420290c841023364fcca6208"
      ],
      "author": {
        "name": "Seunghwan Choi",
        "email": "sbee.choi@samsung.corp-partner.google.com",
        "time": "Wed Jan 11 16:46:15 2023 +0900"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Fri Jan 13 23:39:59 2023 +0000"
      },
      "message": "[scribe] Add index of handwriting icon on native\n\nAdd TYPE_HANDWRITING index on native input.h to use on\ninputManagerService.cpp\n\nTest: Manual Test(hover pointer on handwriting area)\nBug: b/215436642\nChange-Id: I41caec44d81c414b4acc1e3575c5acc6f99146d8\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": "8d23203ec6d923aaf7d44f77faea2ac42a963227",
      "tree": "555991e72327fe2f5de9ec80ce3c109216d35077",
      "parents": [
        "657a17320045f45ce4a71a6d4ea5daddc302d223"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Wed Jan 11 08:17:21 2023 -0800"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Thu Jan 12 18:23:20 2023 -0800"
      },
      "message": "Per-pointer processing in VelocityTracker\n\nWe would like to skip resampled data in VelocityTracker when the\nvelocity is being computed. To make this happen, we need to first\nprocess the data per-pointer. This will then allow us to skip individual\ndata points.\n\nTo minimize the impact to older VT strategies that are largely untested,\nthe main change here is to make \u0027mMovements\u0027 and \u0027mIndex\u0027 become\nper-pointer, rather than converting to a vector.\n\nAlso, use std::array instead of [] because [] cannot be used inside a\nstd::map easily.\n\nThere should be no functional change in this CL. The actual skipping of\nresampled values will be done in a separate CL.\n\nBug: 167946721\nTest: m libinput_tests \u0026\u0026 $ANDROID_HOST_OUT/nativetest64/libinput_tests/libinput_tests\n\nChange-Id: I1c3c845bca0d4bb7d2c3973bfe84462139ac36f3\n"
    },
    {
      "commit": "23e8ae9cf2793b83e220adec4cf6dec35e090e53",
      "tree": "7fab247ee09974faf18ed0fea15ba7a91fc3e18c",
      "parents": [
        "4079d69adeb0c9a55e8b2651775470a8dc2ab0bb"
      ],
      "author": {
        "name": "Vaibhav Devmurari",
        "email": "vdevmurari@google.com",
        "time": "Thu Dec 29 12:07:56 2022 +0000"
      },
      "committer": {
        "name": "Vaibhav Devmurari",
        "email": "vdevmurari@google.com",
        "time": "Thu Jan 12 23:18:40 2023 +0000"
      },
      "message": "Clear applied layout overlay if new layout overlay is null.\n\nNeed to allow resetting of key character map by setting overlay\nmap to null. This is required when moving from a IME setting\nthat has a KCM to another IME setting that has none.\n\nTest: atest KeyboardLayoutChangeTest\nBug: 20805588\nChange-Id: I62dc65970b61628486aff698a8ab8ccb31c109d6\n"
    },
    {
      "commit": "657a17320045f45ce4a71a6d4ea5daddc302d223",
      "tree": "8b91bbccc32d28214755b5b54f97084bccf61bb2",
      "parents": [
        "6e85d515d4117d011b3e9b1463213d59345244e6"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Thu Jan 12 11:58:52 2023 -0800"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Thu Jan 12 14:35:52 2023 -0800"
      },
      "message": "Use std::optional for active pointer id\n\nThe active pointer id is not always valid. Rather than using a magic\nvalue for it (-1), let\u0027s use std::optional.\n\nSome other fixes:\n- convert to enum class, for better type safety / switch checking\n- ident switch statements\n\nIt\u0027s necessary to ident switch statements to avoid weird clang-format\nproblems when changing code that follows those sections.\n\nBug: 167946721\nTest: m libinput_tests \u0026\u0026 $ANDROID_HOST_OUT/nativetest64/libinput_tests/libinput_tests\nChange-Id: I6b78301e2c1d2fba1a789fa9491f7d6ab8b37d02\n"
    },
    {
      "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": "97e60ba37b33d7f645ef429364b1d5616453ef4a",
      "tree": "5734bec75b438a49b1d3593faa91815ae8f09780",
      "parents": [
        "1556f84aee25641de6d14b049c2df13cf93b5b2a",
        "0839bd636585de782a2c22b9f44164fb74db3534"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Jan 07 01:40:10 2023 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Jan 07 01:40:10 2023 +0000"
      },
      "message": "Merge \"Provide prediction time from the application\""
    },
    {
      "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": "0839bd636585de782a2c22b9f44164fb74db3534",
      "tree": "c2e940c586f5043b1cb31b45469c7e60a8ae6bea",
      "parents": [
        "990ff7ba368f3d24ba6ac25321e326c82f13d620"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Thu Jan 05 17:20:00 2023 -0800"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Thu Jan 05 17:20:00 2023 -0800"
      },
      "message": "Provide prediction time from the application\n\nAfter further discussion with the graphics team, it turns out that the\nChoreographer isn\u0027t the best way to compute the prediction time.\n\nThere may be some strategy that would use the Choreographer, like\nlooking at the last vsync and trying to guess when the next drawing will\noccur.\n\nHowever, for now, let\u0027s just provide this time from the application and\nexperiment with it. If we do need the Choreographer, we should be able\nto get this data from libgui here in the native layer, so we don\u0027t need\nthe java to set this time, anyways.\n\nBug: 167946763\nTest: atest libinput_tests inputflinger_tests\nChange-Id: I496a9c184745d4cec085b880f913983cc2be9e3f\n"
    },
    {
      "commit": "61560dd631eb9b983ede0f446557afb34371eb68",
      "tree": "b9fe9d27bd6b8c5f75692dab05ebad081473f4b6",
      "parents": [
        "57d38f711c5bc7b35594a0233aef34f74b027c1b",
        "c5748d198b4ee9819ba35bf4c5c4eecf817fee7a"
      ],
      "author": {
        "name": "Harry Cutts",
        "email": "hcutts@google.com",
        "time": "Thu Jan 05 18:36:02 2023 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 05 18:36:02 2023 +0000"
      },
      "message": "Merge \"Report three- and four-finger swipes\""
    },
    {
      "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": "7fb411367ff01ef737ad6dff2dcd68d60a06a09e",
      "tree": "4a3e4bda8f81bb290876fc7bfbfeb220381b7d73",
      "parents": [
        "78c84d62bdc4ebe288c7cfaf6ddf9febc47d227d"
      ],
      "author": {
        "name": "Vaibhav Devmurari",
        "email": "vdevmurari@google.com",
        "time": "Mon Jan 02 13:30:26 2023 +0000"
      },
      "committer": {
        "name": "Vaibhav Devmurari",
        "email": "vdevmurari@google.com",
        "time": "Wed Jan 04 17:43:14 2023 +0000"
      },
      "message": "Convert country code to Layoutinfo (Language tag + Layout type)\n\nInstead of passing country code to InputDevice.java, convert it\nto Language tag and Layout type on native side and pass that\nforward instead.\nWe can later add support for  HID language tag, that would give\nus better layout information than country code. This HID\nlanguage tag is for Keyboard devices so, we set this country\ncode derived language tag also for Keyboards only, even though\ncountry code could be specified for all types of devices.\nMoreover, we are using language tag and layout type for setting\nlayout related info for Virtual keyboard devices too, making\nusing country code redundant.\n\nTest: atest inputflinger_tests\nBug: 259530132\nChange-Id: I8eca5537a5bb44d0b8b056947cc317ac82a0901f\n"
    },
    {
      "commit": "8be052fe3dee052a043e38444a4545f7116a6c45",
      "tree": "c9cf41c06aea01e1db403d9bf71d8ba0e1fb1782",
      "parents": [
        "bc925d8d70eaf407cab41928af8cf369647b225c",
        "39147ceecf38b27875939e603ad45d9f1d6bd6ea"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Thu Dec 22 15:16:43 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 22 15:16:43 2022 +0000"
      },
      "message": "Merge \"Add native MotionPredictor\""
    },
    {
      "commit": "39147ceecf38b27875939e603ad45d9f1d6bd6ea",
      "tree": "05fc49c245238b66f8fe350cd6f2e06bc2974eea",
      "parents": [
        "dcd031a26a503ef6d0dd0c9a5f4cba9ac378e29b"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Tue Nov 15 12:13:04 2022 -0800"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Wed Dec 21 17:10:33 2022 -0800"
      },
      "message": "Add native MotionPredictor\n\nThe native MotionPredictor will call neural net code to create motion\npredictions for the provided gesture stream.\n\nIn this CL, a simple linear extrapolation model is provided in order to\ntest the API.\n\nTo enable prediction:\nadb shell setprop persist.input.enable_motion_prediction true\n\nBug: 167946763\nTest: atest InputTests inputflinger_tests libinput_tests\nChange-Id: Id8a23b728aeb844288d5b8daae0829d61d4c1482\n"
    },
    {
      "commit": "a91efe00996bb025da011f0eb4dedca2516745f9",
      "tree": "35e3829b4148932f9abf18753b4e5cd723a94101",
      "parents": [
        "030a3fb0cc943e18b28b8b88d10ae122581c6f85",
        "64fd520f4ad9c34639389bfd8f0d50d78581f0d4"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Wed Dec 21 19:51:18 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 21 19:51:18 2022 +0000"
      },
      "message": "Merge changes If7b0026a,Ibfb6d2ab,I403a686c,I15b5fa66\n\n* changes:\n  TouchInputMapper: Remove the concept of coverage calibration\n  TouchInputMapper: Use ui::Transform to calculate orientation angles\n  TouchInputMapper: Perform physical frame hit test in rotated display space\n  TouchInputMapper: Use ui::Transform to \"cook\" raw input coordinates\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": "fecb60640999c4758a8967e7d7960d4530198d17",
      "tree": "bc4c40765018b8563e0f62f67e8c176acf8ed6bd",
      "parents": [
        "7d089caad4b61600d0d876d18b13f0fb1d255685"
      ],
      "author": {
        "name": "Zixuan Qu",
        "email": "zixuanqu@google.com",
        "time": "Sat Nov 12 04:44:31 2022 +0000"
      },
      "committer": {
        "name": "Zixuan Qu",
        "email": "zixuanqu@google.com",
        "time": "Fri Dec 16 06:54:05 2022 +0000"
      },
      "message": "Gets keyboard layout info from user space when available.\n\nThe layout info consists of a BCP 47 conformant language tag and a\nlayout type such as \"qwerty\" or \"azerty\". They will be used to\ninitialize the input device.\n\nThis is currently used by uinput virtual keyboard to pass in layout\ninformation.\n\nBug: 237537306\nTest: atest inputflinger_tests\nChange-Id: Icfc30f1afb0f88dd704d1d598d62a300a032b0f5\n"
    },
    {
      "commit": "cbba14c55c15ab3d41a4427fbb2406e6d0ade4b2",
      "tree": "f9247798ea2673cde8e4b1f96dcf40c6c61a4567",
      "parents": [
        "fc55603abca981af151a6cea915be6ca8a542545"
      ],
      "author": {
        "name": "Vaibhav Devmurari",
        "email": "vdevmurari@google.com",
        "time": "Mon Oct 10 16:54:49 2022 +0000"
      },
      "committer": {
        "name": "Vaibhav Devmurari",
        "email": "vdevmurari@google.com",
        "time": "Tue Dec 06 16:54:49 2022 +0000"
      },
      "message": "Add API to support key remappings on native side\n\nFor adding support for modifier key remapping, we need to add\nnative support save key remappings and send appropriate android\nkey codes using KeyCharacterMap.\n\nTest: atest KeyboardLayoutChangeTest\nBug: 252812993\nChange-Id: Ib3efa866c6e6408dd11e97dfaf49feb92f48bc18\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": "8a0d7dd982871733f91f2f3cd079586e2ca0245e",
      "tree": "5556510ddfbbca3c46ee92c49b480eca435b38d8",
      "parents": [
        "88b5db0d790f69fde07b5587fc49f7ec448ed050",
        "e562696c7658102f63558be034a2fb7ab158840f"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Wed Nov 16 23:20:48 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 16 23:20:48 2022 +0000"
      },
      "message": "Merge changes I3dae9b50,I3d687a10\n\n* changes:\n  Input: Add isStylusToolType() utility function\n  Differentiate fused and unfused external styluses\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": "79b76d190b1c6bf78fe4ade91c0d6f1a4c637ee7",
      "tree": "c9e3cdf9d58ed97830f0cebde7a36031822413e8",
      "parents": [
        "f8ebb5b58d973109811154eae03d687b9da2c87c"
      ],
      "author": {
        "name": "Zixuan Qu",
        "email": "zixuanqu@google.com",
        "time": "Fri Nov 11 04:47:51 2022 +0000"
      },
      "committer": {
        "name": "Zixuan Qu",
        "email": "zixuanqu@google.com",
        "time": "Mon Nov 14 23:57:16 2022 +0000"
      },
      "message": "Dump WheelVelocityControlParameters in individual CursorInputMappers.\n\nThis information is currently only dumped from InputReader as a global\nstate. However device can have different configurations in the related\nCursorInputMapper.\n\nTest: Manual - adb shell dumpsys input\n\nChange-Id: Ibec2b5ff2533c74924a542fe98d13fa8a88e40ca\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": "07525ef5964f8a0a5b4d9949ab5f7fd17f0e2393",
      "tree": "935256047a5a56e2944856612353430f2d8a616f",
      "parents": [
        "da20b174810825da0a1bf2e84942cb73f38f4dd4"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Mon Oct 03 21:51:26 2022 +0000"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Thu Oct 27 14:44:45 2022 +0000"
      },
      "message": "Determine the bluetooth address of an input device from its uniqueId\n\nSince the Android Bluetooth stack sets a Bluetooth HID device\u0027s unique\nID as the Bluetooth address, attempt to parse the address from an input\ndevice\u0027s uniqueId when connected over the Bluetooth bus.\n\nDD: go/inputdevice-battery-notifications\n\nBug: 243005009\nTest: manual, check dumpsys output\nChange-Id: I710868f2b202e6cebf8b6a3853a6a5c79f3bc671\n"
    },
    {
      "commit": "eca273cd14f1402052b372663995de3024703d54",
      "tree": "ec2d6237b78a4e65c335b7c56720de4a6edfff94",
      "parents": [
        "f71cf3ba9321d3158ec58aca9363c70d88e89b12"
      ],
      "author": {
        "name": "Yeabkal Wubshit",
        "email": "yeabkal@google.com",
        "time": "Wed Oct 05 19:06:40 2022 -0700"
      },
      "committer": {
        "name": "Yeabkal Wubshit",
        "email": "yeabkal@google.com",
        "time": "Mon Oct 24 21:17:41 2022 +0000"
      },
      "message": "Create Native VelocityTracker#isAxisSupported Function\n\nThis will eventually be used by the Java layer, by the #isAxisSupported\nAPI.\n\nBug: 32830165\nTest: unit test\nChange-Id: Iebd040403797f14b3cd99b2d6fabb50b1ef7998e\n"
    },
    {
      "commit": "d3d4060123e774d38f69c85d7ae4cb3d66f0e2d8",
      "tree": "09efacfa01cffaf5d3f6025dab58b2f2539e2c8d",
      "parents": [
        "632cbc838ba783c82c0625cf2089ec3d04d743f8"
      ],
      "author": {
        "name": "Sandro Meier",
        "email": "sandromeier@google.com",
        "time": "Wed Oct 19 16:18:26 2022 +0000"
      },
      "committer": {
        "name": "Sandro Meier",
        "email": "sandromeier@google.com",
        "time": "Wed Oct 19 16:40:01 2022 +0000"
      },
      "message": "Add INVALID_INPUT_DEVICE_ID to IInputConstants\n\nThe ID is used to reference invalid input devices before they are\ninitialized. For consistency the INVALID_INPUT_DEVICE_ID is also added\nto the ReservcedInputDeviceId enum.\n\nTest: Tested as part of ag/20002215\nBug: 244516415\nChange-Id: I2055e8668780ecbcfdc201422fc1fd5ab3549ab6\n"
    },
    {
      "commit": "167c270ea82781d0a003c05292ff623fcb5f8243",
      "tree": "56ae55e642e0f39224a8b5bba37c62d591387a8d",
      "parents": [
        "f5b4d7a828fe02044a92da0f2f512ee2763d6539"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Wed Sep 14 00:37:24 2022 +0000"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Mon Oct 10 19:09:07 2022 +0000"
      },
      "message": "Determine whether an input device supports USI using IDC files\n\nIt is necessary to identify a USI device so that additional logic can be\napplied to the battery information that is exposed via USI.\n\nBug: 243005009\nTest: manual, check dumpsys output\nChange-Id: I697008e6600ef16b7ecde85c99732759747b8a9b\n"
    },
    {
      "commit": "6f8b77e330b1325cdc299a42a1ef19b1ef621597",
      "tree": "9af5a781ab6a75b5d76201698efffa6aac6dd37d",
      "parents": [
        "77d208672d6abb82eef8c8c0cf41f4df923aba07",
        "82b37d6e0bc12bd7218d2986df061320069f962a"
      ],
      "author": {
        "name": "Vaibhav Devmurari",
        "email": "vdevmurari@google.com",
        "time": "Wed Sep 28 09:39:41 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Sep 28 09:39:41 2022 +0000"
      },
      "message": "Merge \"Add support for detecting Keyboard backlight using sysfs node\""
    },
    {
      "commit": "9b9732cf5ce671c185e1fe671dba68c759aa507c",
      "tree": "eb7bbc0128f6e3b142ce676fd38c7845fb3ab0c7",
      "parents": [
        "d9858770607f5fd43820cb69f4b1382275a691e4",
        "2800fb0c6b56711c6daf70491270dbea89fbf660"
      ],
      "author": {
        "name": "Harry Cutts",
        "email": "hcutts@google.com",
        "time": "Mon Sep 26 14:19:40 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Sep 26 14:19:40 2022 +0000"
      },
      "message": "Merge \"Use TWO_FINGER_SWIPE classification for touchpad scroll events\""
    },
    {
      "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": "82b37d6e0bc12bd7218d2986df061320069f962a",
      "tree": "a663b227765f9984a678a773311976b411755e22",
      "parents": [
        "52b3c475ed1c6cab0c5e232a3aeb68706c5b22bf"
      ],
      "author": {
        "name": "Vaibhav Devmurari",
        "email": "vdevmurari@google.com",
        "time": "Mon Sep 12 13:36:48 2022 +0000"
      },
      "committer": {
        "name": "Vaibhav Devmurari",
        "email": "vdevmurari@google.com",
        "time": "Thu Sep 22 21:57:25 2022 +0000"
      },
      "message": "Add support for detecting Keyboard backlight using sysfs node\n\nAdd new light type for Keyboard backlight and corresponding\ndetection logic. Also, refactor PeripheralController logic to\nsupport Light type and light capabilities similar to how it is\nhandled on Java side of code.\n\nTest: atest inputflinger_tests\nBug: 245506418\nChange-Id: Ic69e42555bf57a66683fcf359169869ee2a00749\n"
    },
    {
      "commit": "73c9508bef2005b2314870dbfd1db19fb0a943eb",
      "tree": "5f1efe1f49183536bff73f3f9ec6669343f0f2ef",
      "parents": [
        "52b3c475ed1c6cab0c5e232a3aeb68706c5b22bf"
      ],
      "author": {
        "name": "Yeabkal Wubshit",
        "email": "yeabkal@google.com",
        "time": "Thu Sep 22 10:12:33 2022 +0000"
      },
      "committer": {
        "name": "Yeabkal Wubshit",
        "email": "yeabkal@google.com",
        "time": "Thu Sep 22 18:59:30 2022 +0000"
      },
      "message": "VelocityTracker Cleanups: Differential Axes Support Follow Up\n\nThis CL follows ag/19950271. It:\n- fixes a param name, to make it consistent with the latest terminology we use (and the one we use in the .cpp file)\n- add comment to the VelocityTrackr#createStrategy function about this param\n\nBug: 32830165\nChange-Id: Idf90547c6b9629e98ee9014549085a1db9024700\nTest: tests unaffected (trivial naming/comment change)\n"
    },
    {
      "commit": "0bb5e59dd59b48b2878fff92c1220707420c8d68",
      "tree": "0dfbbd578eadd182e4396db5fe36920bba9e38b0",
      "parents": [
        "67b3ab097b8128255f56a9e5d6db2462e7f1e9d1"
      ],
      "author": {
        "name": "Yeabkal Wubshit",
        "email": "yeabkal@google.com",
        "time": "Wed Sep 14 01:22:28 2022 -0700"
      },
      "committer": {
        "name": "Yeabkal Wubshit",
        "email": "yeabkal@google.com",
        "time": "Fri Sep 16 14:07:46 2022 -0700"
      },
      "message": "Add VelocityTracker Support for AXIS_SCROLL\n\nAXIS_SCROLL motion events report diffs in movement between successive\nevents, so we have introduced a concept of cumulative-axes in this CL to\nsupport AXIS_SCROLL.\nDemo: go/rsb-fling-demo-1\n\nBug: 32830165\nTest: atest libinput_tests; manual fling with rotating side button\n\nChange-Id: Ic124b5c6d4d4bc30d1a45c49be4e5e8856d6c974\n"
    },
    {
      "commit": "67b3ab097b8128255f56a9e5d6db2462e7f1e9d1",
      "tree": "f5ab5bd45e36cd0ba63730b5d589d73fc4b32ec4",
      "parents": [
        "62028791f00f830c2229a998333b3ba3265bae3a"
      ],
      "author": {
        "name": "Yeabkal Wubshit",
        "email": "yeabkal@google.com",
        "time": "Fri Sep 16 00:18:17 2022 -0700"
      },
      "committer": {
        "name": "Yeabkal Wubshit",
        "email": "yeabkal@google.com",
        "time": "Fri Sep 16 00:18:17 2022 -0700"
      },
      "message": "VelocityTracker Cleanups\n\nThis is a minor clean-up CL on changes made in recent CLs to make\nVelocityTracker 1D (see ag/19911102 and ag/19921486).\n\nBug: 32830165\nTest: build and tests unaffected\nChange-Id: I36eead3e8191855a8c87fae5c1ef1fc9424ee6b9\n"
    },
    {
      "commit": "15c2fea937a9c68b4d3f55ee419eb747b83ee37c",
      "tree": "f207d770be07f1cde31d3b2247c550ac611d10fb",
      "parents": [
        "315a7c26e8e362adf0352c9af7c8790d8c362f82",
        "47ff7080aef55395f038e4bdae59c95505dde51a"
      ],
      "author": {
        "name": "Yeabkal Wubshit",
        "email": "yeabkal@google.com",
        "time": "Tue Sep 13 23:44:04 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 13 23:44:04 2022 +0000"
      },
      "message": "Merge \"Improve VelocityTracker Strategy Handling\""
    },
    {
      "commit": "47ff7080aef55395f038e4bdae59c95505dde51a",
      "tree": "f71c3ee3541f0b145efced7df13bdb736a9c9e95",
      "parents": [
        "0d169d903b2ad1892a06df4c232e006689d5e05d"
      ],
      "author": {
        "name": "Yeabkal Wubshit",
        "email": "yeabkal@google.com",
        "time": "Sat Sep 10 23:09:15 2022 -0700"
      },
      "committer": {
        "name": "Yeabkal Wubshit",
        "email": "yeabkal@google.com",
        "time": "Tue Sep 13 10:57:36 2022 -0700"
      },
      "message": "Improve VelocityTracker Strategy Handling\n\nThe native VelocityTracker class has been made 1-dimensional to allow\nsupport for axes beyond the historically-supported X/Y axes. This means\nthat a given VelocityTracker instance does not necessarily handle data\nfor all supported axes. As such, this CL sets up tracking strategy for\nan axis only on the first occassion a data arrives for the axis.\nFurthermore, to support use cases where different strategies may suit\ndifferent axes better, we have introduced per-axis default strategies.\n\nBug: 32830165\nTest: atest libinput_tests; manual on-device fling tests\nChange-Id: I3f7115fdcec78d1577e90e9a55175e8868bf2dfb\n"
    },
    {
      "commit": "f824fbb0c5ffc098dbb822e9d8278a30ab63e8e2",
      "tree": "160cf52c24d762c281bb243561cea662a57d1f08",
      "parents": [
        "0d169d903b2ad1892a06df4c232e006689d5e05d",
        "c08b0dbd8b4b3090734144208b192c2d374f14b0"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Mon Sep 12 13:30:02 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Sep 12 13:30:02 2022 +0000"
      },
      "message": "Merge \"libinput: Use #pragma once instead of explicit define guards\""
    },
    {
      "commit": "0d169d903b2ad1892a06df4c232e006689d5e05d",
      "tree": "549c402cec06793d7e98acaef3ad432b145fc9eb",
      "parents": [
        "b6231c90507c01e79d0c011384ec55da7bbb0122",
        "384ab0fa6432f8b61ae4cd990480fe6a16228dd0"
      ],
      "author": {
        "name": "Yeabkal Wubshit",
        "email": "yeabkal@google.com",
        "time": "Sat Sep 10 04:24:20 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Sep 10 04:24:20 2022 +0000"
      },
      "message": "Merge \"Reland \"Make VelocityTracker 1D\" (--try 2)\""
    },
    {
      "commit": "c08b0dbd8b4b3090734144208b192c2d374f14b0",
      "tree": "ca15d1240cdd20585676edc3d21ebde5f6e48043",
      "parents": [
        "5404600a170f7d095ee51a7469aaab900e9491b7"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Sat Sep 10 00:57:15 2022 +0000"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Sat Sep 10 00:57:54 2022 +0000"
      },
      "message": "libinput: Use #pragma once instead of explicit define guards\n\nThe #pragma once directive is commonly used by modern cpp code, and\nsupport for its use in Andorid is proposed in go/droidcppstyle.\n\nBug: 245989146\nTest: Build, Presubmit\nChange-Id: Ib7852f1a343864dff46e7bc616d707bc7d5bf512\n"
    },
    {
      "commit": "ce8d4855c3c91b627cd6c9ea3a82fd8ca7af1ae9",
      "tree": "13a35c885fa04eb051baeac64d7c45c445956682",
      "parents": [
        "d8649e7ed95fd88463c4153833ca77abc706de06",
        "c13ff081db31e93ee3b0a96bb007704c61d10a02"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Sep 09 22:30:36 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 09 22:30:36 2022 +0000"
      },
      "message": "Merge \"Resolve associated display and pointer display in CursorInputMapper\""
    },
    {
      "commit": "c13ff081db31e93ee3b0a96bb007704c61d10a02",
      "tree": "c9b0d3ea2930da7e0c4935a32fd54b5977a6ab30",
      "parents": [
        "5404600a170f7d095ee51a7469aaab900e9491b7"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Thu Sep 08 22:03:30 2022 +0000"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Fri Sep 09 20:19:39 2022 +0000"
      },
      "message": "Resolve associated display and pointer display in CursorInputMapper\n\nAn InputDevice can be associated with a display, in which case it should\nonly generate events for that display. A mouse generally generates\nevents for whichever display is currently showing the mouse cursor.\n\nIn the case where a mouse InputDevice is associated with a display, we\nneed to make sure that it only generates events when the mouse cursor is\non the associated display.\n\nAdditionally, any display-dependent configuration, such as orientation,\nshould depend on whichever display the device is configured for.\n\nBug: 236075874\nTest: atest inputflinger_tests\nChange-Id: I1021c121c1eae768585124d312f5187be90da666\n"
    },
    {
      "commit": "384ab0fa6432f8b61ae4cd990480fe6a16228dd0",
      "tree": "c8678a3a9d9643ddb36cdf85031f43e9bbb04ca2",
      "parents": [
        "2f9677126ef0d8bc17d82bedb31990f6f154e00f"
      ],
      "author": {
        "name": "Yeabkal Wubshit",
        "email": "yeabkal@google.com",
        "time": "Fri Sep 09 16:39:18 2022 +0000"
      },
      "committer": {
        "name": "Yeabkal Wubshit",
        "email": "yeabkal@google.com",
        "time": "Fri Sep 09 17:56:39 2022 +0000"
      },
      "message": "Reland \"Make VelocityTracker 1D\" (--try 2)\n\nThis fixes a bug where stale velocities were not cleaned up during calls\nto get updated velocities.\n86f72a3882ab4994dfbb410ebebc9ab3a75b8b16\n\nTopic for the revert which is being rolled-forward: https://googleplex-android-review.git.corp.google.com/q/topic:revert-19762050-generic_vt-XWGGUQUHYR\n\nBug: 32830165\nTest: VelocityTracker_test unaffected (atest libinput_tests)\n\nChange-Id: Ib706e76b9502e262eabfd221bd741e5faaee1ed5\n"
    },
    {
      "commit": "86f72a3882ab4994dfbb410ebebc9ab3a75b8b16",
      "tree": "05c5c6a2f9ddb7db510ecde9e43c383810f8e912",
      "parents": [
        "37acf6e3b7ff4b30567eb3210560db3d73c20a58"
      ],
      "author": {
        "name": "Sam Dubey",
        "email": "dubeyshubham@google.com",
        "time": "Fri Sep 09 05:09:34 2022 +0000"
      },
      "committer": {
        "name": "Sam Dubey",
        "email": "dubeyshubham@google.com",
        "time": "Fri Sep 09 05:09:34 2022 +0000"
      },
      "message": "Revert \"Make VelocityTracker 1D\"\n\nRevert \"Conform to 1D VelocityTracker\"\n\nRevert submission 19762050-generic_vt\n\nReason for revert: b/245842062\nReverted Changes:\nI181af7a03:Make VelocityTracker 1D\nIb0be0fc38:Conform to 1D VelocityTracker\n\nChange-Id: Ife5675e4abdf154eb6466f687e52b6a427860d26\n"
    },
    {
      "commit": "37acf6e3b7ff4b30567eb3210560db3d73c20a58",
      "tree": "dc84a2ffd7f3ae5f1c9540c9499f5d8f20d6b11c",
      "parents": [
        "89eca3248127fbe97a8669725bd2649163dd7831"
      ],
      "author": {
        "name": "Yeabkal Wubshit",
        "email": "yeabkal@google.com",
        "time": "Sat Aug 27 05:48:51 2022 +0000"
      },
      "committer": {
        "name": "Yeabkal Wubshit",
        "email": "yeabkal@google.com",
        "time": "Wed Sep 07 16:25:32 2022 -0700"
      },
      "message": "Make VelocityTracker 1D\n\nCurrently, VelocityTracker is strictly tied to X and Y axes. It\u0027s APIs\nact on both axes, and its component structs (e.g. Position, Estimator)\nare tied to both X and Y axes. As a step towards supporting more axes\nfor velocity tracking, this change:\n- removes the Position struct: stores/processes data as pure floats, one\n  axis at a time\n- makes Estimator and Strategy specific to a single axis, instead of\n  dealing with both/only X and Y at the same time\nFurthermore, we have pulled into VelocityTracker the logic to compute\nall velocity. This helps making the immediate JNI layer light-weight in\naddition to allowing us to test the logic (which is non-trivial and\nbenefits from tests).\n\nBug: 32830165\nTest: VelocityTracker_test unaffected (atest libinput_tests)\n\nChange-Id: I181af7a033eb647e9cb97db9b86a36ae972290a5\n"
    },
    {
      "commit": "dd82b8ebbd271b5f48f8bbc620a9f5b549b0905e",
      "tree": "20919ba093a93101ca41825d8c11dfe8dc97beed",
      "parents": [
        "501a72a312b06d5a3438ca4a55f73749d1278162"
      ],
      "author": {
        "name": "Vaibhav Devmurari",
        "email": "vdevmurari@google.com",
        "time": "Tue Aug 16 15:34:01 2022 +0000"
      },
      "committer": {
        "name": "Vaibhav Devmurari",
        "email": "vdevmurari@google.com",
        "time": "Thu Aug 25 15:32:33 2022 +0000"
      },
      "message": "Fetch country code information from Device sysfs path\n\nHID devices report the country code via sysfs. Need to read it\nand pass it and save it as a member variable to InputDevice\n\nIn subsequent CLs will use it to auto-detect a layout for PK.\nMore information in DD: go/pk_auto_layout_detection\n\nTest: atest inputflinger_tests:InputReaderTest\nBug: 242715614\nChange-Id: I73ca7518dbee3e563c41024bb3ed41261c8d7846\n"
    },
    {
      "commit": "fc6c7f799acfdfa4ed52bc160351ac393d36a476",
      "tree": "8d008b1244886d152c4fce4f17b4b73985b2594e",
      "parents": [
        "0435883aa8a75daab9c1e5ec7ca2f5e04b5d229b",
        "ae4ff289d1ac2ac4f5a5b5bac9c4eb3b837a464b"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Aug 23 21:56:43 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 23 21:56:43 2022 +0000"
      },
      "message": "Merge changes I086b5045,I753fb07a,Iea2bb7fd\n\n* changes:\n  Improve EventHub const-correctness\n  Refactor AssociatedDevice initialization in EventHub\n  EventHub: Associate AsociatedDevice using sysfs path, not descriptor\n"
    },
    {
      "commit": "ae4ff289d1ac2ac4f5a5b5bac9c4eb3b837a464b",
      "tree": "d00732b7e955a441dc3590f05143b0929b1450ef",
      "parents": [
        "cb42b4719fc24da4bc0b5a008e87ff1a350ff9b7"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Tue Aug 23 16:21:39 2022 +0000"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Tue Aug 23 20:15:07 2022 +0000"
      },
      "message": "Improve EventHub const-correctness\n\nEnsure that all methods that \"get\" state from event hub are\nconst-correct. While some \"set\" methods can also be const in event hub\nbecause they write to the system (side effect) instead of changing\nstate, we leave these as non-const to make it easier for testing.\n\nBug: None\nTest: atest inputflinger_tests\nChange-Id: I086b50458203a2395b1960e2bc1102610a3c0801\n"
    },
    {
      "commit": "aa9e9d25f15c100e7da87f6465ba50b45f7bf552",
      "tree": "839caf6cfcbdfaa5c490afb006bf82ea05c007e9",
      "parents": [
        "f29711cf60a1561306a23622a6f16b2cee414376"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Fri Aug 05 11:13:31 2022 -0700"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Mon Aug 08 14:09:20 2022 -0700"
      },
      "message": "Use std::list to store Behavior objects\n\nThere\u0027s a bug about behavior being null. It\u0027s not clear how it gets\nthere, but before this CL, there was a custom implementation of linked\nlist to store the behaviours. Instead of implementing a\ncustom linked list, let\u0027s switch over to std::list to remove the\npossibility of this bug.\n\nBug: 238626341\nTest: atest libinput_tests inputflinger_tests KeyCharacterMapTest\nChange-Id: I98e20de7d40b74e4af085cdafb68f867e6ebfe19\n"
    },
    {
      "commit": "12300c14b96851ce39ea78d03c103a2dc2db9e01",
      "tree": "ebd18e7eaf69263502e9a1a0eae1f206ffa8523e",
      "parents": [
        "cef0eb8ea5bbbd18af936c04803408c0a2e0a28f"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Fri Aug 05 12:30:36 2022 -0700"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Fri Aug 05 14:31:10 2022 -0700"
      },
      "message": "Return pointer from getKeyBehavior\n\nThis function returns bool and outPointer, which is redundant. Return\npointer directly.\n\nBug: 238626341\nTest: atest libinput_tests inputflinger_tests\nChange-Id: I7b945cd3a485afbb3f0ef0aef489e87e8358f4a7\n"
    },
    {
      "commit": "cef0eb8ea5bbbd18af936c04803408c0a2e0a28f",
      "tree": "256e1d0286af36b9e4ef36bff54449486c9f4649",
      "parents": [
        "400294a8b01c2f432e7a6e8a578b268afb52e68c"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Fri Aug 05 12:14:46 2022 -0700"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Fri Aug 05 14:30:12 2022 -0700"
      },
      "message": "Remove unused variable outKey\n\nThis output variable is never used, delete it.\n\nBug: 238626341\nTest: atest libinput_tests inputflinger_tests\nChange-Id: Ide7d91f83ae88b2273519eabe1e8cb58ce89a9e5\n"
    },
    {
      "commit": "f5740eb9b9c2ea7d3e9e9d71077ae28e63f524ff",
      "tree": "e91e2b5f30992dbcc90acfb967d4230471e11e7c",
      "parents": [
        "f9323e22ab5b78ab37a4a39865061f5b2cf5f2e7",
        "433221fece28438702cb0d5ec28944045fcb843f"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Aug 04 03:28:08 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Aug 04 03:28:08 2022 +0000"
      },
      "message": "Merge \"Dynamic logs for motions in UnwantedInteractionBlocker\" into tm-qpr-dev am: 1cf6d7f4ca am: 433221fece\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/19371989\n\nChange-Id: I9483dfafbe2e7dd29df4124fb892ab9822392287\nSigned-off-by: Automerger Merge Worker \u003candroid-build-automerger-merge-worker@system.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "433221fece28438702cb0d5ec28944045fcb843f",
      "tree": "af898a7087493861f657fb1e044d4dd4ead48cb5",
      "parents": [
        "7df21869ed556179269a7bd57fd58bca6b16a44b",
        "1cf6d7f4cacfed91900c1af5d1a2872ae04dc8ff"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Aug 04 03:01:59 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Aug 04 03:01:59 2022 +0000"
      },
      "message": "Merge \"Dynamic logs for motions in UnwantedInteractionBlocker\" into tm-qpr-dev am: 1cf6d7f4ca\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/19371989\n\nChange-Id: Ia825a731a96eb792e99505efff622ada4881ad24\nSigned-off-by: Automerger Merge Worker \u003candroid-build-automerger-merge-worker@system.gserviceaccount.com\u003e\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": "4f94c1ad3fe73105a34178af3a086aa571b8bf78",
      "tree": "9798dc5bce1eec050ef9a3460f3ca5064f128fef",
      "parents": [
        "4f4aff66c60ed16e9f089693ef0a64ea227c9a62"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Wed Jul 13 07:29:51 2022 -0700"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Wed Jul 13 12:07:08 2022 -0700"
      },
      "message": "Avoid KeyedVector and String8 in PropertyMap\n\nUpdate the external-facing APIs of PropertyMap to reduce the dependency\non libutils. Here we remove String8 and KeyedVector from the header\nfile. Eventually the Tokenizer can be moved to libinput as well, which\nwould allow us to further reduce this dependency.\n\nBug: 233177558\nTest: atest libinput_tests inputflinger_tests\nChange-Id: I58965ccf7dbd5514c8526f15e713f0e26e498c83\n"
    },
    {
      "commit": "b82e19189e541e1f877bb2c100c1a971c7311e31",
      "tree": "0d55ddc568d8305a59d728a84c5d04de9ef0e9c0",
      "parents": [
        "86e65ba55b2bbd27c725634e1deaca590dacb472",
        "3e0ac4c52dd16303ea52f373b0148377c830d313"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jun 30 20:40:40 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Jun 30 20:40:40 2022 +0000"
      },
      "message": "Merge \"Consolidate input OWNERS files\" am: 6442a2723c am: 43847ac9d6 am: 953f3da55e am: 8c5cbb3747 am: 3e0ac4c52d\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/native/+/2021055\n\nChange-Id: I1d7675bfbe0cc0d8e80640f31bd208bee9eb8e54\nSigned-off-by: Automerger Merge Worker \u003candroid-build-automerger-merge-worker@system.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "43847ac9d61e74673cd20141e7667a8cac473a5d",
      "tree": "6e5daed1feef86dc0e142cad03131d308dc7f90b",
      "parents": [
        "70604273a5e1299b2d89e4d59383af86d6e4ae57",
        "6442a2723cd3b7564ad7c0a0bd9ca343a8b4b211"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jun 30 18:57:00 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Jun 30 18:57:00 2022 +0000"
      },
      "message": "Merge \"Consolidate input OWNERS files\" am: 6442a2723c\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/native/+/2021055\n\nChange-Id: I734f4af018ace65f63814019cef00c4bcb7bb636\nSigned-off-by: Automerger Merge Worker \u003candroid-build-automerger-merge-worker@system.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "6442a2723cd3b7564ad7c0a0bd9ca343a8b4b211",
      "tree": "72c3e3a9b55b365e45b62a1edd63c564638f635a",
      "parents": [
        "0d68c19a293bf3d7159960c801e1a18e5e05d66f",
        "496c8b7232516f0c3970a7e8855f97f6a2d2012f"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jun 30 18:32:00 2022 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jun 30 18:32:00 2022 +0000"
      },
      "message": "Merge \"Consolidate input OWNERS files\""
    },
    {
      "commit": "496c8b7232516f0c3970a7e8855f97f6a2d2012f",
      "tree": "ea55283a0c44ab74bd4ffebc643883a8bca336c6",
      "parents": [
        "f81decc8b72d5d8d5ae928d1c5755c898fe87db9"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Thu Mar 10 18:03:23 2022 +0000"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Thu Jun 30 18:04:15 2022 +0000"
      },
      "message": "Consolidate input OWNERS files\n\nMake all input OWNERS file point to frameworks/base/INPUT_OWNERS.\n\nBug: None\nTest: upload\nChange-Id: Ibfe3e65d30330ac57554f52506bc43a04abb99b4\n"
    },
    {
      "commit": "d945d3e55ecd98d6554a9fdf6dfa1beb1c64a189",
      "tree": "3495973415e51d81fd3113af36d89533fbcce665",
      "parents": [
        "3dee0df77f44dd85b0f03b14db7966e1ba8faeb3"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Wed May 18 09:42:52 2022 -0700"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Thu Jun 16 17:35:36 2022 +0000"
      },
      "message": "Do not load keylayout if required kernel module is missing\n\nSome key layouts require the presence of a specific kernel module. If\nthe kernel module is not present, the layout should not be loaded.\n\nIn this CL, we add an option to specify which kernel modules / configs\nare needed inside the kl file.\n\nBug: 228005926\nTest: atest libinput_tests\nChange-Id: I0d2ab6298bd41df6dc56120bf0385e10da6c3bfe\nMerged-In: I0d2ab6298bd41df6dc56120bf0385e10da6c3bfe\n"
    },
    {
      "commit": "ec70ee2c604b82f9261513dbd3110ecdc9bc1f13",
      "tree": "f3358f369ed95766f7bb5208c996d01fe361844a",
      "parents": [
        "984f40b9cdd9e19554eb662378bf74a77c4651ff"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Wed May 18 09:42:52 2022 -0700"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Wed Jun 15 18:59:19 2022 +0000"
      },
      "message": "Do not load keylayout if required kernel module is missing\n\nSome key layouts require the presence of a specific kernel module. If\nthe kernel module is not present, the layout should not be loaded.\n\nIn this CL, we add an option to specify which kernel modules / configs\nare needed inside the kl file.\n\nBug: 228005926\nTest: atest libinput_tests\nChange-Id: I0d2ab6298bd41df6dc56120bf0385e10da6c3bfe\nMerged-In: I0d2ab6298bd41df6dc56120bf0385e10da6c3bfe\n"
    },
    {
      "commit": "984f40b9cdd9e19554eb662378bf74a77c4651ff",
      "tree": "4dc3fa887dc20a35a08c0fec66c10b7294f22371",
      "parents": [
        "0a448ac7ce04fae4f6631a78ec9314873fa7c577"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Wed May 18 09:45:54 2022 -0700"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Tue Jun 14 17:09:25 2022 -0700"
      },
      "message": "Avoid using KeyedVector in KeyLayoutMap\n\nThere\u0027s a supported alternative, std::unordered_map, that we should be\nusing instead.\n\nBug: 228005926\nTest: atest libinput_tests inputflinger_tests\nMerged-In: Ia1f41d17d7ee912534edffe1a1e7655866fa54c6\nChange-Id: Ia1f41d17d7ee912534edffe1a1e7655866fa54c6\n(cherry picked from commit 577962e532f235c67ea037f0fd7754834b1ff662)\n"
    },
    {
      "commit": "0a448ac7ce04fae4f6631a78ec9314873fa7c577",
      "tree": "1b5cb069696f8e543c88b1101706de3b1dc39d90",
      "parents": [
        "0292d80f469a4a2b0d8057af125392b73baae375"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Wed May 18 12:30:16 2022 -0700"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Tue Jun 14 16:47:10 2022 -0700"
      },
      "message": "Refactor input code for require_kernel_config parameter\n\nAs part of the next commit to allow kl files to specify a required\nkernel config, some small refactorings were done. Move those here to a\nseparate CL to make it easier to review.\n\nMerge conflict resolution:\nNeeded to make some small changes to account for the lack of ag/13538321\nin aosp repo. These are related to \"NamedEnum\" API change.\n\nBug: 228005926\nTest: atest libinput_tests\nMerged-In: Iab06bb6ef44807308ee2b3e6b8a0c780bb748f09\nChange-Id: Iab06bb6ef44807308ee2b3e6b8a0c780bb748f09\n(cherry picked from commit 5ed8eaab67ad7ec3ac1110d696f5d89596a5a887)\n"
    },
    {
      "commit": "53f0a5e01c0b24d0ed18dd926b7959e21a883540",
      "tree": "d30d27956be6b3a95356019656e8309b1e500e29",
      "parents": [
        "145c9735fa3ed34a0accfb9c8a7e2bb1b1935f88"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Wed May 18 09:45:54 2022 -0700"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Fri Jun 10 20:23:41 2022 +0000"
      },
      "message": "Avoid using KeyedVector in KeyLayoutMap\n\nThere\u0027s a supported alternative, std::unordered_map, that we should be\nusing instead.\n\nBug: 228005926\nTest: atest libinput_tests inputflinger_tests\nMerged-In: Ia1f41d17d7ee912534edffe1a1e7655866fa54c6\nChange-Id: Ia1f41d17d7ee912534edffe1a1e7655866fa54c6\n(cherry picked from commit 577962e532f235c67ea037f0fd7754834b1ff662)\n"
    },
    {
      "commit": "ac7f2e7be3759808b09a7e64d9e9510c4fc21e10",
      "tree": "0e68f6091983b70eb76e39324c75007411fb40dd",
      "parents": [
        "bcacbdb9d6297eb135a66ce5ed8d1885375c9a05"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Wed May 18 12:30:16 2022 -0700"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Fri Jun 10 16:28:24 2022 +0000"
      },
      "message": "Refactor input code for require_kernel_config parameter\n\nAs part of the next commit to allow kl files to specify a required\nkernel config, some small refactorings were done. Move those here to a\nseparate CL to make it easier to review.\n\nBug: 228005926\nTest: atest libinput_tests\nMerged-In: Iab06bb6ef44807308ee2b3e6b8a0c780bb748f09\nChange-Id: Iab06bb6ef44807308ee2b3e6b8a0c780bb748f09\n(cherry picked from commit 5ed8eaab67ad7ec3ac1110d696f5d89596a5a887)\n"
    },
    {
      "commit": "fde85cb50d4f1879af371acd3fbe146c44a0234b",
      "tree": "5035819f74046df9309e92d17dde6ae41257d901",
      "parents": [
        "5074de7861d6246a6e6f690ae2629f92c74586c7"
      ],
      "author": {
        "name": "Brandon Pollack",
        "email": "brpol@google.com",
        "time": "Thu Jun 02 07:00:03 2022 +0000"
      },
      "committer": {
        "name": "Brandon Pollack",
        "email": "brpol@google.com",
        "time": "Thu Jun 09 04:26:01 2022 +0000"
      },
      "message": "Change POINTER_ICON_STYLE enum to a type safe enum class\n\nTest: Current tests all pass, this is a static type change, not\na functional change.\n\nChange-Id: I1ee4861c025bfdc301cb73adec700133548b29a5\n"
    },
    {
      "commit": "44c6cc8685328179c1d30ab83aaf85920e42403d",
      "tree": "e533de5e33eaff8e1e9a6e1c98ae43a74912dfc6",
      "parents": [
        "e3ba7171930f39753b5f03bedf1bf3e1d6fdea39"
      ],
      "author": {
        "name": "Brandon Pollack",
        "email": "brpol@google.com",
        "time": "Thu Jun 02 01:43:46 2022 +0000"
      },
      "committer": {
        "name": "Brandon Pollack",
        "email": "brpol@google.com",
        "time": "Tue Jun 07 02:30:49 2022 +0000"
      },
      "message": "Move pointer icon style enum to libinput headers\n\nTest: NA\nChange-Id: I0aab4466b08b30e1a8c31e739f5ba26e15c29d02\n"
    },
    {
      "commit": "fdbecf039e42bb17905932d49a789869a43cfe00",
      "tree": "ea1b864bcb72e7a970dc61ee3e2d336c6211d20a",
      "parents": [
        "d5d639e9b71078989355f7833ab47e5c0b44b53c",
        "a9fd82c447a39ad44a6a4cb908147424e280ba39"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Jun 04 01:30:32 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Jun 04 01:30:32 2022 +0000"
      },
      "message": "Merge \"Do not load keylayout if required kernel module is missing\""
    },
    {
      "commit": "8e127da5554bde4d77a74f2ba824d2b2cd664db7",
      "tree": "03c7a6c73a517f00a57e519d4748fc18675a0c8f",
      "parents": [
        "3fc7a61afc5426bee49bbc2f6c6ef372343c1bef",
        "b9113f6460d16c9b169b61240a9f7a262129a3c9"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Jun 04 00:17:35 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Sat Jun 04 00:17:35 2022 +0000"
      },
      "message": "Merge \"Validate indices when requesting PointerCoords\" into tm-dev am: 9bc7330279 am: b9113f6460\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/18607499\n\nChange-Id: If1c01e5bb20b695da4d16a7bd363d3f36307ec6b\nSigned-off-by: Automerger Merge Worker \u003candroid-build-automerger-merge-worker@system.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "a9fd82c447a39ad44a6a4cb908147424e280ba39",
      "tree": "7f1b286a3580945062c9440b283e34d177eee048",
      "parents": [
        "960a83989c20fd80a3bec6b6f91c39ca33cd790c"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Wed May 18 09:42:52 2022 -0700"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Fri Jun 03 15:02:55 2022 -0700"
      },
      "message": "Do not load keylayout if required kernel module is missing\n\nSome key layouts require the presence of a specific kernel module. If\nthe kernel module is not present, the layout should not be loaded.\n\nIn this CL, we add an option to specify which kernel modules / configs\nare needed inside the kl file.\n\nBug: 228005926\nTest: atest libinput_tests\nChange-Id: I0d2ab6298bd41df6dc56120bf0385e10da6c3bfe\n"
    },
    {
      "commit": "9bc73302795932e7a076858b8a1e736ee8e7b4da",
      "tree": "f05ee657f6266d39f743991e6d73a666d767b9a2",
      "parents": [
        "02165220ca657fa58900d28e02e46c7f8b6cdb73",
        "4ded0b06035d9e69ef88c5ccd0a794eb3104ad5c"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jun 03 21:21:04 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 03 21:21:04 2022 +0000"
      },
      "message": "Merge \"Validate indices when requesting PointerCoords\" into tm-dev"
    },
    {
      "commit": "4ded0b06035d9e69ef88c5ccd0a794eb3104ad5c",
      "tree": "a086c71cc555595eaeefd8a9a186ea52765f9133",
      "parents": [
        "e9d6733f53676f18a716c82425ed61bf030215a4"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Thu May 26 00:36:48 2022 +0000"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Fri Jun 03 18:04:17 2022 +0000"
      },
      "message": "Validate indices when requesting PointerCoords\n\nWe are investigating a crash in PointerCoords. To further understand\nwhat kind of MotionEvents we are dealing with, let\u0027s add some assertions\nto the PointerCoords that we are producing.\n\nIt\u0027s possible that pointerCount is zero, for example. This would help us\nfurther narrow down the issue.\n\nIn this CL, we are also adding a way to dump MotionEvent. This was\nloosely following MotionEvent.java::toString() method. At some point, we\nshould remove the Java method implementation and replace it with a\nsingle jni call to native. That work is out of scope for this CL.\n\nIn the jni layer, we can\u0027t remove the error checking/exception raising,\nbecause someone might be catching an exception and moving on, and a\nnative crash would break this pattern. We can consider doing that in the\nfuture under an experiment flag, though.\n\nBug: 233163975\nTest: printed MotionEvent in log to see the formatting\nChange-Id: I4f641c0cb89526a06146e4c0cf3a5fab2faa42f8\n"
    },
    {
      "commit": "ef1564ca62b1b079278c1913cf57cea10743a352",
      "tree": "949463a2a31b0aa299f1fa923d709f5d9fa4a718",
      "parents": [
        "d04079c80bee88a554f2edd840e9606f79717407"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Wed May 18 09:45:54 2022 -0700"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Fri May 27 15:56:59 2022 -0700"
      },
      "message": "Avoid using KeyedVector in KeyLayoutMap\n\nThere\u0027s a supported alternative, std::unordered_map, that we should be\nusing instead.\n\nBug: 228005926\nTest: atest libinput_tests inputflinger_tests\nChange-Id: Ia1f41d17d7ee912534edffe1a1e7655866fa54c6\n"
    },
    {
      "commit": "5ed8eaab67ad7ec3ac1110d696f5d89596a5a887",
      "tree": "19af75960c4ad54b5173ae0e99afb5992fc2f046",
      "parents": [
        "2f9dd26d4bbdc65a25673a2788789e76be8746b9"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Wed May 18 12:30:16 2022 -0700"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Fri May 20 05:14:05 2022 -0700"
      },
      "message": "Refactor input code for require_kernel_config parameter\n\nAs part of the next commit to allow kl files to specify a required\nkernel config, some small refactorings were done. Move those here to a\nseparate CL to make it easier to review.\n\nBug: 228005926\nTest: atest libinput_tests\nChange-Id: Iab06bb6ef44807308ee2b3e6b8a0c780bb748f09\n"
    },
    {
      "commit": "a91d8576d9fbb5c2fecbcad8a4f3eef0d2fcc30f",
      "tree": "3051ae585a7ec9370f084f358ff1b5addb6aede2",
      "parents": [
        "97c6f77943da3d8646682e48540c0561e3ade620"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Tue May 17 05:03:42 2022 -0700"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Fri May 20 07:14:46 2022 +0000"
      },
      "message": "Add lock to protect UnwantedInteractionBlocker\n\nThe call to \u0027dump\u0027 may come from any thread, and therefore could cause a\ncrash. Add a lock to protect this input stage.\n\nTo run the test:\nadb shell -t \"/data/nativetest64/inputflinger_tests/inputflinger_tests --gtest_filter\u003d\u0027*Dump*\u0027 --gtest_repeat\u003d100000 --gtest_break_on_failure\"\n\nBefore this patch, the test failed after ~5K - ~13K iterations (took\n10-20 seconds to crash).\n\nBug: 232645962\nTest: m inputflinger_tests \u0026\u0026 adb sync data \u0026\u0026 \u003crun the test\u003e\nChange-Id: I2a199690450bc5bb4a8576aa59075e99d37a531b\n(cherry picked from commit 9f330c542b48dc6edba9aeaff3b3f4bf305713f3)\n"
    },
    {
      "commit": "9f330c542b48dc6edba9aeaff3b3f4bf305713f3",
      "tree": "2db076dc9a4df968ff52f6b4172bd6a4a95589ce",
      "parents": [
        "639db6527174037f5a95385caf9cdd5cbadc56e0"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Tue May 17 05:03:42 2022 -0700"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Thu May 19 02:55:32 2022 -0700"
      },
      "message": "Add lock to protect UnwantedInteractionBlocker\n\nThe call to \u0027dump\u0027 may come from any thread, and therefore could cause a\ncrash. Add a lock to protect this input stage.\n\nTo run the test:\nadb shell -t \"/data/nativetest64/inputflinger_tests/inputflinger_tests --gtest_filter\u003d\u0027*Dump*\u0027 --gtest_repeat\u003d100000 --gtest_break_on_failure\"\n\nBefore this patch, the test failed after ~5K - ~13K iterations (took\n10-20 seconds to crash).\n\nBug: 232645962\nTest: m inputflinger_tests \u0026\u0026 adb sync data \u0026\u0026 \u003crun the test\u003e\nChange-Id: I2a199690450bc5bb4a8576aa59075e99d37a531b\n"
    }
  ],
  "next": "0ced3cc7a06eb013fa935f59285a0ab043efa3a3"
}
