)]}'
{
  "log": [
    {
      "commit": "53a896dcf9e5a03ff5433665cefbcb63fb934b16",
      "tree": "f427ac59d30a952a9d36756d64dd760deb914005",
      "parents": [
        "59ffb3c974e5264fdc1bffee68cc30112161ecc2",
        "9ebf233e8d1c6a6be6e75c71c5be0a3531008b94"
      ],
      "author": {
        "name": "Luke Huang",
        "email": "huangluke@google.com",
        "time": "Tue Oct 06 03:15:37 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Oct 06 03:15:37 2020 +0000"
      },
      "message": "Backport: Update the documentation of ANDROID_RESOLV_NO_CACHE_STORE am: 9ebf233e8d\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/12097328\n\nChange-Id: I405832362cfb720c1f17cccc60866f5351111480\n"
    },
    {
      "commit": "9ebf233e8d1c6a6be6e75c71c5be0a3531008b94",
      "tree": "e292e15de0e624d9ec4411ab6ff012d2894c3293",
      "parents": [
        "8d49c3fbae160936ac44a1213e53e6cf617ee867"
      ],
      "author": {
        "name": "Luke Huang",
        "email": "huangluke@google.com",
        "time": "Sat Jun 20 13:01:33 2020 +0800"
      },
      "committer": {
        "name": "Luke Huang",
        "email": "huangluke@google.com",
        "time": "Mon Sep 07 09:59:15 2020 +0000"
      },
      "message": "Backport: Update the documentation of ANDROID_RESOLV_NO_CACHE_STORE\n\nMake it up-to-date.\n\nTest: N/A\nBug: 150371903\nChange-Id: Ia1402a18d6d466ffbb0357127d7d45cf6c722550\n(cherry picked from commit f1cf6a632da354cff3d8aed54913e1ee2909908e)\n"
    },
    {
      "commit": "5845eafaad804ffe8088cd34cdb52f6f9f9282de",
      "tree": "e2b5f619774b5266d472e3aa42aa880eb8308a99",
      "parents": [
        "5b8a4109f5195e3ca626ab1e6ce9bfd2d1c3f2a8"
      ],
      "author": {
        "name": "Arthur Hung",
        "email": "arthurhung@google.com",
        "time": "Thu Sep 05 16:38:18 2019 +0800"
      },
      "committer": {
        "name": "Arthur Hung",
        "email": "arthurhung@google.com",
        "time": "Mon Dec 09 09:35:18 2019 +0000"
      },
      "message": "Revert \"Fix drag and drop (2/3)\"\n\nThis reverts commit fbe5d9c4233dcd802a122f70ca5a3641fcd556ca.\n\nBug: 137819199\nTest: manual\nChange-Id: I7afec569519b9c69eb03225672db6db141b20241\nMerged-In: I7afec569519b9c69eb03225672db6db141b20241\n(cherry picked from commit 6cbb97591535868d629a562dfd7d8e24865cf551)\n"
    },
    {
      "commit": "22fb2ffc1ebaa66fb57dcf00a3baa8261e6433e3",
      "tree": "55837d509475ddcca545926a676e6737dd51bd1f",
      "parents": [
        "0e7098cf53395b297c5affe30a9356b76fe2ff84"
      ],
      "author": {
        "name": "Krzysztof Kosiński",
        "email": "krzysio@google.com",
        "time": "Tue May 14 19:22:59 2019 -0700"
      },
      "committer": {
        "name": "Krzysztof Kosiński",
        "email": "krzysio@google.com",
        "time": "Thu May 16 13:56:51 2019 -0700"
      },
      "message": "Fix documentation for AHardwareBuffer_(to|from)HardwareBuffer.\n\nThese functions were not showing up in the NDK documentation due to\nmissing Doxygen commands.\n\nBug: https://github.com/android-ndk/ndk/issues/706\nBug: 132738639\nTest: N/A, documentation-only fix\nChange-Id: I329f79da251e62b5f4f05feb7ce837c728e2cb32\n"
    },
    {
      "commit": "b8bff0c45ad4231c32fb677158318cbc78564e96",
      "tree": "8b1d018a7c7b94ef08eb01e3762cd0158dc5c38f",
      "parents": [
        "46b45af96e5916276e1628ca49c44251c93f5eea"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu May 09 09:06:15 2019 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu May 09 09:06:15 2019 -0700"
      },
      "message": "Add IAudioManager method for releasing a recorder.\n\noneway releaseRecorder(int riid)\n  - unregisters a client recorder\n\nBug: 123312504\nTest: start and stop audio recording, check \"dumpsys audio\"\nChange-Id: I894de434a0bfeaaca37601a406feda1c62e060c7\n"
    },
    {
      "commit": "decb6295141a9507886d7536569d17921941a0e6",
      "tree": "fa806e9a492432ee0566fca600abe79d06b19cc8",
      "parents": [
        "8cd204d6cd66f581e10ce574ba72faf1ebf6b592"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Apr 10 16:49:02 2019 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Apr 22 11:01:51 2019 -0700"
      },
      "message": "Add IAudioManager methods for tracking client recording activity\n\naudio_unique_id_t IAudioManager::trackRecorder(IBinder token)\n  - registers a client recorder withing Audio Service,\n    returns a unique tracking recording ID (RIID);\n    Audio Service tracks the lifetime of the recorder using\n    the provided token.\n\noneway recorderEvent(int riid, int event)\n  - updates the current state of the client;\n    only \"started\" and \"stoped\" states are considered.\n\nBug: 123312504\nTest: android.media.cts.AudioRecordingConfigurationTest\n      AudioRecordTest#testAudioRecordInfoCallback\n      MediaRecorderTest#testAudioRecordInfoCallback\n      manual testing using Oboe and Solo test apps\n\nChange-Id: Iddb1b91fff7127ab35ba1d33e3e6c32937ac3081\n"
    },
    {
      "commit": "c041609e5acc6ad6c9d10fd27ef1372917898f27",
      "tree": "7e200acfd6453540d8021dff3d2fee67a8a78c55",
      "parents": [
        "ab54fb71d630fc66f08c5711de55487b0bf29932"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Apr 16 13:20:26 2019 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Apr 18 14:41:16 2019 -0700"
      },
      "message": "Add missing Doxygen groups to new APIs.\n\nDoxygen docs only appear on DAC if they are a part of a group.\n\nTest: None\nBug: http://b/130659204\nChange-Id: I7617c10a04de0fde7fbd1213f1fe6dd0d22208bd\n"
    },
    {
      "commit": "2eb562ae9f4c4903ad684d1ff19f6582a2c8ffe6",
      "tree": "de23299bffaaa39b2b09c6c6bfddfc2cee50b8d9",
      "parents": [
        "a582d0dc0558bac02278e9182cb289025b57c2bc",
        "765ed298fa04d358d2c31a11078e771d8e327a94"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Apr 03 16:48:20 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Apr 03 16:48:20 2019 -0700"
      },
      "message": "Merge \"Add more OWNERS\" am: 55175fdb34 am: 0af6b6cbc6\nam: 765ed298fa\n\nChange-Id: I95c7cba321af1494a636c49804e1660813b1506e\n"
    },
    {
      "commit": "55175fdb344350d030c02c412ac156bde6462804",
      "tree": "37f74061c7636d40c4e3d5ba16d2d0900b3bed3f",
      "parents": [
        "e26963d0055d3bbd1c43e8e13fe4d89dc5281ba0",
        "21747cd2f5c18ea4b4f1b79229ae7b291cf6888f"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Apr 03 22:42:20 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Apr 03 22:42:20 2019 +0000"
      },
      "message": "Merge \"Add more OWNERS\""
    },
    {
      "commit": "21747cd2f5c18ea4b4f1b79229ae7b291cf6888f",
      "tree": "30034bfd6447b99349fa53c493962fc415174a30",
      "parents": [
        "73bc78fe431cdfc821aa128783924987cf6b05b0"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Apr 03 13:57:37 2019 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Apr 03 20:58:37 2019 +0000"
      },
      "message": "Add more OWNERS\n\n+jreck for bitmap \u0026 graphics android/ includes\n+nona for font \u0026 text android/ includes\n\nTest: none\nChange-Id: Ic6ac3defa490fccf2c979a43ee4421e3c52ac02b\n"
    },
    {
      "commit": "cb88a651db44f2953321a7fbb6f24a8efd308b21",
      "tree": "6a633dd9a78a6369c13283927eabf98c6ec13805",
      "parents": [
        "2d84dddc78b42f85302f0f887d90085429f3b969"
      ],
      "author": {
        "name": "Seigo Nonaka",
        "email": "nona@google.com",
        "time": "Fri Mar 29 14:22:49 2019 -0700"
      },
      "committer": {
        "name": "Seigo Nonaka",
        "email": "nona@google.com",
        "time": "Tue Apr 02 17:06:56 2019 -0700"
      },
      "message": "Reorganize system font APIs\n\nThis CL reorganizes the system font related APIs with following things:\n- Move match function from system_fonts.h to new header file.\n  The matching logic is not only for system fonts. The custom font or\n  custom fallback Typeface can be a target of this matcher.\n\n- Introduce new struct AFontMatcher for keeping matching rules.\n  This is for future extensibility. We may add another parameter for\n  querying fonts in future.\n\n- Renamce ASystemFont to AFont and moved to new header file.\n  This is mainly because for future improvements.\n  Currently we don\u0027t have any plan for doing this in Q timeline, but the\n  matcher object can be used for Java Typeface object via JNI. For\n  example, build Typeface in Java and pass down to JNI and query the font\n  for the passed Typeface.\n\nBug: 129559385\nTest: TEMPORARY_DISABLE_PATH_RESTRICTIONS\u003dtrue m ndk-docs\nTest: atest CtsGraphicsTestCases:android.graphics.fonts\nChange-Id: I6c593d9597b1f1ff71eaea6ecf7992890d635480\n"
    },
    {
      "commit": "38b1f27197da6cbdfeda83e62a9ac66308241a16",
      "tree": "3a9c4b1112c630de10da08a225bf3972d9f8268c",
      "parents": [
        "60e19367d1f82c7b8d1c698095f6808e36ba65eb",
        "7a0c39a5b46bbb8f2e7b869c642078e892d4804c"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Mar 26 19:57:14 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 26 19:57:14 2019 +0000"
      },
      "message": "Merge \"Make InputApplicationInfo as a part of InputApplicationHandle (1/2)\""
    },
    {
      "commit": "7a0c39a5b46bbb8f2e7b869c642078e892d4804c",
      "tree": "0dbccb8e489d3977be760d85e206b86baac08047",
      "parents": [
        "ebb52c5ac8b95637f5048b993aad88253cd85205"
      ],
      "author": {
        "name": "Arthur Hung",
        "email": "arthurhung@google.com",
        "time": "Wed Mar 20 16:52:24 2019 +0800"
      },
      "committer": {
        "name": "Arthur Hung",
        "email": "arthurhung@google.com",
        "time": "Fri Mar 22 18:14:29 2019 +0800"
      },
      "message": "Make InputApplicationInfo as a part of InputApplicationHandle (1/2)\n\nInputWindowHandle::updateInfo would also call\nInputApplicationHandle::updateInfo that may access the null pointer if the\nfocus application changed in same time.\n\n- To replace allocated mInfo in updateInfo(), make it as an object\n  member variable of InputApplicationHandle.\n\nBug: 128930899\nTest: atest inputflinger_tests\nChange-Id: Id19d2d8cd1be181ea994d0efa7afbb2567c4d734\n"
    },
    {
      "commit": "7c3ae9c745ec325690cd60d791bde7ec1183da42",
      "tree": "7cf26e19242068225ce9772e03ea1488a85c8fcc",
      "parents": [
        "106155a2395c539762fb37e5d045fd021352f499"
      ],
      "author": {
        "name": "Arthur Hung",
        "email": "arthurhung@google.com",
        "time": "Mon Mar 11 11:23:03 2019 +0800"
      },
      "committer": {
        "name": "Arthur Hung",
        "email": "arthurhung@google.com",
        "time": "Thu Mar 21 16:03:14 2019 +0000"
      },
      "message": "Use std::vector over Vector for InputFlinger (1/3)\n\nReplace Vector\u003cT\u003e with std::vector\u003cT\u003e.\n\nBug: 112399697\nTest: atest inputflinger_tests\nChange-Id: I8baec68f7a684d97210077f3e387ca1096586a25\n"
    },
    {
      "commit": "6b243887f3dec6eaba1101a106a8a4903dda9d37",
      "tree": "8464b79e5c0a365aa6125d7c6d344c14a0dcc812",
      "parents": [
        "178e86bb5218595d9fe20d7aa94a89df5b62028d",
        "6fabeece7fd6d858699af99cb118e63b8a81147b"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sun Mar 17 22:46:08 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Mar 17 22:46:08 2019 +0000"
      },
      "message": "Merge \"Input: Override touchable region bounds with surface bounds 2/2\""
    },
    {
      "commit": "fe422eeda30b5c4d277f7ab440c753dcad0aed63",
      "tree": "7bbd0487d73b858213bd760c57df22ebf868eb94",
      "parents": [
        "dd50a3cf4c9f41bf0e4952246cd559da5cfb503a"
      ],
      "author": {
        "name": "Salvador Martinez",
        "email": "dehboxturtle@google.com",
        "time": "Tue Mar 12 15:59:07 2019 -0700"
      },
      "committer": {
        "name": "Salvador Martinez",
        "email": "dehboxturtle@google.com",
        "time": "Tue Mar 12 15:59:07 2019 -0700"
      },
      "message": "update enum for renamed api\n\nThis just updates the enum name to match the function.\n\nTest: system boots\nBug: 117154042\nChange-Id: I857570881715c97c23f1e2410cbd88874c0e0424\n"
    },
    {
      "commit": "6fabeece7fd6d858699af99cb118e63b8a81147b",
      "tree": "7845e03f33627a123ba29506c2349651a9e169fa",
      "parents": [
        "9f166127de7f8673d59783fb7f2f72d57f515251"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Tue Mar 12 13:42:49 2019 -0700"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Tue Mar 12 13:42:49 2019 -0700"
      },
      "message": "Input: Override touchable region bounds with surface bounds 2/2\n\nTake advantage of the surface flinger layer hierarchy to set touchable\nregion.\n\n- Let a client set a surface touchable region to its own bounds.\n- Let a client set a surface touchable region to another surface bounds.\n- Let a client bound its touchable region to a surface.\n\nTest: go/wm-smoke\nTest: existing tests\n\nChange-Id: I447c93353d067a296007ba8f8341d2420b941d71\n"
    },
    {
      "commit": "b126899aa4a6aaf004abdb747fd4337b9c0f4108",
      "tree": "ab1e1ecdb49cad82b20d749ac9091eb9d2badf51",
      "parents": [
        "ea7255933ea33b4da6e0c55103b3166ab57eb8d7",
        "cc4b88e324d0b3903cb622534c68dbdb682bfee0"
      ],
      "author": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Mon Mar 11 09:13:29 2019 -0700"
      },
      "committer": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Mon Mar 11 09:13:29 2019 -0700"
      },
      "message": "DO NOT MERGE - Merge PPRL.190305.001 into master\n\nBug: 127812889\nChange-Id: I1cb1c38609ee26bb7c3e7343a9ed4c85fb4fb0a6\n"
    },
    {
      "commit": "733bf99d84899dd64cd00a2f3f00f9a1b159f3db",
      "tree": "a69dd8d5e1ce01d039e53514b5e4138adfad7268",
      "parents": [
        "5ff2b63c7f52605b454ceb51492139b518cd7262"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 08 11:25:28 2019 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 08 11:27:03 2019 -0800"
      },
      "message": "Fix \"heirarchy\" typo.\n\nAlso a \"the the\" stutter.\n\nTest: N/A\nChange-Id: I7e77a41e49af454c2161a48ecb92402bba3442c2\n"
    },
    {
      "commit": "908d008d4875c4576621ba8cdffa1d5443a0e864",
      "tree": "1e91f13eb8e248436a6bf3ee2fa2dfbc4bb4ce5d",
      "parents": [
        "84b50b862c6481ad25574affe00ad18d00cb87eb"
      ],
      "author": {
        "name": "Santos Cordon",
        "email": "santoscordon@google.com",
        "time": "Wed Feb 20 18:08:02 2019 +0000"
      },
      "committer": {
        "name": "Santos Cordon",
        "email": "santoscordon@google.com",
        "time": "Mon Mar 04 14:57:05 2019 +0000"
      },
      "message": "Add explicit 64-bit postFrameCallback APIs\n\nBug:123660572\nTest: atest -a android.view.cts.ChoreographerNativeTest\nChange-Id: I230761fc4a16c4149f1bd55e65a0a629f41fe869\n"
    },
    {
      "commit": "7e32c880e985690e6d333c4a62999d4855238f9a",
      "tree": "462edd4080654c64069e354195da638dc602820e",
      "parents": [
        "b645f7ef197d558cdf7f3fe19e46f7faffca217e",
        "b45635c8a3f4b38298ebe60922a6f61c4b99e491"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 21 23:07:50 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 21 23:07:50 2019 +0000"
      },
      "message": "Merge \"Replace non-alphanumerics with _ in VirtualKeyMap\""
    },
    {
      "commit": "b45635c8a3f4b38298ebe60922a6f61c4b99e491",
      "tree": "c643e6f1cddc7527a7742538e4bca258ac32a875",
      "parents": [
        "3e78decd5e6fe3590da3e91680aae51d43c62d5f"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Wed Feb 20 19:22:09 2019 -0600"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Thu Feb 21 14:03:06 2019 -0600"
      },
      "message": "Replace non-alphanumerics with _ in VirtualKeyMap\n\nWe currently rewrite device name for finding the matching .idc, .kl,\n.kcm files, but we aren\u0027t allowing this for virtual key maps.\n\nRewrite the name for virtual devices to provide some flexibility in\nmatching for the right files in sys/board_properties.\n\nBug: 113575658\nTest: atest libinput_tests inputflinger_tests\nChange-Id: I54d159e9ecf02327cae388ae14c0bcf21c415e6e\n"
    },
    {
      "commit": "b645f7ef197d558cdf7f3fe19e46f7faffca217e",
      "tree": "1ab6d6b2e87443cb6eac506468d6cef3421138cf",
      "parents": [
        "47b1369a1c28881806fc4cdf3a0ebd1dfbf98a3b",
        "3e78decd5e6fe3590da3e91680aae51d43c62d5f"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 21 18:32:26 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 21 18:32:26 2019 +0000"
      },
      "message": "Merge \"Refactor VirtualKeyMap\""
    },
    {
      "commit": "3209997d010753ddf988ac3ba686d5262a80a62c",
      "tree": "ef6c81b797a99fbabcee1a069ecb7c9b28035450",
      "parents": [
        "91f56e4d9400e94d07df4d639da7000255c1c5de",
        "291d88aa7a94790b85dfa633166bc0aa356cccb4"
      ],
      "author": {
        "name": "Chavi Weingarten",
        "email": "chaviw@google.com",
        "time": "Thu Feb 21 16:18:52 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 21 16:18:52 2019 +0000"
      },
      "message": "Merge \"Add synchronous transaction to wait for setInputWindow to complete (3/n)\""
    },
    {
      "commit": "3e78decd5e6fe3590da3e91680aae51d43c62d5f",
      "tree": "9fc6c4e78abf1edf50a56505509e32f9225d5604",
      "parents": [
        "d008ac8d41cefba53508306f6dda0a5ba14bb312"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Wed Feb 20 16:21:46 2019 -0600"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Wed Feb 20 19:04:12 2019 -0600"
      },
      "message": "Refactor VirtualKeyMap\n\nCurrently, there\u0027s a lot of new and delete going on in VirtualKeyMap.\nSimplify this by using unique_ptr instead.\n\nBug: 113575658\nTest: atest libinput_tests inputflinger_tests\nChange-Id: Ib2a68ae23a4300b0e2cf72902371f4b9604cfee5\n"
    },
    {
      "commit": "1bc1aca61ae957804fcb6505c95dcb9cc284d59c",
      "tree": "f470e07cf9845b1bd9c8f7db7f971856ee5c7c8e",
      "parents": [
        "9e9aae44a730c0c01b9f4b49949c487612c29817",
        "46de920ce04b697775500654d99687adcf8a2ddd"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 21 00:25:44 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 21 00:25:44 2019 +0000"
      },
      "message": "Merge \"Remove unused defines from Keyboard.h\""
    },
    {
      "commit": "291d88aa7a94790b85dfa633166bc0aa356cccb4",
      "tree": "71285bc971b3d721679f0440b85b0603034fa616",
      "parents": [
        "751889981ec9b45c16a7c06746875746a9b321d4"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Thu Feb 14 10:33:58 2019 -0800"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Wed Feb 20 15:42:31 2019 -0800"
      },
      "message": "Add synchronous transaction to wait for setInputWindow to complete (3/n)\n\nAdded callback for InputDispatcher to report back to SF.\n\nPass in an interface callback to setInputWindows so InputDispatcher can send\na response when setInputWindows has completed. The callback can be null\nso InputDispatcher knows not to send a response on every setInputWindows\ncall.\n\nBug: 123041491\nTest: Builds, runs\nChange-Id: I18b28141a0bb5f2e1ffb406d601dc7822ca89ecd\n"
    },
    {
      "commit": "46de920ce04b697775500654d99687adcf8a2ddd",
      "tree": "51aa811e832f1183526b33cfd54886c76f1c9143",
      "parents": [
        "c1072d30b420806aadef3ffebc2710ab244b5c17"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Wed Feb 20 12:17:03 2019 -0600"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Wed Feb 20 12:17:03 2019 -0600"
      },
      "message": "Remove unused defines from Keyboard.h\n\nThese defines are no longer used.\n\nBug: none\nTest: build only\nChange-Id: Iebf77341be0c58e24e26260899b02f1cf5fe8f08\n"
    },
    {
      "commit": "8154bbdf6bb2c5de865e9408a1452bbfd3c37a17",
      "tree": "7e48bc263df7ef3cd5da2dfc00fd40525d240d39",
      "parents": [
        "6b76bdf9b7ac8046234900cafdcccf2145d3c5c7"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Fri Feb 15 17:21:03 2019 -0600"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Tue Feb 19 19:04:23 2019 -0600"
      },
      "message": "Rotate TouchVideoFrames\n\nWhen a screen orientation change happens, the touch coordinates are\nadjusted in InputReader to accomodate this rotation. When the user is\nholding the device, the origin (0, 0) is always at the top left of the\nscreen.\nHowever, currently, the TouchVideoFrames are not being rotated. This\npresents a problem, because the touch coordinates cannot be directly\nmatched to the heatmap, as received in the HAL.\n\nTo account for this, we rotate the touch video frame.\n\nTest: atest libinput_tests inputflinger_tests\nBug: 123241238\nChange-Id: Iff45c68b1d2b237d2b1657ed76f50bb23ef8468a\n"
    },
    {
      "commit": "fda3aee5b7b17bc64e66e1f6f7aaa7d2e3ac1419",
      "tree": "afa967fdce0135a220b3bdee187c94e1711064de",
      "parents": [
        "26cf29d722a486981a98a63dc0121c5663ee3fa1"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Fri Feb 15 17:10:53 2019 -0600"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Fri Feb 15 18:33:06 2019 -0600"
      },
      "message": "Swap width and height in TouchVideoFrame\n\nCurrently in TouchVideoFrame and related code, the field \u0027width\u0027\nprecedes the field \u0027height\u0027.\nBut these fields should be  interpreted as follows:\nwidth -\u003e number  of columns\nheight -\u003e number of rows\nIn most notations in mathematics, the matrix sizes are designated as\n\u0027mxn\u0027, where m is the number of rows and n is the number of columns.\n\nSo we make TouchVideoFrame consistent with this, and swap these 2\nfields.\n\nTest: atest libinput_tests\nThe actual test is added in the next commit.\nBug: 123241238\n\nChange-Id: I808e7f354bd7b62d5599324eef205bf4450a91c1\n"
    },
    {
      "commit": "26cf29d722a486981a98a63dc0121c5663ee3fa1",
      "tree": "3db36b4f23e3c470c41fc62cf0f3963810245edb",
      "parents": [
        "34ac73e1301f090b554b2153a097bee45b74b2dd"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Fri Feb 15 16:48:38 2019 -0600"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Fri Feb 15 18:26:13 2019 -0600"
      },
      "message": "Move implementation to TouchVideoFrame.cpp\n\nCurrently, the implementation for TouchVideoFrame.h is done directly in\nthe header file.\nBut we are adding more logic into TouchVideoFrame, specifically, the\nability to rotate videoframes. Therefore, add a separate cpp file for\nTouchVideoFrame.\n\nTest: atest libinput_tests\nThe actual test is added in an upcoming commit\nBug: 123241238\n\nChange-Id: I4463099d251ab49533d25dd9da7c344e1a7ac93e\n"
    },
    {
      "commit": "042523f451c941e35647b9102228edaf359d3830",
      "tree": "febc2ba1e6ebcbd54a9ad1501f9d5430a625e408",
      "parents": [
        "1efd060206ece504920e19cb7825cd53a4b0420a",
        "3ff826cd4c8101dbfc199485f40d2938eff89014"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Feb 11 20:36:39 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 11 20:36:39 2019 +0000"
      },
      "message": "Merge \"ASurfaceControl: dataspace (2/2)\""
    },
    {
      "commit": "3ff826cd4c8101dbfc199485f40d2938eff89014",
      "tree": "6cdcb527c2e48879f2e6d1c45c316493d964f57e",
      "parents": [
        "df93796a1b8455ae1653f22270e13b0a6494d822"
      ],
      "author": {
        "name": "Marissa Wall",
        "email": "marissaw@google.com",
        "time": "Thu Feb 07 11:58:25 2019 -0800"
      },
      "committer": {
        "name": "Marissa Wall",
        "email": "marissaw@google.com",
        "time": "Fri Feb 08 14:34:44 2019 -0800"
      },
      "message": "ASurfaceControl: dataspace (2/2)\n\nAllow dataspace to be set on the SurfaceControl.\n\nTest: atest CtsViewTestCases:android.view.cts.ASurfaceControlTest\nBug: 80477568\nChange-Id: I70b2109e4691c039899c9e8a3606c46c69428a3f\n"
    },
    {
      "commit": "cae4b3ae7e92ee6243dbed83ff2ffcf2c7a78915",
      "tree": "e9db2781f6bf9e5cb78907770114a060f7c79664",
      "parents": [
        "5ef8f96efceb28869dbe56b2583128fedada1b56"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Tue Feb 05 18:51:32 2019 -0800"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Wed Feb 06 18:10:37 2019 -0800"
      },
      "message": "Remove EventHub header from include dir\n\nSince the EventHub header does not need to be exported, this removes the\nheader from the include directory.\n\nThis also moves the reserved input device ids from EventHub to\ninput/InputDevice.h.\n\nBug: None\nTest: None\nChange-Id: I272878245ee60c85e4539b381a20962ca9236cfd\n"
    },
    {
      "commit": "3dc4f591a1170a04507b02f77801fc1bcfc97236",
      "tree": "fa8c725f17d261977ac88d056504a470a96fedf2",
      "parents": [
        "f12d0706920975e0a465c89727349537563f5ac5",
        "85b8c5edd4c3ffd9790e2d69a9e8bcd9df2fa42c"
      ],
      "author": {
        "name": "Tiger Huang",
        "email": "tigerhuang@google.com",
        "time": "Wed Jan 30 10:36:02 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 30 10:36:02 2019 +0000"
      },
      "message": "Merge \"Introduce new portal window which transports touch to another display\""
    },
    {
      "commit": "85b8c5edd4c3ffd9790e2d69a9e8bcd9df2fa42c",
      "tree": "ad4a1f740a702df46ab2eee54bd0f98e2bd92e19",
      "parents": [
        "6d50dff2b550705c927e2b2e5d6f299a3efacf62"
      ],
      "author": {
        "name": "Tiger Huang",
        "email": "tigerhuang@google.com",
        "time": "Thu Jan 17 18:34:54 2019 +0800"
      },
      "committer": {
        "name": "Tiger Huang",
        "email": "tigerhuang@google.com",
        "time": "Wed Jan 30 00:39:10 2019 +0800"
      },
      "message": "Introduce new portal window which transports touch to another display\n\nIt enables the user to directly touch on a window of a display\nembedded on another one. The embedded displays can be nested.\n\nThe monitoring channels of the embedded display can also receive touch\nevents.\n\nBug: 120675821\nTest: Manual test with ActivityViewTest\nTest: atest -a inputflinger_tests\nTest: atest CtsActivityManagerDeviceTestCases:ActivityViewTest\nChange-Id: I773c7efb1b048080020aadd45156261a10095fcb\n"
    },
    {
      "commit": "473174ea68fa5703ef162d85fe2805d7d313e41a",
      "tree": "5465308d144960995702d28259c2dd70efbd9189",
      "parents": [
        "57ba2f1942f1fae1bd195b8c0f7fda8adbf9c41e"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Wed Dec 27 16:44:42 2017 -0800"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Mon Jan 28 11:55:38 2019 -0800"
      },
      "message": "Add a new InputClassifier stage\n\nThe new InputClassifier stage could be used for additional processing\nof input events prior to sending them to InputDispatcher. The new flow\nof events will be InputReader -\u003e InputClassifier -\u003e InputDispatcher.\n\nHere, we are calling the InputClassifier HAL and setting the MotionEvent\nclassification appropriately.\n\nBug: 62940136\nTest: override notifyMotion to add extra flags to NotifyMotionArgs for\ncertain types of input events.\nTest: atest inputflinger_tests\n\nChange-Id: I2f390dc69f587ea25a3be8e4b8d5a207a5d529bf\n"
    },
    {
      "commit": "ed54efa6e3d6b1403d07e0b68e0e741ec4d26cc4",
      "tree": "0807c81407557ad04a86c9dd59e3de0ab9f90cbd",
      "parents": [
        "57d7b5f37d6f5f94385e674fc27dcca4a9579499"
      ],
      "author": {
        "name": "Valerie Hau",
        "email": "vhau@google.com",
        "time": "Fri Jan 11 20:03:14 2019 -0800"
      },
      "committer": {
        "name": "Valerie Hau",
        "email": "vhau@google.com",
        "time": "Wed Jan 23 13:42:58 2019 -0800"
      },
      "message": "Add Color Layer to ASurfaceControl\n\nBug:122326454\nTest: atest CtsViewTestCases:android.view.cts.ASurfaceControlTests\nChange-Id: Ib05ad70d838c79aa6f2e309217b93906c950b6fa\n"
    },
    {
      "commit": "64b61fa41c8050db7822f9e8dff636335eb53770",
      "tree": "9665d48fd35246d3cd26d6f8cf7678a27d1a1c9a",
      "parents": [
        "0a5c5f752a5faacbc2c175383ee7d49f743d368a",
        "80d94ad74170212d21222a1d81e2e203e304f615"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jan 22 22:38:20 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 22 22:38:20 2019 +0000"
      },
      "message": "Merge \"ASurfaceControl: add more support to NDK (2/2)\""
    },
    {
      "commit": "e2599dfd46ecf1b882c8240d0cec6f41800c6def",
      "tree": "c691928088684c53d2661da4897b1a333e556c05",
      "parents": [
        "85bd1ec6d01b357a3fdc1fa50caee51ed5cbfa29",
        "e318d6b2838deec2a8640ff10869900cdb701b42"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jan 22 20:47:43 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 22 20:47:43 2019 +0000"
      },
      "message": "Merge changes from topic \"sensors_ndk_filter\"\n\n* changes:\n  Implement Sensors NDK Filtering\n  Define ASensorEventQueue_requestAdditionalInfoEvents\n"
    },
    {
      "commit": "65089d59122b7f03172f0f9fff60fe09c01f98d5",
      "tree": "f2afbc93cba80f74b0984675e352c1c3fd03316c",
      "parents": [
        "a33847d0cd86d11e1c292b92751f69fe69788ee5"
      ],
      "author": {
        "name": "Brian Stack",
        "email": "bstack@google.com",
        "time": "Fri Jan 11 10:52:07 2019 -0800"
      },
      "committer": {
        "name": "Brian Stack",
        "email": "bstack@google.com",
        "time": "Fri Jan 18 17:21:15 2019 -0800"
      },
      "message": "Define ASensorEventQueue_requestAdditionalInfoEvents\n\nBug: 77276247\nTest: Builds\nChange-Id: Ia6a4fa507dcd4009f04b8ad1cfe5aabfb9535ac6\n"
    },
    {
      "commit": "80d94ad74170212d21222a1d81e2e203e304f615",
      "tree": "17cc85055cdacce9c0232af3126a6ebcdcebeefd",
      "parents": [
        "ebc2c059e73d3278e07c461b3f4e844a47019c3d"
      ],
      "author": {
        "name": "Marissa Wall",
        "email": "marissaw@google.com",
        "time": "Fri Jan 18 16:04:36 2019 -0800"
      },
      "committer": {
        "name": "Marissa Wall",
        "email": "marissaw@google.com",
        "time": "Fri Jan 18 16:17:51 2019 -0800"
      },
      "message": "ASurfaceControl: add more support to NDK (2/2)\n\nAdds several new functions and updates existing functions.\n - release fences\n - desired present time\n - alpha\n - hdr metadata\n\nTest: atest CtsViewTestCases:android.view.cts.ASurfaceControlTest\nBug: 80477568\nChange-Id: I6f6c4c6e295530cdb9e86b308483818062149cc1\n"
    },
    {
      "commit": "0e7a776df4775537a80fab69bc55a2e7bed8bef8",
      "tree": "b705fc93d5ae5b365244536c7240b6c43f82008f",
      "parents": [
        "5027d1ac1d5bd522dc7534ded82a4f6f984ef129"
      ],
      "author": {
        "name": "Oleg Kibirev",
        "email": "olegk@google.com",
        "time": "Fri Jan 18 00:05:26 2019 +0000"
      },
      "committer": {
        "name": "Oleg Kibirev",
        "email": "olegk@google.com",
        "time": "Fri Jan 18 00:18:50 2019 +0000"
      },
      "message": "Better docs for KEYCODE_PROFILE_SWITCH\n\nBug: 122276228\nTest: not needed\nChange-Id: I8b0583fbd945eae97e735c22d0c523105df4cb15\n"
    },
    {
      "commit": "57af2d4ec9a898d5a7dcd1e24102c03012f4cbfb",
      "tree": "a8073b0a435475e6bc689e4b2b9013a1fc50d143",
      "parents": [
        "7bab27f5cd27c3ebcc3ffc97bee8cbd7c6e98ac3",
        "16a2e3067d7465689da117340e94df11624820a2"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 17 21:12:40 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 17 21:12:40 2019 +0000"
      },
      "message": "Merge \"Propagate MotionClassification to InputDispatcher\""
    },
    {
      "commit": "8228fa7bcd38f5e46d8f83a9c7795510c4ad87af",
      "tree": "3188e33920d39cbf1801ab8d01ee3a6c9382724e",
      "parents": [
        "ccd88439e37c3be30b1025f9282017d859bd39b1"
      ],
      "author": {
        "name": "Brian Stack",
        "email": "bstack@google.com",
        "time": "Fri Jan 04 14:15:13 2019 -0800"
      },
      "committer": {
        "name": "Brian Stack",
        "email": "bstack@google.com",
        "time": "Wed Jan 16 15:43:41 2019 -0800"
      },
      "message": "Add ASensor_getHandle API to Sensors NDK\n\nIntroduces the ASensor_getHandle API which returns the provided\nsensor\u0027s internal sensor handle. This allows for AdditionalInfo sensor\nevents to be mapped to the sensor that generated the event.\n\nBug: 122366555\nTest: Builds, verified function correctly returns sensor\u0027s handle\nChange-Id: I9a03ccc8b0840481fe1b5b4d1e5bca05adcf48a3\n"
    },
    {
      "commit": "ccd88439e37c3be30b1025f9282017d859bd39b1",
      "tree": "c379c6eaa3b9a3c8cce6626448bfec4192322711",
      "parents": [
        "b6d0623bbc0a33bd3c68cd81e0b567b0f1540440"
      ],
      "author": {
        "name": "Brian Stack",
        "email": "bstack@google.com",
        "time": "Tue Jan 08 17:04:18 2019 -0800"
      },
      "committer": {
        "name": "Brian Stack",
        "email": "bstack@google.com",
        "time": "Wed Jan 16 15:43:41 2019 -0800"
      },
      "message": "Add Additional Information types to NDK\n\nBug: 122366555\nTest: Builds\nChange-Id: I1430d330363fc9d8b9b0928ec1411e415f799e85\n"
    },
    {
      "commit": "86c2985b0be7590aa979d25a7e5fb927cc1d2dcc",
      "tree": "bea8d2b9269680ee1742166e2820b9df075b7db5",
      "parents": [
        "cb5531e3576fec2be6e366f16dd85696a20552b3"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Fri Nov 16 22:18:53 2018 -0800"
      },
      "committer": {
        "name": "android-build-team Robot",
        "email": "android-build-team-robot@google.com",
        "time": "Wed Jan 16 18:56:22 2019 +0000"
      },
      "message": "Sanitize InputMessage before sending\n\nThe struct InputMessage has many fields, and is force-aligned to 8-byte\nboundaries. There are also some padding fields that carry no\ninformation.\n\nThis struct is typically allocated in the stack and populated with\nvarious values before being sent across as a stream of bytes through the\nsocket.\n\nTherefore, the \"unused\" data portions of the struct could contain\nportions of the stack, since there aren\u0027t ever writes to those memory\nlocations.\n\nTo avoid this information leak, forcefully sanitize the struct. Create a\nnew struct that is explicitly set to zero. Next, only fill the\nmeaningful fields manually.\n\nBug: 115739809\nTest: cts-tradefed run cts -m CtsSecurityBulletinHostTestCases -t android.security.cts.Poc18_12; adb shell monkey 100000\nChange-Id: I7e44dacf1e8fa3156c8e4d2f7784ef0c53dab507\nMerged-In: I7e44dacf1e8fa3156c8e4d2f7784ef0c53dab507\n(cherry picked from commit e730f5aaa1c726ee9998a080e2d7f6284f4afec8)\n"
    },
    {
      "commit": "16a2e3067d7465689da117340e94df11624820a2",
      "tree": "56d93068189c9284e84869dbd4a22951b1e2a92e",
      "parents": [
        "b6d0623bbc0a33bd3c68cd81e0b567b0f1540440"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Mon Jan 14 19:21:45 2019 -0800"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Wed Jan 16 09:13:55 2019 -0800"
      },
      "message": "Propagate MotionClassification to InputDispatcher\n\nWe added MotionClassification to MotionEvent and NotifyMotionArgs, but\nthe two have not yet been connected. Connect them here, to ensure that\napps can receive the classification.\n\nBug: 111480215\nTest: atest -a libinput_tests inputflinger_tests\nChange-Id: I67dda22d9ee8a2d89abf40dbd01200ec37a65737\n"
    },
    {
      "commit": "e88636ec61eea2a479f6619fcaa49b8bbfcb067e",
      "tree": "4f197fc13f5fa73ac7a6a132690839657e95ad92",
      "parents": [
        "83b8821aa6b046dae88d5e491e5e65aa5c50be0b",
        "f3fd643dc97a4f951075f2aa7cdb5ce5daa1b87d"
      ],
      "author": {
        "name": "Luke Huang",
        "email": "huangluke@google.com",
        "time": "Wed Jan 16 02:38:13 2019 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jan 16 02:38:13 2019 -0800"
      },
      "message": "Merge \"Minor changes to the async DNS query API flag definitions.\" am: 9a22123ae4 am: cf5ef56465\nam: f3fd643dc9\n\nChange-Id: I4df5ae983e21ddde2e2c6c5f0f2b5855d9df2fab\n"
    },
    {
      "commit": "f3fd643dc97a4f951075f2aa7cdb5ce5daa1b87d",
      "tree": "8c1c07b9abfbdd707432067707de002b8dc720dd",
      "parents": [
        "62351de56514c9415587f04ebcce24c6b1249184",
        "cf5ef56465f91436168845d582b3714512404378"
      ],
      "author": {
        "name": "Luke Huang",
        "email": "huangluke@google.com",
        "time": "Wed Jan 16 02:27:45 2019 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jan 16 02:27:45 2019 -0800"
      },
      "message": "Merge \"Minor changes to the async DNS query API flag definitions.\" am: 9a22123ae4\nam: cf5ef56465\n\nChange-Id: I957ea1410a74d92bde191a67756fae53d966b0a3\n"
    },
    {
      "commit": "6b99b4990dc3a82e5549617b2102b330009e374a",
      "tree": "f321be5625414468517bae859885e18d9b8ccc1b",
      "parents": [
        "ec751ea6d0f8ebde148b27f645a81a8f340c081d",
        "53da7e3b87682c908a03d67694ff872b8a647711"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jan 15 18:40:24 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 15 18:40:24 2019 +0000"
      },
      "message": "Merge \"ASurfaceControl: add SurfaceControl to NDK (2/2)\""
    },
    {
      "commit": "53da7e3b87682c908a03d67694ff872b8a647711",
      "tree": "a3ae66acc37d50ea3d1d8b279a8ebf277635ec17",
      "parents": [
        "72993231fc5eb7fb21559de174b29e3b484a509c"
      ],
      "author": {
        "name": "Marissa Wall",
        "email": "marissaw@google.com",
        "time": "Tue Sep 25 15:59:38 2018 -0700"
      },
      "committer": {
        "name": "Marissa Wall",
        "email": "marissaw@google.com",
        "time": "Mon Jan 14 13:12:31 2019 -0800"
      },
      "message": "ASurfaceControl: add SurfaceControl to NDK (2/2)\n\nAdd the NDK API for apps to use SurfaceControl for low level compositing\nusing SurfaceFlinger.\n\nTest: atest CtsViewTestCases:android.view.cts.ASurfaceControlTest\nBug: 80477568, 111656650\nChange-Id: I1bc27c5ee153e974990a6d1b0ea50d378efae8bb\n"
    },
    {
      "commit": "49e59220d127929ae73cfe81d81683bcad3dcb30",
      "tree": "6af6708ebece876326a9f9b7f765602af1a11c0e",
      "parents": [
        "bcb4be70fab707a300c1a83920805e984fcb49b8"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Fri Dec 28 18:17:15 2018 -0800"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Thu Jan 10 15:32:04 2019 -0800"
      },
      "message": "Add classification to MotionEvent\n\nThe classification will be used to categorize the\ncurrent motion event stream. The classification may change from ambiguous to deep press,\nfor example.\n\nTest: integration tested by printing to logcat whenever CLASSIFICATION_DEEP_PRESS\nis present.\nTest: atest libinput_tests inputflinger_tests\nBug: 62940136\n\nChange-Id: I2d93583bab42162e1fd1e95ebf624ef3ab9a58ec\n"
    },
    {
      "commit": "4364cf6e1dfee18e1e3e5743be5a24b65ac519a2",
      "tree": "59eee1cba9704dc5f950d5057b1365802e5b5181",
      "parents": [
        "dc23aff2d74257f0db9225a646e57de3b5c0768c"
      ],
      "author": {
        "name": "Luke Huang",
        "email": "huangluke@google.com",
        "time": "Wed Jan 09 21:06:24 2019 +0800"
      },
      "committer": {
        "name": "Luke Huang",
        "email": "huangluke@google.com",
        "time": "Thu Jan 10 17:30:02 2019 +0800"
      },
      "message": "Minor changes to the async DNS query API flag definitions.\n\n1. Use JavaDoc style comments instead of // comments.\n2. Change the flags from an enum class to a uint32_t.\n\nTest: built, flashed, booted\n      cts test: NativeDnsAsyncTest\n\nChange-Id: I897916a22f19fec6dc70592de590f425d2fe92de\n"
    },
    {
      "commit": "21237a0cfc14f0660943f4e87a8e905ea452ae81",
      "tree": "e50028b1ea1a739b637da38d217d19161febbda6",
      "parents": [
        "e8f9a6f326b295410ffcb21c49f7ffc62a4a9ec2",
        "fbe5d9c4233dcd802a122f70ca5a3641fcd556ca"
      ],
      "author": {
        "name": "Chavi Weingarten",
        "email": "chaviw@google.com",
        "time": "Wed Jan 09 16:29:01 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 09 16:29:01 2019 +0000"
      },
      "message": "Merge \"Fix drag and drop (2/3)\""
    },
    {
      "commit": "e8f9a6f326b295410ffcb21c49f7ffc62a4a9ec2",
      "tree": "ee996cbb9273eaed58587ec22382c40045c99ca0",
      "parents": [
        "d60685c5c3dc38eadf0f64fedf71ca8b7a9a938c",
        "4612be5d25f814bccc7f824411bbe1893aa923ea"
      ],
      "author": {
        "name": "Luke Huang",
        "email": "huangluke@google.com",
        "time": "Wed Jan 09 06:02:12 2019 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jan 09 06:02:12 2019 -0800"
      },
      "message": "Merge \"Add control flags in asynchronous DNS query API\" am: 9a0d6e60a3 am: 67da038184\nam: 4612be5d25\n\nChange-Id: I530e8b5f2a25b8fd92734effa0d059e5a6c7d490\n"
    },
    {
      "commit": "4612be5d25f814bccc7f824411bbe1893aa923ea",
      "tree": "f4c7a255d0c9be50a11be57406a87bd3bfd4f4c4",
      "parents": [
        "59697cb8a8e3d2dd218128c4c5bf8a3864563ffc",
        "67da038184b9e799bb768f6df3583bc17fe47322"
      ],
      "author": {
        "name": "Luke Huang",
        "email": "huangluke@google.com",
        "time": "Wed Jan 09 05:34:25 2019 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jan 09 05:34:25 2019 -0800"
      },
      "message": "Merge \"Add control flags in asynchronous DNS query API\" am: 9a0d6e60a3\nam: 67da038184\n\nChange-Id: I11f22266ab592595eb68b795059b07f999424fc3\n"
    },
    {
      "commit": "d60685c5c3dc38eadf0f64fedf71ca8b7a9a938c",
      "tree": "a9486d3c54487985a2e0d342c60a10b34389acd2",
      "parents": [
        "b81cf0ed362d721bba7b6d02fc3e98463c347655",
        "59697cb8a8e3d2dd218128c4c5bf8a3864563ffc"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Wed Jan 09 03:32:19 2019 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jan 09 03:32:19 2019 -0800"
      },
      "message": "Merge \"Update OWNERS file for frameworks/native/include.\" am: ab4b7dd270 am: 7cf653d6af\nam: 59697cb8a8\n\nChange-Id: I513ae39fa98791d896d2f5a12634035314170290\n"
    },
    {
      "commit": "9a0d6e60a3bcde82677d8beccd26cdcdebe150e8",
      "tree": "306315f391bc72f91e5ec4d0154cca8187eb4546",
      "parents": [
        "ab4b7dd270c18fe7234bea89d54eb13ea66224ba",
        "b12ec34c69ed4b61097be9715004f182b4bf42c8"
      ],
      "author": {
        "name": "Luke Huang",
        "email": "huangluke@google.com",
        "time": "Wed Jan 09 11:30:18 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 09 11:30:18 2019 +0000"
      },
      "message": "Merge \"Add control flags in asynchronous DNS query API\""
    },
    {
      "commit": "59697cb8a8e3d2dd218128c4c5bf8a3864563ffc",
      "tree": "f96f2327b10b4daf713bf44e359e801c5dbcccce",
      "parents": [
        "481a665590c1914614fadc4747c96edc6cd33a43",
        "7cf653d6af8897ee4b7887e5e05a6cdab1447984"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Wed Jan 09 03:27:22 2019 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jan 09 03:27:22 2019 -0800"
      },
      "message": "Merge \"Update OWNERS file for frameworks/native/include.\" am: ab4b7dd270\nam: 7cf653d6af\n\nChange-Id: I257d74005f7cdd45e7d55e8a6c63b575991ab821\n"
    },
    {
      "commit": "1a6efbef31858a85bf92ceb015192d582649dec3",
      "tree": "6d7298b46a67ab26a4240edbdb2d528937411787",
      "parents": [
        "47a389f2acd819d0a9fdb2b8bb0b0254b8e28abc"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Wed Jan 09 17:39:52 2019 +0900"
      },
      "committer": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Wed Jan 09 17:57:11 2019 +0900"
      },
      "message": "Update OWNERS file for frameworks/native/include.\n\nAdd lorenzo@ for native networking code (specifically,\nmultinetwork.h).  This ensures that there is at least one OWNER\nfor this file in the APAC timezone where the core networking\nteams work.\n\nAlso do some housekeeping:\n- ronghuawu@ and wiley@ are no longer at Google.\n- brianderson@, olv@, pengxu@, pceballos@ and sadmac@ appear to be\n  no longer working on Android native code.\n\nTest: build/make/tools/checkowners.py -c -v frameworks/native/include/OWNERS\nChange-Id: I427085507d949991e8662f2d9f1b7e5b8eda4928\n"
    },
    {
      "commit": "fbe5d9c4233dcd802a122f70ca5a3641fcd556ca",
      "tree": "2df71b9465c29c751216d3e762efd0a4dd09d0fb",
      "parents": [
        "aab8d1f8b088dd2376da2aa630669905166937d4"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Wed Dec 26 12:23:37 2018 -0800"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Tue Jan 08 16:04:04 2019 -0800"
      },
      "message": "Fix drag and drop (2/3)\n\nHandle InputWindowCommands in SurfaceFlinger. Send transferTouchFocus from\nSurfaceFlinger to InputFlinger.\n\nTest: InputSurfacesTest.transfer_touch_focus\nBug: 120463595\nChange-Id: I6592cc9ee4a77700ea191fd1ca337b91895b61fe\n"
    },
    {
      "commit": "b12ec34c69ed4b61097be9715004f182b4bf42c8",
      "tree": "d87f9c12d708414df78d58dbc5bc7a3067e47b3e",
      "parents": [
        "47a389f2acd819d0a9fdb2b8bb0b0254b8e28abc"
      ],
      "author": {
        "name": "Luke Huang",
        "email": "huangluke@google.com",
        "time": "Thu Dec 20 14:37:14 2018 +0800"
      },
      "committer": {
        "name": "Luke Huang",
        "email": "huangluke@google.com",
        "time": "Tue Jan 08 17:56:07 2019 +0800"
      },
      "message": "Add control flags in asynchronous DNS query API\n\nTest: built, flashed, booted\n      cts test: NativeDnsAsyncTest\n\nChange-Id: Ia1a0195a1441ad0f1dcef49fea80266a7180f07f\n"
    },
    {
      "commit": "4a7b239c430db4bfbcb2929c081e14e6e38b1123",
      "tree": "061a315588916c8d6cd0d9070a1d451278d419ba",
      "parents": [
        "55ed033db22c184e945426eb59ef43b6b65b4a92",
        "0a92a01206879abeed279749f377ba041fbb3257"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Fri Jan 04 16:17:49 2019 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Jan 04 16:17:49 2019 -0800"
      },
      "message": "Merge \"Add owners in include.\" am: b3a990bbd4 am: 74a886c7d2\nam: 0a92a01206\n\nChange-Id: I9fd8a94e5463c6749f0f53adf73081404480428b\n"
    },
    {
      "commit": "0a92a01206879abeed279749f377ba041fbb3257",
      "tree": "1f677367a2201db231a35d2e1f129e48252ca1ee",
      "parents": [
        "be7dba02c70345b7728e2aaa926204762756a03c",
        "74a886c7d2d2a71aa3196cb6a14ea4a5d4bc52ba"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Fri Jan 04 16:12:14 2019 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Jan 04 16:12:14 2019 -0800"
      },
      "message": "Merge \"Add owners in include.\" am: b3a990bbd4\nam: 74a886c7d2\n\nChange-Id: I7c13be370724ec49f1c7ba7497758e6037e373bc\n"
    },
    {
      "commit": "cf596e2cf669f345f67766b6886453dad1e5ccbd",
      "tree": "22b239309e24285dec4795ca34161e5ec935eb11",
      "parents": [
        "6d1dc6eab1e35df3d4d36766fef76f1c777258e8"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Fri Dec 21 14:12:31 2018 -0800"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Fri Jan 04 10:38:31 2019 -0800"
      },
      "message": "Add owners in include.\n\nBug: None\nTest: uploader\nChange-Id: I03a4a76614a1f50d00a055215890cb5ab9f69166\n"
    },
    {
      "commit": "57419bf264d1db52d0f1fd6e5d59a1174b2eaf77",
      "tree": "04b60fd71223d02ba5eba57b58f3e88b269b1549",
      "parents": [
        "0bf9e902cf43fcea5c89058c7386a81e9f2b5686",
        "73ec8a7cc15268fd451b3b7cb6cf923b6741ce5f"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Wed Jan 02 17:46:57 2019 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jan 02 17:46:57 2019 -0800"
      },
      "message": "Sanitize InputMessage before sending am: e730f5aaa1\nam: 73ec8a7cc1\n\nChange-Id: Ia9d2823f2d41dcc8ffc1ffff0b8c55f6f3ac8ad0\n"
    },
    {
      "commit": "73ec8a7cc15268fd451b3b7cb6cf923b6741ce5f",
      "tree": "d45c31ddb5eee3463303057810a30b927e269a12",
      "parents": [
        "ac1f7c9c50b468315dbd4b0e71e03fb736fd98eb",
        "e730f5aaa1c726ee9998a080e2d7f6284f4afec8"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Wed Jan 02 17:41:43 2019 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jan 02 17:41:43 2019 -0800"
      },
      "message": "Sanitize InputMessage before sending\nam: e730f5aaa1\n\nChange-Id: Iadf7bddb31cbef821417fc33b6c1d734b8dfc730\n"
    },
    {
      "commit": "80109da9fde13fa27d0460486ae54a606bd7ffc4",
      "tree": "30aa93acbead19e97a6cd201f72b80ac9713523d",
      "parents": [
        "26ce864c655c436076febe1cad5825d4ca1cabdd",
        "76b5c6b244f2cb715c41a1a00c1fa7920f324414"
      ],
      "author": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Fri Dec 21 15:02:18 2018 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Dec 21 15:02:18 2018 -0800"
      },
      "message": "Merge \"Fix/suppress google-explicit-constructor warnings\" am: aad7e1ccc5 am: 9a55c7aba6\nam: 76b5c6b244\n\nChange-Id: Id48300ec04692d040625176ce953e1f21e0bc6ae\n"
    },
    {
      "commit": "f43b02c408d0b6afb958c9d426480dd1b615820b",
      "tree": "fd8325677363455a0850e53adb2254e8556a6f4f",
      "parents": [
        "dab0fc8229ba6cd5d3c5bbfdcf5d539cdee22122"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Dec 20 15:45:56 2018 -0800"
      },
      "committer": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Fri Dec 21 22:16:34 2018 +0000"
      },
      "message": "Fix/suppress google-explicit-constructor warnings\n\n* Add explicit to conversion constructors/operators\n\nBug: 28341362\nTest: make with WITH_TIDY\u003d1 DEFAULT_GLOBAL_TIDY_CHECKS\u003d-*,google-explicit-constructor\nChange-Id: Iac8f3aa14cd04861f6bcbab56b0dfc28c9a89e53\n"
    },
    {
      "commit": "f45dc30908afaabac7765d42799a38ea8d1ece9a",
      "tree": "c50b6ec4811ba0dbbfb7a614f280fd457c9bacc0",
      "parents": [
        "2e4f99b270e7715fde8d3755e5553c244619c5d9",
        "d3f9e2efdd64552961dc21b8c899c9d797fa1ff9"
      ],
      "author": {
        "name": "Luke Huang",
        "email": "huangluke@google.com",
        "time": "Wed Dec 19 01:44:08 2018 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Dec 19 01:44:08 2018 -0800"
      },
      "message": "Merge \"Following commit for asynchronous DNS query API\" am: 03fbb681c8 am: bc96369bc2\nam: d3f9e2efdd\n\nChange-Id: I4fce0cbdebc301cd06253e23716107dcd3c869f9\n"
    },
    {
      "commit": "7b7c8f6d867e4ee0e6025899da6c50c531b5e7a5",
      "tree": "9129302fb4ae84d83b74d0d5ec4e019e8700ddd4",
      "parents": [
        "d85333ddca0f8046d1c7553ac611f579a2a0c6fa"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Wed Dec 12 16:09:20 2018 -0800"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Tue Dec 18 09:11:53 2018 -0800"
      },
      "message": "Add vector of TouchVideoFrame to NotifyMotionArgs\n\nNotifyMotionArgs is passed to InputListener. We add a vector of\nTouchVideoFrame here to NotifyMotionArgs  in order to provide heatmap\ninformation about touch. This heatmap information can later be used to\ndo further processing of touch. For example, it could be used to\ndetermine whether a given touch stream represents a user intentionally\npressing harder on the screen.\n\nIntroduce a new class, TouchVideoFrame, that will represent a single\nscan of the touch heatmap for a given touch event.\n\nTest: integration tested by adding a debug log to the case where the\nfinger area is large. That means, the video frames are being passed\nlocally to the InputClassfier HAL. Although HAL is not being submitted\ntogether with this change, the current change will make the subsequent\nCLs simpler to review.\nBug: 111480215\n\nChange-Id: I4f16c8b2bd726c6bd4bbd5d2b18d2536a2347bda\n"
    },
    {
      "commit": "74a056513dfb1e5132842f60bf88bbc74d3d2b5e",
      "tree": "b4bb75cd34097368daa0dd6f93cd301b1e4937fa",
      "parents": [
        "0dd82d8da5aa41dd41744fd35a1b94352796fb38"
      ],
      "author": {
        "name": "Luke Huang",
        "email": "huangluke@google.com",
        "time": "Mon Dec 17 15:59:50 2018 +0800"
      },
      "committer": {
        "name": "Luke Huang",
        "email": "huangluke@google.com",
        "time": "Mon Dec 17 16:41:19 2018 +0800"
      },
      "message": "Following commit for asynchronous DNS query API\n\nTest: built, flashed, booted\\\n      atest CtsNativeNetDnsTestCases\n\nChange-Id: Id6df8730275e227b0321a6bc5d44707aaa273b5c\n"
    },
    {
      "commit": "d7cec95b39982ca3e6a66555901821a88a2dfc91",
      "tree": "254a7f9f627304be49340eefb21fe631c428deb1",
      "parents": [
        "b47a4895a59be7677489ede12f8a691827e8b77b",
        "0f03ec9cf7430d0b897f75f285c2886d14f3fb41"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Wed Dec 12 21:20:34 2018 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Dec 12 21:20:34 2018 -0800"
      },
      "message": "Merge \"Add asynchronous DNS query API\" am: e1f69908a4 am: cbe25adc62\nam: 0f03ec9cf7\n\nChange-Id: Ice24ca243be3e21acb031c2d26f0464a4e628879\n"
    },
    {
      "commit": "66393b950f95cb81535ed4753240182312bd4bba",
      "tree": "f1b451fd15296efa37808c8197c62dbe04e82305",
      "parents": [
        "23a6c521e6fb6c906e6fe2b91cd8b8996745d630"
      ],
      "author": {
        "name": "Luke Huang",
        "email": "huangluke@google.com",
        "time": "Tue Nov 20 11:38:05 2018 +0800"
      },
      "committer": {
        "name": "Luke Huang",
        "email": "huangluke@google.com",
        "time": "Wed Dec 12 04:17:55 2018 +0800"
      },
      "message": "Add asynchronous DNS query API\n\nAdds support for asynchronous \"raw\" DNS API for clients.\nAPI allows apps to use multinetworking capability correctly\nand also allows other query types than A/AAAA.\n\nTest: built, flashed, booted\n      atest CtsNativeNetDnsTestCases\n\nChange-Id: I43dea2f66523b228975d6e08cba5f9c8ef59d9e5\n"
    },
    {
      "commit": "3053e1658fa535865053110089c19ec725a18571",
      "tree": "6a3ebeff5472a45a9df3ff755c0b06b87aff5949",
      "parents": [
        "115b5ec67a5ccd0a3cd5c8fca380495d6fc207da",
        "73e5bf2d1a23c4aaa2ea43ca75fa9268c2ef6e52"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Dec 06 21:43:17 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 06 21:43:17 2018 +0000"
      },
      "message": "Merge \"Add NDK async begin/end \u0026 counter\""
    },
    {
      "commit": "73e5bf2d1a23c4aaa2ea43ca75fa9268c2ef6e52",
      "tree": "5e605810fa3167a266b8308ae27640868cede4fd",
      "parents": [
        "5118e8d029e5e03e8fda19334ba50a356dc0ca72"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Dec 05 18:18:53 2018 -0800"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Dec 06 10:59:47 2018 -0800"
      },
      "message": "Add NDK async begin/end \u0026 counter\n\nBug: 111503982\nTest: atest CtsAtraceHostTestCases\nChange-Id: I030e0bb087dbec7e5f226c3647aa6235cff32725\n"
    },
    {
      "commit": "e730f5aaa1c726ee9998a080e2d7f6284f4afec8",
      "tree": "559c7965ff9cf84d6e38d2f24a6428bf9ab9c835",
      "parents": [
        "11ed3dccbd7c60f8a3c04f36a5e86b77e2e6b7e8"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Fri Nov 16 22:18:53 2018 -0800"
      },
      "committer": {
        "name": "akirilov",
        "email": "akirilov@google.com",
        "time": "Tue Dec 04 18:19:49 2018 -0800"
      },
      "message": "Sanitize InputMessage before sending\n\nThe struct InputMessage has many fields, and is force-aligned to 8-byte\nboundaries. There are also some padding fields that carry no\ninformation.\n\nThis struct is typically allocated in the stack and populated with\nvarious values before being sent across as a stream of bytes through the\nsocket.\n\nTherefore, the \"unused\" data portions of the struct could contain\nportions of the stack, since there aren\u0027t ever writes to those memory\nlocations.\n\nTo avoid this information leak, forcefully sanitize the struct. Create a\nnew struct that is explicitly set to zero. Next, only fill the\nmeaningful fields manually.\n\nBug: 115739809\nTest: cts-tradefed run cts -m CtsSecurityBulletinHostTestCases -t android.security.cts.Poc18_12; adb shell monkey 100000\nChange-Id: I7e44dacf1e8fa3156c8e4d2f7784ef0c53dab507\nMerged-In: I7e44dacf1e8fa3156c8e4d2f7784ef0c53dab507\n"
    },
    {
      "commit": "bd0fbcd1f37f4e7e2e505cf5e5ede0fe52a3767c",
      "tree": "f061254868e6dd39cc1c2086461ece082fa385c5",
      "parents": [
        "023162b7e6872c42552de35380d348ab3e785fac"
      ],
      "author": {
        "name": "Garfield Tan",
        "email": "xutan@google.com",
        "time": "Fri Nov 30 12:45:03 2018 -0800"
      },
      "committer": {
        "name": "Garfield Tan",
        "email": "xutan@google.com",
        "time": "Tue Dec 04 21:15:40 2018 +0000"
      },
      "message": "Keep instance of BinderInputWindow for the same token.\n\nSome code in InputDispatcher uses pointer value comparison to track if a\nBinderInputWindow is the same. Therefore just keep the initial instance\nand reuse that for every update.\n\nThis is better than changing all pointer comparisons to token\ncomparisons because it would be hard to make sure every comparison is\nchanged.\n\nLater we could simply drop InputWindowHandle and use InputWindowInfo\nvalue instead. It would also be better if it could implement move\nconstructor so that we can use move semantics.\n\nBug: 120289807\nBug: 120463595\nBug: 120481017\nTest: Verified that input focus stops constantly changing by inpecting\nlogcat after enabling DEBUG_FOCUS in InputDispatcher.cpp. Freeform\ndrag-resize works with a workaround to another race condition.\n\nChange-Id: I34bbf8c076373ef23494f858536c5188eff95abd\n"
    },
    {
      "commit": "daedc2a6f910fdf17984807f087a496a99ea2afc",
      "tree": "a61af54533fe93d4ee51c82bc2b0a653fc0f9d18",
      "parents": [
        "35deca262b0db615350eef773245d2283428b4b2",
        "1ade5e42f765a6d1236f4862c655506df5b854b1"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Dec 03 23:36:51 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Dec 03 23:36:51 2018 +0000"
      },
      "message": "Merge \"Add thumbs up / thumbs down / profile keycodes to native includes\""
    },
    {
      "commit": "8158e7e33a95732b9963909b9fb471678ff8b7d4",
      "tree": "92652d3d26f362cad92fa9a31160d500c0ecc89e",
      "parents": [
        "5363caaf84127c4661ab7489f94662fd0f038778"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Mon Oct 15 14:28:20 2018 -0700"
      },
      "committer": {
        "name": "Arthur Hung",
        "email": "arthurhung@google.com",
        "time": "Thu Nov 29 15:34:22 2018 +0800"
      },
      "message": "Add physical port to display viewport\n\nDisplayViewport now also stores the physical port information of the\nassociated display.\nThe physical port of the display can be used to match an input device to\nthe corresponding viewport, therefore ensuring that a specific input\ndevice generates events that go to a particular display.\n\nThe associations are provided to InputReaderConfiguration by the JNI\ncallback.\n\nChange getViewport strategy once more. Now, uniqueId match by itself is\nsufficient (viewport type does not need to match if the viewport with\nthe matching uniqueId is found).\nAdded a check for assumptions about the number of viewports that can\nhave the same type. These should be relaxed once (and if) support for\nmultiple internal viewports is added.\n\nBug: 116239493\nTest: atest -a libinput_tests inputflinger_tests\nChange-Id: I1c84f281e8c255f12aea0d15939c70685fe94c41\n"
    },
    {
      "commit": "f2acf820e84849f4d199fcdcc010c7e43fe796ab",
      "tree": "586eb7b1fd27c81f455f0256e3c2180258674c45",
      "parents": [
        "ae7bd0a6f1e0d533d1fb99bf8c91f87071c2120e",
        "e07e103103d575789ad0a9d5a5212a000ad1f277"
      ],
      "author": {
        "name": "Rob Carr",
        "email": "racarr@google.com",
        "time": "Wed Nov 28 20:34:49 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 28 20:34:49 2018 +0000"
      },
      "message": "Merge changes from topic \"sfinput4\"\n\n* changes:\n  SurfaceFlinger Input: Correct screen magnification.\n  Remove inputflinger.rc as init file\n  SurfaceFlinger Input: Shrink frame by surfaceInsets.\n  InputDispatcher: Notify policy of focus changes.\n  Rework InputApplicationInfo\n  Replace InputWindowInfo#inputChannel with an IBinder token.\n  Add some tests for native input.\n  Forward input windows from SurfaceFlinger to InputDispatcher.\n"
    },
    {
      "commit": "1ade5e42f765a6d1236f4862c655506df5b854b1",
      "tree": "0a831e0682d4e57c578266d84a3ef1343b0b4a09",
      "parents": [
        "910c0aa1384ee3122a4d3929ca3b94943a3dc539"
      ],
      "author": {
        "name": "Oleg Kibirev",
        "email": "olegk@google.com",
        "time": "Tue Nov 27 16:42:20 2018 -0800"
      },
      "committer": {
        "name": "Oleg Kibirev",
        "email": "olegk@google.com",
        "time": "Tue Nov 27 17:08:36 2018 -0800"
      },
      "message": "Add thumbs up / thumbs down / profile keycodes to native includes\n\nThis was missed in cl/5460930, as changes to generate these key\ncodes are only present in pi-tv-dev branch (there is no hardware\nwith these keys in master yet).\n\nBug: 119202163\nTest: Not needed\nChange-Id: I0a3122e9af288a3683ab2f9300b2eca7507337fc\n"
    },
    {
      "commit": "e07e103103d575789ad0a9d5a5212a000ad1f277",
      "tree": "f3be0c0f8f184db0696b4aacdb1bcb3ed6b86e0b",
      "parents": [
        "e52502e2697bc12992c46baef6f15420b5912797"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Mon Nov 26 12:55:53 2018 -0800"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Tue Nov 27 14:42:06 2018 -0800"
      },
      "message": "SurfaceFlinger Input: Correct screen magnification.\n\nWe need to pass the computed scaling factors through SurfaceFlinger\nas well as appropriately scaling the touchable region. We also need\nto be careful as to which axes we scale. In the past screen magnification\nhas not lead to scaling of the TOUCH_MAJOR/MINOR axes, whereas whole-screen\ndisplay compatibility scaling has. We preserve this behavior by differentiating\nbetween the global scale and a scale on any particular window. The window scale\nworks like the global scale used to and the global scale is only used for additional\nscaling of the MAJOR/MINOR axes.\n\nBug: 80101428\nBug: 113136004\nBug: 111440400\nChange-Id: I97d809826f86b452f28443cb1046e8bfef1bbf9d\n"
    },
    {
      "commit": "5cb25783960d19e2b529b134287dd33e2099d466",
      "tree": "4e767f7bef6732071a3d2617776dce58a1ba4473",
      "parents": [
        "f759f1639c717468522a6aa4f975ff3b0c5f22c7"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Wed Nov 14 14:01:42 2018 -0800"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Tue Nov 27 12:39:33 2018 -0800"
      },
      "message": "SurfaceFlinger Input: Shrink frame by surfaceInsets.\n\nProbably best explained by the comment in InputWindow.h. We can\u0027t\nuse touchable region because we need to shift the coordinate space.\nAs a follow-up I\u0027m going to look in to shifting the coordinate space\non the client but it was very non obvious where to do so.\n\nTest: Manual\nBug: 80101428\nBug: 113136004\nBug: 111440400\nChange-Id: Ibbaffa89a80f3a047c716265251f547631bdf802\n"
    },
    {
      "commit": "740167f1a2b5a141debb0efc952eb4e57152bdd4",
      "tree": "f3d66560710ce79a3aec809c0d6d570bb6252624",
      "parents": [
        "5c8a026133d5bbcb6f416952937a7a810bccc8b1"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Thu Oct 11 19:03:41 2018 -0700"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Tue Nov 27 12:39:33 2018 -0800"
      },
      "message": "Rework InputApplicationInfo\n\nFirst we move it inside of InputWindowInfo instead of InputWindowHandle\nso it is part of the data sent across binder. Second we give it a persistent\nidentity of an IBinder token and use this for comparisons.\n\nBug: 80101428\nBug: 113136004\nBug: 111440400\nTest: EndToEndNativeInputTest. Existing tests pass.\nChange-Id: Id89a40e66887d834020f8e645fd1fb48adb7ee2e\n"
    },
    {
      "commit": "5c8a026133d5bbcb6f416952937a7a810bccc8b1",
      "tree": "e1541cab029b32e38506ab24107ce80621edb4df",
      "parents": [
        "1c4c5599696d049b112c40d629f8c74bb612b01f"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Wed Oct 03 16:30:44 2018 -0700"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Tue Nov 27 12:39:33 2018 -0800"
      },
      "message": "Replace InputWindowInfo#inputChannel with an IBinder token.\n\nThe IBinder token is now being used as the UUID for InputWindows.\nWe can pass it around without the channel to avoid unnecessary FD\nparcelling, duping, and other juggling.\n\nTest: Existing tests pass.\nBug: 80101428\nBug: 113136004\nBug: 111440400\nChange-Id: I8eba3fa05f249b7dfcb5c3d9817241cbfe9ab76c\n"
    },
    {
      "commit": "1c4c5599696d049b112c40d629f8c74bb612b01f",
      "tree": "d0da6e66f155d1d5e3573e5f4c99d2781d97eb88",
      "parents": [
        "720e506fcab38d2f73b84630744ad100c5b6609d"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Mon Sep 24 13:18:43 2018 -0700"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Tue Nov 27 12:39:33 2018 -0800"
      },
      "message": "Add some tests for native input.\n\nTest some important scenarios for input being driven by\nSurfaceControl rather than the WindowManager.\n\nTest: EndToEndNativeInputTest\nBug: 80101428\nBug: 113136004\nBug: 111440400\nChange-Id: I46b302774a19c43d12680a8b7e2bb553dfcf4175\n"
    },
    {
      "commit": "e9e637d6bec2c84c49bd284593ca48751b7bd6c0",
      "tree": "2fb9b5bf737f1da8bdf72750c3f956bb95083d90",
      "parents": [
        "910c0aa1384ee3122a4d3929ca3b94943a3dc539"
      ],
      "author": {
        "name": "Seigo Nonaka",
        "email": "nona@google.com",
        "time": "Mon Nov 26 22:12:23 2018 -0800"
      },
      "committer": {
        "name": "Seigo Nonaka",
        "email": "nona@google.com",
        "time": "Mon Nov 26 22:12:23 2018 -0800"
      },
      "message": "Fix/Add NDK API doc for system_fonts.h\n\nBug: N/A\nTest: m ndk-docs (with allowing doxygen by soong)\nChange-Id: I61845bc63424e411f4d9cde0e4da1498f78b1e72\n"
    },
    {
      "commit": "1f7c0e47948127734714cc887356fce13d3c7538",
      "tree": "c5b4331ff9a3a8c5cfb8a1a78035cc0ebdc29572",
      "parents": [
        "0f2f5c9327636d7bf7d8e342f7b561744ae604b1"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Fri Nov 16 22:18:53 2018 -0800"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Wed Nov 21 10:52:39 2018 -0800"
      },
      "message": "Sanitize InputMessage before sending\n\nThe struct InputMessage has many fields, and is force-aligned to 8-byte\nboundaries. There are also some padding fields that carry no\ninformation.\n\nThis struct is typically allocated in the stack and populated with\nvarious values before being sent across as a stream of bytes through the\nsocket.\n\nTherefore, the \"unused\" data portions of the struct could contain\nportions of the stack, since there aren\u0027t ever writes to those memory\nlocations.\n\nTo avoid this information leak, forcefully sanitize the struct. Create a\nnew struct that is explicitly set to zero. Next, only fill the\nmeaningful fields manually.\n\nBug: 115739809\nTest: atest Poc18_12, adb shell monkey 100000\nChange-Id: I7e44dacf1e8fa3156c8e4d2f7784ef0c53dab507\n"
    },
    {
      "commit": "141a98657a7776be680d9237fae87a15536a6426",
      "tree": "8a4f4e01e4aaa661cacd7ea431e152cdd1d4cc8c",
      "parents": [
        "dc2e1d7c65755284e800945664c29e3e539fffb8"
      ],
      "author": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Mon Nov 19 14:35:56 2018 -0800"
      },
      "committer": {
        "name": "Prabir Pradhan",
        "email": "prabirmsp@google.com",
        "time": "Mon Nov 19 14:35:56 2018 -0800"
      },
      "message": "Add flag AMOTION_EVENT_FLAG_IS_GENERATED_GESTURE to Input.h\n\nSince there is no support for touchpad gestures yet, the gestures are\nsent as MotionEvents with the flag:\nAMOTION_EVENT_FLAG_IS_GENERATED_GESTURE\n\nThis flag is already present in java as:\nMotionEvent.FLAG_IS_GENERATED_GESTURE\n\nThis change adds the flag to Input.h.\n\nBug: 119265089\nTest: none\nChange-Id: Ide0cc41d3f44a8694fa02faa0337eb2cf72de6f2\n"
    },
    {
      "commit": "1cc78672c860d8af8dbb818bd44342697054866d",
      "tree": "563118560f6ddd5d1b740fc579ebda0390ea637d",
      "parents": [
        "4e670e5debca6feb1fb2ebc1f5401570422bd230"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Tue Jul 31 14:25:57 2018 -0700"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Wed Nov 14 18:16:20 2018 -0800"
      },
      "message": "InputFlinger: Receive setInputWindows over IPC\n\nPlumbing to expose the InputManager object as an InputFlinger\nservice with a single setInputWindows method.\n\nBug: 80101428\nBug: 113136004\nBug: 111440400\nChange-Id: I6e63a7e251711993334d930d2b95352e6cba031e\n"
    },
    {
      "commit": "803535b9e0285cb80f40979cc465ed31d9365a9c",
      "tree": "0f758048e09e5db3f6f4697758054d9c5088075b",
      "parents": [
        "2c358bf8206d591a4707d33fd2ca45f0dc5360f7"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Thu Aug 02 16:38:15 2018 -0700"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Wed Nov 14 17:47:09 2018 -0800"
      },
      "message": "InputDispatcher: Track InputChannels by IBinder token.\n\nIn the context of passing input through SurfaceFlinger we need\nto change the way InputWindowHandles are passed back to the WindowManager.\nIn the past the InputDispatcher and the WindowManager have been in the same process.\nThis is taken advantange of by having the InputDispatcher pass back the same object\nto the WindowManager (say in interceptKeyBeforeQueueing) which was passed in from\nthe WindowManager originally (in setInputWindows) this means if the WindowManager\nneeds to assosciate a WindowState with a given InputWindowHandle it could just\npiggy back some information on a subclass of the object and cast it when receiving back\nfrom the Input subsystem. Since the objects will be parcelled across IPC boundaries now\nand the WM will not be the caller of setInputWindows, this mechanism won\u0027t work. Instead we\nask the WindowManager to provide an IBinder token at registration time, which we can parcel\nthrough the process as a UUID. We provide this token back to Policy callbacks to enable\nthe WindowManager to look up it\u0027s local state.\n\nBug: 80101428\nBug: 113136004\nBug: 111440400\nTest: Manual\nChange-Id: Ia828eb61082240f38d82f89e04956da108f636de\n"
    },
    {
      "commit": "2c358bf8206d591a4707d33fd2ca45f0dc5360f7",
      "tree": "302e722c58b4f30db625dfe0fd1e2f2f04ab2661",
      "parents": [
        "7b0e9118785103c763042e56642e1234935e1e58"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Wed Aug 08 15:58:15 2018 -0700"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Wed Nov 14 17:47:09 2018 -0800"
      },
      "message": "Add setInputWindowInfo to SurfaceComposerClient::Transaction\n\nIn preparation for passing input through SurfaceFlinger to the InputDispatcher.\n\nBug: 80101428\nBug: 113136004\nBug: 111440400\nChange-Id: I5f67fbb9894136bfb16c718ffe1cc23a02f3414d\n"
    },
    {
      "commit": "3b413f202de8a0bde465cd92d0265eb98f5a479f",
      "tree": "41804a3394a254357a43cf9897b5c4b038b29775",
      "parents": [
        "5011b5957049b5ba19fff997add156d32a12007c"
      ],
      "author": {
        "name": "Arthur Hung",
        "email": "arthurhung@google.com",
        "time": "Fri Oct 26 18:05:34 2018 +0800"
      },
      "committer": {
        "name": "Arthur Hung",
        "email": "arthurhung@google.com",
        "time": "Tue Nov 06 12:20:12 2018 +0800"
      },
      "message": "Make InputWindowInfo as a part of InputWindowHandle (1/2)\n\nAll over InputDispatcher, we are accessing InputWindowInfo\nfrom InputWindowHandle through the api getInfo().\nIt\u0027s dangerous without checking the result is null.\n\n- To replace allocated mInfo in updateInfo(), make it as an object\n  member variable of InputWindowHandle.\n- Change releaseInfo to releaseChannel to release input channel immediately.\n- Add displayId information for logs so we can find out the problems\n  should belong to which display.\n\nBug: 112616659\nTest: atest inputflinger_tests\nTest: Manually enable debug logs\nChange-Id: I5770f296e3feab4919fe775bab20ef6346f05295\n"
    },
    {
      "commit": "77e562b0f8809efb9e32146fa830cf525a5559de",
      "tree": "60a8c85f38ab6949cfbef592a330efd7ca682376",
      "parents": [
        "5e7ae376868f09dad70f8c3dfb87404d6d5d46cd"
      ],
      "author": {
        "name": "Seigo Nonaka",
        "email": "nona@google.com",
        "time": "Tue Oct 30 12:26:07 2018 -0700"
      },
      "committer": {
        "name": "Seigo Nonaka",
        "email": "nona@google.com",
        "time": "Tue Oct 30 14:30:25 2018 -0700"
      },
      "message": "Add matchFamilyStyleCharacter API\n\nThe motivation of this API is providing the same font selection from\nfont collection in the system to the developers.\n\nBug: 114479228\nTest: atest CtsGraphicsTestCases:android.graphics.fonts\nChange-Id: Iba74e022499811c67d3a29bfae3962cce3c4ea81\n"
    },
    {
      "commit": "9e527e03e55093a8babfa4a573b60d61043f0759",
      "tree": "77e32aec128a1ba834dcc24ad67a9c008f608aef",
      "parents": [
        "f3271ba789825c84c7a13f07ffad7417568ea44c",
        "fdd8616398fae83fe62c6d271515d39e4fe59c64"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 16 18:33:59 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 16 18:33:59 2018 -0700"
      },
      "message": "Merge \"ashmem: update example code of create shmem region\" am: 080dadba41 am: baa9fd65e5\nam: fdd8616398\n\nChange-Id: Ia09af5a450688c5562bc0f95163ff3d6aff83ec7\n"
    },
    {
      "commit": "e0df58f589bfd80da7284ddd6ce2a6cd852d663e",
      "tree": "2a857d9178148eb1cf909b84dd61608169f90df1",
      "parents": [
        "20403620348805fac031ba7b0a6b32aa06a4a856"
      ],
      "author": {
        "name": "Phong Tran",
        "email": "tranmanphong@gmail.com",
        "time": "Sun Oct 14 09:39:10 2018 +0700"
      },
      "committer": {
        "name": "Phong Tran",
        "email": "tranmanphong@gmail.com",
        "time": "Sun Oct 14 09:41:44 2018 +0700"
      },
      "message": "ashmem: update example code of create shmem region\n\nthere is a lacking one parameter of mmap() in the example code.\n\nSigned-off-by: Phong Tran \u003ctranmanphong@gmail.com\u003e\n"
    },
    {
      "commit": "b3ee06887f6458d307012f7a67460f19d4c334c6",
      "tree": "2ccfa76fd5d07b40f5e617959162bee4122b3beb",
      "parents": [
        "568d04d24d10476ec2496d8da674e38634d24510",
        "3720ed06a4be83f6cec4ad7233ed6b6773fb7403"
      ],
      "author": {
        "name": "Rob Carr",
        "email": "racarr@google.com",
        "time": "Thu Oct 04 00:00:25 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Oct 04 00:00:25 2018 +0000"
      },
      "message": "Merge \"Implement Parcelling functions for InputWindowInfo\""
    },
    {
      "commit": "3720ed06a4be83f6cec4ad7233ed6b6773fb7403",
      "tree": "e846ab76e17a018fd7199094f1fd0ed5d67ea0a8",
      "parents": [
        "3fe5ead7632d6f9cb8ba7e06758faf836f4bea39"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Wed Aug 08 16:08:27 2018 -0700"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Tue Oct 02 12:24:18 2018 -0700"
      },
      "message": "Implement Parcelling functions for InputWindowInfo\n\nIn preparation for parcelling across the SurfaceControl interface.\nAs a dependency we move the parcelling of InputChannels from\nframeworks/base JNI code in to InputChannel.h.\n\nBug: 80101428\nBug: 113136004\nBug: 111440400\nTest: None\nChange-Id: Ib27f03282e9872274b834bb00737fd351e7a1b30\n"
    }
  ],
  "next": "d634392abcc0522bd9b470aa2ff57397206bb336"
}
